假设在我的电脑里有一张图片,我要知道它有多大?不用对话框如何实现?procedure TForm1.Button1Click(Sender: TObject);
 var
 f:file of integer;
 s:integer;
begin
assignfile(f,'我的照片.jpg');
reset(f);
s:=filesize(f);
showmessage(inttostr(s));我试了半天未能成功?难道非要用对话框来查找文件,才能得到文件的大小吗?

解决方案 »

  1.   

    大小已经在S里了,直接可以拿来用啊,你想怎么样就怎么样啊
    不用showmessage可以用另外方式啊
      

  2.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
     f:file of Byte;
    begin
    assignfile(f,'c:\2.jpg');
    reset(f);
    ShowMessage('File size now = '+IntToStr(FileSize(f)));
    end;
      

  3.   

    var
        iFileHandle: Integer;
        iFileLength: Integer;
    begin
        if OpenDialog1.Execute then
        begin
            iFileHandle := FileOpen(OpenDialog1.FileName, fmOpenRead);
            iFileLength := FileSeek(iFileHandle, 0, 2);
        end;
    end;
      

  4.   

    樓主的也能得出結果吧。只是得出的大小的單位可能是‘32bit’,而不是Byte(8bit)
      

  5.   

    假设这个文件是网络链接,那怎么得到它的大小呢?
    如:
    var
     f:file of integer;
     s:integer;
    begin
    assignfile(f,'http://bbs.togame.net/attachment/Mon_0803/5_92040_ec8ef579ded1719.gif');
    reset(f);
    s:=filesize(f);
    showmessage(inttostr(s));
    end;
      

  6.   

    var
      theFile: TFileStream;
    begin
      if FileExists('我的照片.jpg') then
      begin
        theFile:= TFileStream.Create('我的照片.jpg',fmOpenRead);
        showmessage(FloattoStr(Trunc(SelectedFile.Size / 1024 * 100) / 100) +' KB');
        theFile.free;
      end;
    end;
      

  7.   

    to 8procedure TForm1.Button6Click(Sender: TObject);
    var
    h:TIdhttp;
    f:file of byte;
    MyStream:TMemoryStream;
    begin
    MyStream:=TMemoryStream.Create;
    h:=Tidhttp.Create(nil);
    try
    h.get('http://bbs.togame.net/attachment/Mon_0803/5_92040_ec8ef579ded1719.gif',MyStream);
    except
    showmessage('网络出错!');
    MyStream.Free;
    exit;
    end;
    MyStream.SaveToFile('c:\1.gif');
    //sleep(100);
    assignfile(f,'c:\1.gif');
    reset(f);
    ShowMessage('gif size now = '+FloatToStr((Trunc(FileSize(f)/1024 * 10))/10)+'kb');
    MyStream.Free;
    end;
      

  8.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
      iFileSize: Integer;
    begin
      IdHTTP1.Head('http://bbs.togame.net/attachment/Mon_0803/5_92040_ec8ef579ded1719.gif');
      iFileSize:= IdHTTP1.Response.ContentLength;
      ShowMessage('gif size now = '+FloatToStr((Trunc(iFileSize/1024 * 10))/10)+'kb');
    end;这个应该是你想要!
      

  9.   

    function TWebWorld.HttpQueryInfo(hRequest: HINTERNET; var dwFileSize: DWORD): LongBool;
    var
        dwBufferSize: DWORD;
        dwIndex: DWORD;    InfoBuffer: array[1..32] of Byte;    Info: string;
        bQuery: LongBool;
    begin
        dwBufferSize := 32;
        dwIndex := 0;    bQuery := WiniNet.HttpQueryInfo(hRequest, HTTP_QUERY_CONTENT_LENGTH, @InfoBuffer, dwBufferSize, dwIndex);    if bQuery then
        begin
            Info := pChar(@InfoBuffer);
            dwFileSize := SysUtils.StrToInt(Info);
        end;    result := bQuery;
    end;
      

  10.   

    var
        hConnect: HINTERNET;
        hRequest: HINTERNET;    dwFileSize: DWORD;
        dwError: DWORD;
        dwPosition: DWORD;
        dwBytesRead: DWORD;    bTerminate: LongBool;
        bSucceed: LongBool;    lpBuffer: Pointer;    f: file;
    begin
        hConnect := InternetConnect;//创建连接
        hRequest := HttpOpenRequest(hConnect);    while not HttpSendRequest(hRequest) do//发送请求
        begin
            dwError := GetLastError();
            if (dwError = ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED) and
                (InternetErrorDlg(hConnect) = ERROR_SUCCESS) then
                Continue;        InternetCloseHandle(hRequest);
            InternetCloseHandle(hConnect);
            exit;
        end;    if not HttpQueryInfo(hRequest, dwFileSize) then exit;//取得服务器文件长度
        try
            AssignFile(f, FFielName);
            Rewrite(f, 1);
            dwPosition := 0; //启始位置        if Assigned(FOnOpenWork) then FOnOpenWork(self, dwFileSize);        bSucceed := false;
            bTerminate := false;        while true do
            begin
                if Assigned(FOnOverWork) then FOnOverWork(self, dwPosition, bTerminate);//OnOverWork事件,用来显示文件下载进度
                if bTerminate then Break;
                if not InternetReadFile(hRequest, dwPosition, dwBytesRead, lpBuffer) then Break;
                if dwBytesRead = 0 then
                begin
                    bSucceed := true;
                    Break;
                end;
                BlockWrite(f, lpBuffer^, dwBytesRead);//写块lpBuffer
            end;
            if Assigned(FOnCloseWork) then FOnCloseWork(self, bSucceed);//OnCloseWork下载工作关闭时间
            CloseFile(f);    finally
            InternetCloseHandle(hRequest);
            InternetCloseHandle(hConnect);
        end;
    end;以上是部分文件下载的部分代码