Einzelnen Beitrag anzeigen

bogdan

Registriert seit: 15. Apr 2013
77 Beiträge
 
#1

Mit IdHTTP Seite aufrufen und an MemoryStream übergeben = Zeichen fehlerhaft

  Alt 27. Apr 2018, 08:09
Mit dem folgenden Code lese ich den HTML Code der geladenen Web-Seiten auf:

Code:
function GetHTMLCode(xUrl: String): String;
var
  xResult : TStringList;
  xResMemo : TMemoStream;
begin
  xResult := TStringList.Create;
  xResMemo : TMemoStream.Create;
  try
    try
      IdHTTP1.Get(xUrl, xResMemo);
      xResMemo.Position := 0;
      xResult.Text := StreamToText(xResMemo, ' ', 00);
    except
      on E: EIdHTTPProtocolException do
      begin
        xResult.Add('E.Message: ' + E.Message);
        xResult.Add('E.ErrorMessage:');
        xResult.Add(E.ErrorMessage);
      end;
    end;
  finally
    Result := xResult.Text;
    xResult.Free;
    xResMemo.Free;
  end;
end;

function StreamToText(sStream: TStream; sNewSign: string; sOldSign: Integer): AnsiString;
var
  xLen, j, xSize : Integer;
  xTemp : string;
begin
  try
    xLen := sStream.Size;
    SetLength(Result, xLen);
    if xLen > 0 then
    begin
      sStream.ReadBuffer(Result[1], xLen);
      for j := 1 to xLen do
      begin
        if Ord(Result[j]) = sOldSign then
        begin
          xTemp := xTemp + sNewSign
        end else
        begin
          xTemp := xTemp + Result[j];
        end;
      end;
    end;
  finally
    Result := xTemp;
  end;
end;
Damit der HTML Code der aufgerufenen Seiten vollständig als Text angezeigt werden kann muss ich ein MemoryStream nutzen, dazu habe ich schon in einem anderen Beitrag das Problem erläutert.
Allerdings habe ich jetzt das Problem das kyrillische, chinesische, usw. Zeichen als Hieroglyphen angezeigt werden.
Wie kann man die Zeichen aus der Funktion richtig in einen Text kodieren?
  Mit Zitat antworten Zitat