我在一edit中输入文件名,要求获得此文件的大小。
用了下面的语句
if edit1.text<>'' then
     begin
      AssignFile(f,sFind);
      Reset(f);
     size := FileSize(f);
     L:=IntToStr(size);
      Edit3.Text:=L;
      closefile(f);
    end;其中sFind为edit1.text的内容,Edit3显示文件大小
每次程序运行都报错误“file not found”
但是程序和文件都在同一文件家下。请问各位大人知道问题出在何处没有?同时有没有什么办法可以让超过1M的文件以M为单位显示大小。小于1M的以K显示大小

解决方案 »

  1.   

    var
      f:tfilestream;
      size:real;
      s:string; 
    begin
      f:=tfilestream.create(edit1.text,fmOpenRead)
      size:=f.size;
      if (size>=1024) and (size<1024*1024) then
        s:=floattostr(size/1024)+'KB';
      if (size>=1024*1024) then
        s:=floattostr(size/1024*1024)+'MB'end;
      

  2.   

    你賦什麼值給sfind呀?
    if length(L)>6 then
    edit3.text:=L div 1000000+'MB'
    else
    edit3.text:=L div 1000+'KB';
    我也是菜鳥,不知可行否,你試試吧.
      

  3.   

    方法很多,我这么写!你的代码在打开只读文件时会出问题!var
    f:integer;
    FSize:integer;if Edit1.text<>'' then
    begin
    f:=FileOpen(sFind,fmOpenRead);
    FSize:=FileSeek(f,0,2);
    if FSize<1024 then
      Edit3.Text:=inttostr(FSize)+' 字节'
    else if FSize<1048576 then
      Edit3.Text:=floattostr(Trunc(FSize/102.4)/10)+' KB'
    else
      Edit3.Text:=floattostr(Trunc(FSize/104857.6)/10)+' MB';
    FileClose(f);
    end;ExtractFilePath()可获得文件路径!用全路径打开文件可保证不出问题!
    SetCurrentDir()可设置当前目录!
      

  4.   

    function FileSize(var F): Integer;中的F应该是个已经连接到一个文件的文件变量。而且不能用于text file。
    最好使用TFileStream。
      

  5.   

    用FileStream打开吧!
    var FStream:TFileStream;FStream:=TFileStream.Create(FileName,fmOpenRead);
    PicFileSize:=FStream.Size;
      

  6.   

    var
      FFileHandle:THandle;
      FFileSize:Integer;
    begin
      FFileHandle:=FileOpen('文件名',fmOpenRead);
      if FFileHandle = 0 then
        raise Exception.Create 'Failed to open file ';
      FFileSize:=GetFileSize(FFileHandle,nil);//文件大小
      
    end;
      

  7.   

    用这个吧,哈哈!function TheFileSize(FileName: String):cardinal;
    var
      FHandle: THandle;
    begin
      FHandle := CreateFile(PChar(FileName), 0, FILE_SHARE_READ,  nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_SEQUENTIAL_SCAN, 0);
      Result := GetFileSize(FHandle,nil);
      CloseHandle(FHandle);
    end;