delphi如何取文件的大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi如何取文件的大小相关的知识,希望对你有一定的参考价值。

如题,,希望给出源码!

参考技术A 大概有这些方法可以获得文件大小
FileSizeByName(需要引用IdGlobal单元)
GetFileSize
FileSize(不能获得正在使用的文件大小)
FileSeek
TFileStream.Size

下面是使用例子
1。FileSizeByName(需要引用IdGlobal单元)
begin
if OpenDialog1.Execute then
begin
ShowMessage(IntToStr(FileSizeByName(OpenDialog1.Filename)));
end;

2。GetFileSize
var
FileHandle:integer;
begin
if OpenDialog1.Execute then
begin
FileHandle := FileOpen(OpenDialog1.FileName, 0);
ShowMessage(IntToStr(GetFileSize(FileHandle, nil)));
FileClose(FileHandle);
end;

3。FileSize(不能获得正在使用的文件大小)
var f: file;
begin
if OpenDialog1.Execute then
begin
AssignFile(f, OpenDialog1.FileName);
Reset(f, 1);
ShowMessage(IntToStr(FileSize(f)));
CloseFile(f);
end;

4。FileSeek
var
FileHandle:integer;
begin
if OpenDialog1.Execute then
begin
FileHandle := FileOpen(OpenDialog1.FileName, 0);
ShowMessage(IntToStr(FileSeek(FileHandle,0,2)));
FileClose(FileHandle);
end;

5。TFileStream.Size
var
FS: TFileStream;
begin
if OpenDialog1.Execute then
begin
FS := TFileStream.Create(OpenDialog1.FileName, fmShareDenyNone);
ShowMessage(IntToStr(FS.Size));
FS.Free;
end;

另在IdGlobalProtocols中有个FileSizeByName()的函数。
参考技术B function FileSizeEx(const FileName: string): Int64;
var
Info: TWin32FindData;
Hnd: THandle;
begin
Result := -1;
Hnd := FindFirstFile(PChar(FileName), Info);
if (Hnd <> INVALID_HANDLE_VALUE) then
begin
Windows.FindClose(Hnd);
Int64Rec(Result).Lo := Info.nFileSizeLow;
Int64Rec(Result).Hi := Info.nFileSizeHigh;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=IntToStr(FileSizeEx('c:\1.txt'));
end;本回答被提问者采纳

Delphi取所有窗口句柄

有什么办法用Delphi取所有窗口的句柄啊?最好加上详细备注

定义一个全局变量
var
handlelist: tstringlist;

procedure TForm1.Button1Click(Sender: TObject);

function GetProcessExePath(h: HWND): BOOL; stdcall;
function getfilename(str: string): string;
begin
result := UpperCase(ExtractFileName(str));
end;
var
pid: Cardinal;
pHandle: THandle;
buf: array[0..MAX_PATH] of Char;
str: string;
begin
GetWindowThreadProcessId(h, @pid);
pHandle := OpenProcess(PROCESS_ALL_ACCESS, False, pid);
GetModuleFileNameEx(pHandle, 0, buf, Length(buf));
CloseHandle(pHandle);
str := StrPas(buf);
handlelist.Add(IntTostr(h)+str);//句柄加文件路径
Result := True;
end;
var
i: integer;
begin
if form1.OpenDialog1.Execute then
begin
Edit1.Text := OpenDialog1.FileName;
EnumWindows(@getprocessexepath, 0);
for i := 0 to handlelist.count - 1 do
listbox1.items.add(handlelist.string[i]);
end;
end;
参考技术A enumwindows
这个api函数了

你看一下msdn吧。上面有一个C++的例子

以上是关于delphi如何取文件的大小的主要内容,如果未能解决你的问题,请参考以下文章

delphi xe 取CPU等硬件信息

如何分析使用 Delphi 构建的 exe 的文件大小?

请问delphi 7 如何读取JPG图片的像素颜色值?

delphi 请问如何将bpl文件编译到exe文件中!!(紧急求救!!)

Delphi对于文件的读写操作

Delphi - URL 的文件大小 - 错误 12150