读书人

InternetReadFile获取的数据用指针存储

发布时间: 2012-03-21 13:33:15 作者: rapoo

InternetReadFile获取的数据用指针存储
我想请问用InternetReadFile循环获取URL上文件的内容.
用一个指针类型存储,由于我并不知道URL上面的文件多大,无法分配完整大小的内存.
只能通过循环获取的方式,假设每次获取1024字节,那么获取后的数据如何附加在原来指针的尾端?

Delphi(Pascal) code
var  hSession, hRequest: HINTERNET;  dwBytesRead: DWORD;  szBuffer: Array[0..1024] of Char;  lpData: Pointer;  szFileURL: string;  dwFileSize: DWORD;begin    szFileURL := 'http://127.0.0.1/1.txt';    dwFileSize := 0;    hSession := InternetOpen('', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);    try      if Assigned(hSession) then      begin        hRequest := InternetOpenUrlA(hSession, PAnsiChar(szFileURL), nil, 0, INTERNET_FLAG_RELOAD, 0);        FillChar(szBuffer, SizeOf(szBuffer), #0);        if Assigned(hRequest) then        begin          try            while True do            begin              dwBytesRead := 1024;              if InternetReadFile(hRequest, @szBuffer, 1024, dwBytesRead) then              begin                if dwBytesRead = 0 then Break;                dwFileSize := dwFileSize + dwBytesRead;                //这里应该如何附加指针的数据?              end              else Break;            end;          finally            InternetCloseHandle(hRequest);          end;        end;      end;    finally      InternetCloseHandle(hSession);    end;end;


[解决办法]
探讨
文件内容并非文本 里面有#0 所以用StrCopy等函数是无效的~ 因为遇#0会被截断...

[解决办法]
CopyMemory,Move都可以

读书人网 >.NET

热点推荐