Delphi-PRAXiS
Seite 3 von 3     123   

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 22:26

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

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

Ich suche nicht nach dem [i]-Element, sondern eher nach "Keine Ergebnisse". Das ich das [i]-Element noch mitsuche, hängt nur damit zusammen, dass es das einzige ist, es gibt sonst mehrere "Keine Ergebnisse". Ist ein wenig schwer zu erkären, aber damit du von deinem Element-Gesuche gedanklich wegkommst: Ich suche nur nach "Keine Ergebnisse".

Zitat:

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

Nicht nur. Es war Zufall, dass mir jetzt wieder ein Element einfiel. Aber es wird z.B. auch nach "http://www.domain.de/weitereinfos.php?..." gesucht; ich lese eben die Daten der OFDb aus, und brauche, um die entsprechenden Daten zu finden, eben anhaltspunkte.

Zitat:

Zitat von Bernhard Geyer
Übrigens. Das Design deiner Seite ist ja ziemlich Hip.

Sofern das "Hip" positiv gemeint ist: Danke. ;)

MrKnogge 30. Mär 2008 22:39

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

Zitat von MCXSC
Nein. Pos liefert mir "0" zurück, wenn er keine findet (dann eben Exit bzw. eine Messagebox).

hier machst du aber etwas anderes:
Delphi-Quellcode:
if Pos('[i]XXX[/i]', HTMLCode.Text) <> 0 then Exit
dann muss es schon "= 0" heisen.

MCXSC 30. Mär 2008 22:44

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

Zitat von MrKnogge
hier machst du aber etwas anderes:
Delphi-Quellcode:
if Pos('[i]XXX[/i]', HTMLCode.Text) <> 0 then Exit
dann muss es schon "= 0" heisen.

Wah, gut gut. Ich hab jetzt (während meiner Arbeit am Programm) kurz falsch rum gedacht. ;) So wäre es aber richtig:

Delphi-Quellcode:
begin
  HTMLCode.Text := DownloadHTML('http://www.domain.de...');
  if Pos('[i]Keine Ergebnisse[/i]', HTMLCode.Text) <> 0 then ShowMessage('Es wurde kein Film auf OFDb.de gefunden!')
  else begin
    //...
  end;
end;

MrKnogge 30. Mär 2008 22:51

Re: Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.
 
Alles klar, ok.

Aber wenn ein Listenindex das Maximum überschreitet, geht das imho nu, wenn man eben auch per index sich was aus der Stringlist rausfischt. Der Fehler kann also eigentlich nur in Zusammenhang mit HTMLCode[i] auftreten.

MCXSC 30. Mär 2008 22:57

Re: Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.
 
Ja, das stimmt. Ich weiß nun auch, wo der Fehler liegt oder eher lag:

Wenn UTF8toANSI nichts zu tun hat, so liefert es einen leeren String zurück. Da die Funktion bei der Übergabe von HTMLCode.Text wohl nur die erste Zeile "gescannt" hat (also HTMLCode[0]), und ab HTMLCode[1] nichts mehr gemacht hat, war eben dieses leer.

Ich habe es nun in etwa so gelöst, dass ich eine neue StringList erstellt habe, und jede Zeile von HTMLCode einzelnd durchlaufe und umwandel lasse, und diese Zeilen eben in der neuen Stringlist zusammensetzen lasse.

Ferdy2003 30. Mär 2008 23:49

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

mit PHP löse ich so ein Problem wie folgt:

$bad_char=array("ä","ö","ü","Ä","Ö","Ü","ß" );
$right=array('ä','ö','ü','Ä','Ö','Ü','ß');
$text=str_replace($bad_char,$right,$row["beschreibung"]);
$text = htmlentities($text);

d.h. ich ersetze in dem String einfach die falschen ($bad_char) durch die richtigen ($right) ich denke das ist auch mit Delphi möglich.

MCXSC 30. Mär 2008 23:57

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

Zitat von Ferdy2003
mit PHP löse ich so ein Problem wie folgt:

