| Autor |
Beitrag |
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Di 16.09.08 14:53
IIRC:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var sText: string; begin sText:= ''; try sText:= IdHTTP1.Get('http://www.google.de/search?q=define%3ATurm'); except Label2.Caption := 'Fehler'; end; |
Müsste jedenfalls. Codevervollständigung ist schon praktisch, sowas fehlt dem DF noch 
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
galagher 
      
Beiträge: 2562
Erhaltene Danke: 46
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Di 16.09.08 16:40
Ok, also folgendes sieht schon mal nach dem richtigen Weg aus, aber irgendwie stimmt die Variable e nicht:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| var sText: String; a, e: Integer; begin sText:= ''; try sText:= IdHTTP1.Get('http://www.google.de/search?q=define%3ATurm'); except Label2.Caption := 'Fehler'; exit; end;
a := PosEx('<li>', sText, Pos('<li>', sText)+1)+4;
e := PosEx('<br>', sText, Pos('<br>', sText)+1)+4;
Memo1.Text := Copy(sText, a, e); |
Irgendwas mache ich bei e falsch...
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
galagher 
      
Beiträge: 2562
Erhaltene Danke: 46
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Di 16.09.08 18:40
Ich habe das jetzt mit einem Zwischenschritt gelöst:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| a := PosEx('<li>', sText, Pos('<li>', sText)+1)+4;
sText := Copy(sText, a, Length(sText));
e := Pos('.', sText)-1;
Memo1.Text := Copy(sText, 1, e); |
Klappt meistens, aber bei zB. "Insekten" nicht, weiss aber nicht, warum...
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Di 16.09.08 19:46
galagher hat folgendes geschrieben: | Delphi-Quelltext 19: 20: 21:
| { ... }
Memo1.Text := Copy(sText, a, e); | |
Der dritte Parameter von Copy beschreibt die Länge, und nicht die Endposition.
galagher hat folgendes geschrieben: | | Klappt meistens, aber bei zB. "Insekten" nicht, weiss aber nicht, warum... |
Was heißt, "es klappt bei Insekten nicht"? Fehlt ein Teil, ist etwas zu viel ... ? Vielleicht liegt es daran, dass in dieser Beschreibung ( "Insekten (Insecta), auch Kerbtiere oder Kerfe genannt, sind die artenreichste Klasse der Gliederfüßer (Arthropoda) und zugleich die ...") der Satz nicht vollständig zu finden ist, sondern der letzte Teil mit drei Punkten abgetrennt ist. Du könntest andere Artikel probieren, bei denen das auch der Fall ist.
|
|
galagher 
      
Beiträge: 2562
Erhaltene Danke: 46
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Mi 17.09.08 16:27
Yogu hat folgendes geschrieben: | | Was heißt, "es klappt bei Insekten nicht"? Fehlt ein Teil, ist etwas zu viel ... ? |
Ich habe festgestellt, dass es bei sehr vielen anderen Begriffen nicht klappt, was bedeutet, dass das gewünschte Ende des Textes nicht korrekt ist: es wird einfach der ganze Text genmommen.
Ausserdem hat mich google gestern bei der manuellen "defin:"-Eingabe ausgesperrt und auch mein Programm hatte keinen Zugriff mehr, weil google sinngemäss meinte, diese Art von Zugriffen wären typisch für Hacker/Viren/usw.; habe mir leider den korrekten Wortlaut nicht gemerkt. Ich musste, um "defin:" wieder zur Verfügung zu haben, erst 2x einen Buchstabencode abtippen, danach klappte "defin:" an der google-Eingabazeile, mein Programm aber hatte weiterhin keinen Zugriff, erst nach Neustart des PC's. Auch Cookies löschen half nichts. Ok, ich denke, das ist eine ansonsten vielleicht sinnvolle Sicherheitseinrichtung von google.
Also habe ich jetzt etwas Neues: Wikipedia! Funktioniert sehr gut, ich muss nur nach dem 1. <p> suchen und bis zum 1. Punkt auslesen, im Idealfall ist das der erste Satz.
Allerdings muss man relativ viel korrigieren, wie zB. Links, Umlaute, das ß usw. Momentan habe ich das noch unsauber mit StringReplace, das sieht dann so aus;
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| sText := ExtractBracketText(Copy(sText, 1, e));
sText := StringReplace(sText, '"', '', [rfReplaceAll]); sText := StringReplace(sText, '</a>', '', [rfReplaceAll]); sText := StringReplace(sText, '/a>', '', [rfReplaceAll]); sText := StringReplace(sText, '<a', '', [rfReplaceAll]); sText := StringReplace(sText, '<b>', '', [rfReplaceAll]); sText := StringReplace(sText, '</b>', '', [rfReplaceAll]); sText := StringReplace(sText, '<i>', '', [rfReplaceAll]); sText := StringReplace(sText, '</i>', '', [rfReplaceAll]); sText := StringReplace(sText, '/sup>', '', [rfReplaceAll]); sText := StringReplace(sText, 'href=/wiki/', '', [rfReplaceAll]); sText := StringReplace(sText, '„', '"', [rfReplaceAll]); sText := StringReplace(sText, '“', '"', [rfReplaceAll]); sText := StringReplace(sText, 'ä', 'ä', [rfReplaceAll]); sText := StringReplace(sText, '%C3%A4', 'ä', [rfReplaceAll]); sText := StringReplace(sText, 'ö', 'ö', [rfReplaceAll]); sText := StringReplace(sText, '%C3%B6', 'ö', [rfReplaceAll]); sText := StringReplace(sText, 'ü', 'ü', [rfReplaceAll]); sText := StringReplace(sText, '_', ' ', [rfReplaceAll]); sText := StringReplace(sText, 'ß', 'ss', [rfReplaceAll]); sText := StringReplace(sText, ' ', ' ', [rfReplaceAll]); sText := StringReplace(sText, ' , ', ', ', [rfReplaceAll]); |
Ist ziemlich brutal, klappt zwar, bleibt aber nicht so. Ich meine, solche Sonderzeichen möchte ich nicht im Quellcode haben, also werde ich versuchen, sie durch die Schreibweise #000 zu ersetzen und den Code besser zu gestalten. Oder kann man das noch eleganter lösen?
Aber auch bei der Wikipedia gibt's manchmal Probleme. Da bleiben dann ebenfalls diverse Sonderzeichen im String. Macht aber nix. Meistens ist alles ok, und ich prüfe abschliessend einfach, ob der String nur Buchstaben, Zahlen, Komma, Semikolon, Punkt und Leerzeichen enthält.
Ach ja: de.wikipedia.org/wik...:%C3%9Cber_Wikipedia
wikipedia hat folgendes geschrieben: | | Anders als herkömmliche Enzyklopädien ist die Wikipedia frei. Es gibt sie nicht nur kostenlos im Internet, sondern jeder darf sie unter Angabe der Quelle und der Autoren frei kopieren und verwenden. |
//Edit: Wie ich die "Angabe der Autoren" unterbringe, ist mir derzeit noch nicht ganz klar.
//Edit: Ach ja, es handelt sich um ein Programm, dass nur ich nutzen werde. Kein Verschenken, kein Verkauf usw.
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
galagher 
      
Beiträge: 2562
Erhaltene Danke: 46
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Sa 20.09.08 09:21
Jetzt klappt es wieder halbwegs. Keine Sperre mehr - ich weiss nicht, was das war.  Die Wikipedia erfordert aufwändiges Filtern des Textes, die Google-Suche ist da wesentlich einfacher.
Danke an alle, die mir dabei geholfen haben! 
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
|