procedure TForm1.Button2Click(Sender: TObject);
var
 fh:integer;
 fs:longint;
begin
 fh:=fileopen('e:\diskcopy.com',fmopenread);
 fs:=fileseek(fh,0,2);
 fileclose(fh);
 form1.Canvas.TextOut(20,20,inttostr(fs));
end;

解决方案 »

  1.   

    呵呵,你的fid要定义为file of byte类型的,下面是我改进你的代码(测试通过):
    procedure TForm1.Button1Click(Sender: TObject);
    var
      fid:file of byte;
    begin
      assignfile(fid, 'd:\user.txt');
      reset(fid);
      showmessage(vartostr(filesize(fid))+'Bytes');
    end;
      

  2.   

    用Tfilestream
    var file1:Tfilestream;
    begin
      File1:=Tfilestream.Create('c:\savelog.txt',fmOpenRead);
      showmessage(inttostr(file1.Size));
    end;
    肯定Ok
      

  3.   

    使用 findfirst函数 指出文件
    其中的 TSearchRec有个size 属性 即可判断文件大小
       
      

  4.   

    function FileSize(const FileName: string): string;
    var
      hFile: THandle;
      iSize: integer;
    begin
      hFile:= FileOpen(FileName, fmOpenRead);
      try
        iSize:= GetFileSize(hFile,nil);
        if iSize < 1024 then
          result := IntToStr(iSize)+ '字节'
        else
          result := IntToStr(iSize div 1024) + 'K';
      finally
        FileClose(hFile);
      end;
    end;