首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

InternetReadFile获取的数据用指针储存

2013-01-09 
InternetReadFile获取的数据用指针存储本帖最后由 l0v3_y1n9 于 2012-03-11 19:22:54 编辑我想请问用Inter

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


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会被截断...
#0这个问题确实很难搞,我上次在网上找了好久,也没找到具体的方法实现去掉#0,最终只能是防止字符串中出现#0了。
[解决办法]
CopyMemory,Move都可以

热点排行