5,931
社区成员
发帖
与我相关
我的任务
分享
procedure TForm1.Button1Click(Sender: TObject);
var
f:file of integer;
s:integer;
begin
assignfile(f,'我的照片.jpg');
reset(f);
s:=filesize(f);
showmessage(inttostr(s));
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;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;
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;
procedure 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;
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;
var
iFileHandle: Integer;
iFileLength: Integer;
begin
if OpenDialog1.Execute then
begin
iFileHandle := FileOpen(OpenDialog1.FileName, fmOpenRead);
iFileLength := FileSeek(iFileHandle, 0, 2);
end;
end;
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;