我此前一直用D7,后来换系统只能装D2010.但是问题来了.之前用得好好的代码 D2010下获取的源码是乱码.下面贴上.很普通很常见的wininet获取源码的代码.求大神解惑.
uses WinInet; 
function GetWebPage(const Url: string):string; 
var 
  Session, 
  HttpFile:HINTERNET; 
  szSizeBuffer:Pointer; 
  dwLengthSizeBuffer:DWord; 
  dwReserved:DWord; 
  dwFileSize:DWord; 
  dwBytesRead:DWord; 
  Contents:PChar; 
begin 
  Session:=InternetOpen('',0,niL,niL,0); 
  HttpFile:=InternetOpenUrl(Session,PChar(Url),niL,0,0,0); 
  dwLengthSizeBuffer:=1024; 
  HttpQueryInfo(HttpFile,5,szSizeBuffer,dwLengthSizeBuffer,dwReserved); 
  GetMem(Contents,dwFileSize); 
  InternetReadFile(HttpFile,Contents,dwFileSize,dwBytesRead); 
  InternetCloseHandle(HttpFile); 
  InternetCloseHandle(Session); 
  Result:=StrPas(Contents); 
  FreeMem(Contents); 
end;乱码样子
2010源代码Delphi乱码

解决方案 »

  1.   

    idhttp 在多线程中获取源码,经常出问题.或求稳定的获取源码的方法.还有在D7下正常的一份建立 socket 连接,获取源码的代码 无法获取内容.审查多遍无果,求大神解惑.
      

  2.   

    PChar->PAnsiChar, string->AnsiString
      

  3.   


    最终正常获取代码。
    function GetWebPage(const Url: string):string;
    var
      Session,
      HttpFile:HINTERNET;
      szSizeBuffer:DWord;
      dwLengthSizeBuffer:DWord;
      dwReserved:DWord;
      dwBytesRead:DWord;
      Contents:PAnsiChar;
    begin
      Session:=InternetOpen('',0,'','',0);
      HttpFile:=InternetOpenUrl(Session,PChar(Url),'',0,0,0);
      dwLengthSizeBuffer:=1024;
      HttpQueryInfo(HttpFile,5,@szSizeBuffer,dwLengthSizeBuffer,dwReserved);
      GetMem(Contents,szSizeBuffer);
      InternetReadFile(HttpFile,Contents,szSizeBuffer,dwBytesRead);
      InternetCloseHandle(HttpFile);
      InternetCloseHandle(Session);
      Result:=Contents;
      FreeMem(Contents);
    end;