[Delphi] Wininet help!

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by cheater_man, 12 Jan 2012.

  1. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    Code:
    function GetStr(url: string): string;
    const
      BufferSize = 6536;
    var
      hInternet, hConnect: pointer;
      Buffer: array[1..BufferSize] of char;
      BufferLen: LongWord;
      i: integer;
    begin
      result:='';
      hInternet:=InternetOpen('Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0)', INTERNET_OPEN_TYPE_PRECONFIG,0, nil, 0);
      if Assigned(hinternet) then
      try
        hConnect:=InternetOpenUrl(hInternet, pchar(url),  nil, 0, 0, 0);
      repeat
      if not InternetReadFile(hConnect, @Buffer, SizeOf(Buffer), BufferLen) then
        bufferlen:=0;
        for i:=1 to bufferlen do result:=result+char(Buffer[i]);
        until bufferlen=0;
      finally
        InternetCloseHandle(hinternet);
      end;
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Memo1.Text := GetStr('http://www.google.ru');
    end;
    
    В memo1 вижу это

    Code:
    ℼ潤瑣灹⁥瑨汭㰾瑨汭㰾敨摡㰾敭慴栠瑴⵰煥極㵶挢
    湯整瑮琭灹≥挠湯整瑮∽整瑸栯浴㭬挠慨獲瑥唽䙔㠭㸢洼瑥⁡
    慮敭∽敤捳楲瑰潩≮挠湯整瑮∽鿐뻐룐臑뫐퀠킸톽킄톾킀킼
    톰킆킸₸닐퀠킸톽킂통킀킽통킂㪵퀠킲킵₱臑苑胑냐뷐룐蛑
    译‬뫐냐胑苑룐뷐뫐룐‬닐룐듐뗐뻐퀠₸볐뷐뻐돐뻐뗐퀠톴톀킃
    킳킾⺵㸢琼瑩敬䜾潯汧㱥琯瑩敬㰾捳楲瑰眾湩潤⹷潧杯敬笽
    䕫㩉欢潃呐圸乌攴佂癱浢㡐≃本瑥䥅昺湵瑣潩⡮⥡登牡戠眻楨
    敬愨☦⠡⹡敧䅴瑴楲畢整☦戨愽朮瑥瑁牴扩瑵⡥攢摩⤢⤩愩愽
    瀮牡湥乴摯㭥敲畴湲戠籼潧杯敬欮䥅ⱽ瑨灴㩳畦据楴湯⤨牻
    瑥牵楷摮睯氮捯瑡潩⹮牰瑯捯汯㴽栢瑴獰∺ⱽ䕫偘㩉㈢㘵㜵
    ㌬㘵〲㌬...
    WTF?o_0
     
  2. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Блин, ну миллион таких тем же!!!!
    Проблема в кодировке. Решается Utf8ToAnsi
     
  3. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    Code:
    Memo1.Text := Utf8ToAnsi(GetStr('http://www.google.ru'));
    то
    Code:
    ????????????????????
    ???????????????????????????
    ???????????????????
     
  4. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    UTF8Decode попробуй. Я уже намекнул что тем на ачате куча, а в инете куча куч
     
  5. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    937
    Likes Received:
    162
    Reputations:
    27
    Если выводит такие иероглифы, значит проблема врятли в юникоде.
    ТС, какая версия Delphi? Подозреваю, что >= 2007.
     
  6. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    если делфи последних версий попробуй измени тип char на AnsiChar, PChar на PAnsiChar
     
  7. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    Спасибо! я так и подозревал, что делo не в кодировке=)
    Delphi XE
    ps поменял тип данных char на ansichar...
    В основном всех спасает Utf8ToAnsi, и все об этом пишут, а здесь дело в другом...
     
    #7 cheater_man, 13 Jan 2012
    Last edited: 13 Jan 2012
  8. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Да, не учел того, что делфи может быть свежее, чем 7ка, на которой я сижу )