Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co. (https://www.delphipraxis.net/111148-umlaute-problem-mit-idhttp-get-indy-%3D-%E3%B6-und-co.html)

MCXSC 30. Mär 2008 20:53

Re: Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.
 
Doch ich benutze sie... Mal ein wenig mehr Code:

Delphi-Quellcode:
var
  HTMLCode: TStringList;

function DownloadHTML(URL: String): String;
begin
  try
    Result := UTF8ToANSI(HTTP.Get(URL));
  except
    Exit;
  end;
  Result := StringReplace(Result, #13, #13#10, [rfReplaceAll]);
end;

function BearbeiteHTML(HTML: TSTringList): String;
begin
  //...
end;

procedure Suchen(MyString: String;);
begin
  HTMLCode := TStringList.Create;
  Dothisandthis(Filmtitel);
  FreeAndNil(HTMLCode);
end;

procedure Dothisandthis(MyString: String);
var
  i: Integer;
begin
  HTMLCode.Text := DownloadHTML('http://www.domain.url');
  HTMLCode.Text := BearbeiteHTML(HTMLCode);
  if Pos('[i]XXX[/i]', HTMLCode.Text) <> 0 then Exit
  else begin
    //...
  end;
end;
Zwar ein bisschen gekürzt, aber das wichtige ist drin.

Der Compiler gibt ab dem "if Pos('XXX', HTMLCode.Text) <> 0 then Exit" den oben genannten Fehler aus.

Zitat:

Zitat von Bernhard Geyer
[Off-Topic]Thunderbird hat wohl etwas zu viel Automatismus bezüglich übereiliger UTF8-Decodierung eingebaut[/Off-Topic]

Ist mir grade ebend auch aufgefallen... :)

Bernhard Geyer 30. Mär 2008 20:58

Re: Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.
 
Wieso benutzt du nicht den TWebBrowser und MSHTML und damit IHTMLDocument und gehst durch all deine gewünschten Elemente? IE + MSHTML nimmt dir doch das ganze Charset/Codierung sowie die m.E. unpassenden POS-Aufrufe für ein Dokumentenformat ab für welches man viel einfacher über den DOM eines dafür entwickelten Komponente geht.

MCXSC 30. Mär 2008 21:01

Re: Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.
 
Zitat:

Zitat von Bernhard Geyer
Wieso benutzt du nicht den TWebBrowser und MSHTML und damit IHTMLDocument und gehst durch all deine gewünschten Elemente? IE + MSHTML nimmt dir doch das ganze Charset/Codierung sowie die m.E. unpassenden POS-Aufrufe für ein Dokumentenformat ab für welches man viel einfacher über den DOM eines dafür entwickelten Komponente geht.

Eben nicht. Ich brauche halt nur den Code in einer StringList, dieser wird später weiterverarbeitet, bzw. es werden Dinge ausgelesen. Der TWebBrowser wäre da ein komplett falscher Weg.

MrKnogge 30. Mär 2008 21:09

Re: Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.
 
Bist du dir sicher, dass der Fehler in der Zeile "if Pos('XXX', HTMLCode.Text) <> 0 then Exit" ist, was steht denn in HTMLCode.Text drinnen ?

Greifst du denn in dem else-zweig auf HTMLCode zu ?

MCXSC 30. Mär 2008 21:11

Re: Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.
 
Ich teste grade, aber bis dahin kommt der Compiler eben (habe da auch mal nen Haltepunkt) gesetzt.

Und speichern kann ich die StringList eben auch (vorher) [HTMLCode.SaveToFile('dateiname.txt')], und der Inhalt ist halt so, wie er sein soll, aber immer noch mit dem Umlautproblem.

Und ja: Später wird noch auf die HTMLCode zurückgegriffen.

//Edit: Mal davon abgesehen, scheint UTF8toANS() hier nicht zu greifen...

Bernhard Geyer 30. Mär 2008 21:45

Re: Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.
 
Zitat:

Zitat von MCXSC
Eben nicht. Ich brauche halt nur den Code in einer StringList, dieser wird später weiterverarbeitet, bzw. es werden Dinge ausgelesen. Der TWebBrowser wäre da ein komplett falscher Weg.

Und? Wenn du den DOM vom TWebbrowser aufbauen lässt und solche dinge wie [i]-Elemente auslesen willst ist das sehr einfach möglich in dem du dem IHTMLDocument sagst das du alle entsprechende Elemente haben willst. Läßt sich in ca. 10 Zeilen Quellcode realisieren.

MCXSC 30. Mär 2008 21:57

Re: Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.
 
Nein, ich lese kein [i]-Element aus. Okay, da du wohl einen Grund brauchst, gebe ich dir einen (auch wenn es nichts zur Sache tut):

Wenn die Zeile "XXX" in dem Code vorkommt (oder im Original: "Keine Ergebnisse") soll eine MessageBox ausgegeben werden (im kurzen Ausschnitt eben "exit"). Werden allerdings Ergebnisse gefunden, so geht es weiter. Dann wird der obere HTML-Code weggeschnitten und es wird nach z.B. "<td>Genre:</td>" gesucht und weiter ausgelesen. Sprich: Es ist ein Teil der HTML-Auslesefunktion von myCine. Das was du mir da also erzählst, ist (was diesen Fall betrifft) unbrauchbar. ;)

MrKnogge 30. Mär 2008 22:08

Re: Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.
 
Wenn er welche findet, liefert dir pos aber <> 0 zurück und geht raus :wink:

MCXSC 30. Mär 2008 22:14

Re: Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.
 
Zitat:

Zitat von MrKnogge
Wenn er welche findet, liefert dir pos aber <> 0 zurück und geht raus :wink:

Nein. Pos liefert mir "0" zurück, wenn er keine findet (dann eben Exit bzw. eine Messagebox). Wenn nicht geht es im else-Teil weiter. Aber ich verstehe nicht, was das zur Sache tut? Er liest ja alle (in diesem Falle) Filmdaten aus, nur eben werden die Umlaute falsch angezeigt. ;)

Bernhard Geyer 30. Mär 2008 22:18

Re: Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.
 
Zitat:

Zitat von MCXSC
Nein, ich lese kein [i]-Element aus. Okay, da du wohl einen Grund brauchst, gebe ich dir einen (auch wenn es nichts zur Sache tut):

Wenn die Zeile "XXX" in dem Code vorkommt (oder im Original: "Keine Ergebnisse") soll eine MessageBox ausgegeben werden

:gruebel: Versteh ich jetzt nicht? Du suchst jetzt doch [i]-Elemente, oder doch nicht?

Zitat:

Zitat von MCXSC
... und es wird nach z.B. "<td>Genre:</td>" gesucht und weiter ausgelesen. Das was du mir da also erzählst, ist (was diesen Fall betrifft) unbrauchbar. ;)

Du werkelst doch ziemlich auf dem DOM des HTML-Dokumentes herum. Wieso sollte dann MSHTML und IHTMLDocument nicht brauchbar sein?


Übrigens. Das Design deiner Seite ist ja ziemlich Hip. :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:57 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz