Entwickler-Ecke
Internet / Netzwerk - Indy IdHttp1.Get() UTF8
cyberbug - Di 04.11.08 20:11
Titel: Indy IdHttp1.Get() UTF8
Hi,
ich nutze IdHttp1.Get(), um den Inhalt einer Textdatei, die auf meinem Webserver liegt, zu bekommen. Dieser Text wird anschliessend in eine Memo geschrieben.
Delphi-Quelltext
1:
| memText.Text := IdHttp1.Get('http://server.de/text.txt'); |
Der Text dieser Textdatei liegt jedoch in Unicode(UTF8) vor. Wie bekomme ich den auch als solches in die Memo?(benutze delphi 2009)
MFG cyberbug
cyberbug - Mi 05.11.08 20:22
Weiss niemand eine Lösung? Es ist mir wichtig... Oder fehlen noch Informationen?
MFG cyberbug
littleDave - Mi 05.11.08 20:56
Also mal einfach so aus dem Bauch heraus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure MakeUTF8String(pAnsi: PAnsiString; var pUTF8: Pointer); begin pUTF8 := pAnsi; end;
procedure TForm1.Button1Click(Sender: TObject); var Ansi : AnsiString; UF8 : PUTF8String; begin Ansi := IdHttp1.Get('http://server.de/text.txt'); MakeUTF8String(@Ansi, UTF8); memText.Text := UTF8Decode(UTF8^); end; |
Keine Ahnung, ob das funktioniert, einfach mal so aus dem Bauch heraus runtergeschrieben
cyberbug - Do 06.11.08 17:58
Danke für die Antwort!
Es funktioniert allerdings nicht...
Folgende Fehler tauchen auf:
Quelltext
1: 2: 3: 4: 5:
| [DCC Warnung] u_Main.pas(206): W1058 Implizite String-Umwandlung mit potenziellem Datenverlust von 'string' zu 'AnsiString' [DCC Fehler] u_Main.pas(208): E2035 Nicht genügend wirkliche Parameter [DCC Warnung] u_Main.pas(210): W1000 Symbol 'UTF8Decode' ist veraltet : 'Use UTF8ToWideString or UTF8ToString' [DCC Fehler] u_Main.pas(210): E2003 Undeklarierter Bezeichner: 'UTF8' [DCC Fataler Fehler] Projekt.dpr(9): F2063 Verwendete Unit 'u_Main.pas' kann nicht compiliert werden |
Folgender Code wurde genutzt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TFormMain.DownloadText(); var Ansi : AnsiString; UF8 : PUTF8String; begin Ansi := IdHttp1.Get('http://server.de/text.txt'); MakeUTF8String(@Ansi, UTF8); memText.Text := UTF8Decode(UTF8^); end; |
MFG cyberbug
littleDave - Do 06.11.08 18:12
Was für ein Datentyp bekommst du denn bei idHTTP.Get(...)? Ist es "AnsiString", "WideString" oder einfach nur "string"?
Mit den Fehlern: nenn mal die Varialbe nicht UF8 sonder UTF8 ;-)
cyberbug - Do 06.11.08 21:09
Es ist ein String, jedenfalls vermute ich dass, aber ich möchte ja eig das UTF8 haben. Und als ich es umbenannt habe, waren noch immer Fehler da...
Quelltext
1: 2: 3: 4: 5:
| [DCC Warnung] u_Main.pas(206): W1058 Implizite String-Umwandlung mit potenziellem Datenverlust von 'string' zu 'AnsiString' [DCC Fehler] u_Main.pas(208): E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen [DCC Warnung] u_Main.pas(210): W1000 Symbol 'UTF8Decode' ist veraltet : 'Use UTF8ToWideString or UTF8ToString' [DCC Fehler] u_Main.pas(210): E2010 Inkompatible Typen: 'RawByteString' und 'PUTF8String' [DCC Fataler Fehler] Projekt.dpr(9): F2063 Verwendete Unit 'u_Main.pas' kann nicht compiliert werden |
Weiss noch jemand rat?
MFG cyberbug
littleDave - Do 06.11.08 21:24
Ich habs nochmal umgeschrieben:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button1Click(Sender: TObject); var RawString : string; UTF8String : PUTF8String; begin RawString := IdHTTP1.Get('http://server.de/text.txt'); UTF8String := @Pointer(RawString); Memo1.Text := UTF8Decode(UTF8String^); Memo1.Text := UTF8ToString(UTF8String^); end; |
cyberbug - Do 06.11.08 21:33
Juchu, die Errors sind weg, danke für deine Bemühungen ;)
MFG cyberbug
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!