$bad_char=array("ä","ö","ü","Ä","Ö","Ü","ß" );
$right=array('ä','ö','ü','Ä','Ö','Ü','ß');
$text=str_replace($bad_char,$right,$row["beschreibung"]);
$text = htmlentities($text);

d.h. ich ersetze in dem String einfach die falschen ($bad_char) durch die richtigen ($right) ich denke das ist auch mit Delphi möglich.

Es gibt nur für z.B. "ö" min. 2 Versionen - an die Idee hatte ich anfangs auch gedacht, aber ist eben (auch in PHP) unschön. Aber mit UTF8toAnsi hatte ich ja Erfolg - man muss dabei nur beachten, dass die Funktionen einen leeren String zurückgibt, wenn der String kein UTF8 ist.

marabu 31. Mär 2008 07:18

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

Zitat:

Zitat von MCXSC
... Es gibt nur für z.B. "ö" min. 2 Versionen ... Aber mit UTF8toAnsi hatte ich ja Erfolg - man muss dabei nur beachten, dass die Funktionen einen leeren String zurückgibt, wenn der String kein UTF8 ist.

das solltest du nochmal ganz in Ruhe prüfen.

Und was das Analysieren von markup angeht: Jeder Text gehorcht einer mehr oder weniger komplexen Grammatik - und wenn es bereits einen Parser für die Grammatik gibt, dann bist du einfach nur gut beraten, wenn du ihn auch benutzt. Zugegeben, die OFDb-Seite ist kaum für eine programmgesteuerte Online-Abfrage geeignet, aber mit der richtigen Technik lässt sich da schon etwas machen - auch im Hinblick auf das nächste Redesign der web site, was ja bestimmt nicht ganz ausgeschlossen werden kann.

Nachdenkliche Grüße

Bernhard Geyer 31. Mär 2008 07:35

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

Zitat von MCXSC
Es gibt nur für z.B. "ö" min. 2 Versionen

ö als benanntes Zeichen?
MSHTML (oder auch ein anderer HTML-Parser) würde dir auch dies abnehmen.

MCXSC 31. Mär 2008 20:45

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

Zitat von Bernhard Geyer
Zitat:

Zitat von MCXSC
Es gibt nur für z.B. "ö" min. 2 Versionen

ö als benanntes Zeichen?
MSHTML (oder auch ein anderer HTML-Parser) würde dir auch dies abnehmen.

Nochmals: Ich brauche KEINEN HTML-Parser, da dieser mir nicht Daten ausgeben kann. Jedenfalls nicht so, wie ich es brauche. Wenn irgendwo z.B. steht "Genre: xxx, yyy", dann parst er das nicht so, dass ich es einfach ausschneiden kann. Und das was du meinst ist kein UTF8.

Zitat:

Zitat von marabu
Zitat:

Zitat von MCXSC
... Es gibt nur für z.B. "ö" min. 2 Versionen ... Aber mit UTF8toAnsi hatte ich ja Erfolg - man muss dabei nur beachten, dass die Funktionen einen leeren String zurückgibt, wenn der String kein UTF8 ist.

das solltest du nochmal ganz in Ruhe prüfen.

Hmm, okay, da hatte ich mich wohl verschaut. Aber gut, denke mal (wie du sagtest?), ist das UTF8toAnsi sowieso besser, da schon vorhanden. Und es klappt ja. :)

Zitat:

Zitat von marabu
Zugegeben, die OFDb-Seite ist kaum für eine programmgesteuerte Online-Abfrage geeignet, aber mit der richtigen Technik lässt sich da schon etwas machen - auch im Hinblick auf das nächste Redesign der web site, was ja bestimmt nicht ganz ausgeschlossen werden kann.

Najoa, aber eine Abfrage funktioniert ja. :) Was für eine Technik meinst du denn? OFDb bietet weder einen Zugang zur Datenbank, noch eine API o.ä., es bleibt also nur der HTML-Code.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:32 Uhr.
Seite 3 von 3     123   

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