Einzelnen Beitrag anzeigen

HJay

Registriert seit: 7. Dez 2009
172 Beiträge
 
Delphi XE7 Enterprise
 
#1

HTML- über WinINet downloaden: Unicode?

  Alt 17. Apr 2012, 12:06
Ich habe diesen Artikel in der Code-Bibliothek gefunden und die kurze, griffige Lösung gefällt mir gut.

http://www.delphipraxis.net/5520-htm...ownloaden.html
Code:
function GetHTML(AUrl: string): string;
  var
    databuffer      : array[0..4095] of char;
    ResStr          : string;
    hSession, hfile : hInternet;
    dwcode          : array[1..20] of char;
    res             : pchar;
    Str             : pchar;
    dwindex, dwcodelen, dwread, dwNumber: cardinal;
begin
  ResStr:='';
  if Pos('http://', Lowercase(AUrl)) = 0 then AUrl := 'http://' + AUrl;

  hSession := InternetOpen('InetURL:/1.0', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);

  if assigned(hsession) then begin
    hfile:=InternetOpenUrl(hsession, pchar(AUrl), nil, 0, INTERNET_FLAG_RELOAD, 0);
    dwIndex := 0;
    dwCodeLen := 10;
    HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE, @dwcode, dwcodeLen, dwIndex);
    res := pchar(@dwcode);
    dwNumber := sizeof(databuffer)-1;
    if (res ='200') or (res ='302') then begin
      while (InternetReadfile(hfile, @databuffer, dwNumber, DwRead)) do begin
        if dwRead =0 then break;
        databuffer[dwread] := #0;
        Str := pchar(@databuffer);
        resStr := resStr + Str;
      end;
    end
    else ResStr := 'Status:' + res;
    if assigned(hfile) then InternetCloseHandle(hfile);
  end;

  InternetCloseHandle(hsession);
  Result := resStr;
end;
Unter Delphi 2010 / Win 7-64 produziert der aufruf aber nur Kauderwelsch -- wahrscheinlich weil der alte Code noch nicht mit Unicode kompatibel ist.

Wie müsste man den Code abwandeln, damit man die alte Routine mit Unicode/Delphi 2010 verwenden kann? Würde mich über Hilfe sehr freuen!

PS
Oder gibt es mir unbekannte Routinen in Delphi, mit denen man eine HTML-Seite noch einfacher und geradliniger downloaden kann? WebBrowser ist mir zuviel Overhead, ich brauche nur den HTML-Code als String.
  Mit Zitat antworten Zitat