Autor Beitrag
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Di 16.09.08 14:53 
IIRC:

ausblenden 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');  //"Turm" ist das Stichwort
  except
   Label2.Caption := 'Fehler';
  end;
  //raussuchen aus sText


Müsste jedenfalls. Codevervollständigung ist schon praktisch, sowas fehlt dem DF noch :mrgreen:

_________________
"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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2562
Erhaltene Danke: 46

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Di 16.09.08 16:40 
Ok, also folgendes sieht schon mal nach dem richtigen Weg aus, aber irgendwie stimmt die Variable e nicht:
ausblenden 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;

 {Anfangswert: es wird das 2. <li> im Text gesucht (+1 = nach dem 1. <li>, +4 = die Stringlänge des 2. <li>)}
 a := PosEx('<li>', sText, Pos('<li>', sText)+1)+4;

 {Endwert: es wird das 2. <br> im Text gesucht}
 e := PosEx('<br>', sText, Pos('<br>', sText)+1)+4;

 {Zwischen a und e müsste also der gesuchte Text liegen - a stimmt, e nicht, es wird der ganze restliche Text ausgelesen!}

 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2562
Erhaltene Danke: 46

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Di 16.09.08 18:40 
Ich habe das jetzt mit einem Zwischenschritt gelöst:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
 {Anfangswert: es wird das 2. <li> im Text gesucht}
 a := PosEx('<li>', sText, Pos('<li>', sText)+1)+4;

 {Erstmal alles ab a bis zum Textende kopieren, ...}
 sText := Copy(sText, a, Length(sText));

 {Endwert: es wird der 1. Punkt im nunmehrigen Text gesucht, ich will ja nur den 1. Satz}
 e := Pos('.', sText)-1;

 {... und erst jetzt das gewünschte Textende verwenden}
 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Di 16.09.08 19:46 
user profile icongalagher hat folgendes geschrieben:
ausblenden Delphi-Quelltext
 
19:
20:
21:
{ ... }
 {Zwischen a und e müsste also der gesuchte Text liegen - a stimmt, e nicht, es wird der ganze restliche Text ausgelesen!}

 Memo1.Text := Copy(sText, a, e);

Der dritte Parameter von Copy beschreibt die Länge, und nicht die Endposition. :les:

user profile icongalagher 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2562
Erhaltene Danke: 46

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Mi 17.09.08 16:27 
user profile iconYogu 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;
ausblenden 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:
 {Runde Klammern ( ) uns sonstige Steuercodes entfernen}
 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
user profile iconwikipedia 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2562
Erhaltene Danke: 46

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Sa 20.09.08 09:21 
Jetzt klappt es wieder halbwegs. Keine Sperre mehr - ich weiss nicht, was das war. :nixweiss: Die Wikipedia erfordert aufwändiges Filtern des Textes, die Google-Suche ist da wesentlich einfacher.

Danke an alle, die mir dabei geholfen haben! :D

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!