Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Text aus String wegschneiden? (https://www.delphipraxis.net/31646-text-aus-string-wegschneiden.html)

mlspider 12. Okt 2004 08:31


Text aus String wegschneiden?
 
Hallo,

Ich versuche mit folgenden Code meine IP zu ermitteln:

Delphi-Quellcode:
Memo1.Lines[0] := IdHTTP1.Get('http://checkip.dyndns.org');
Dieser gibt mir zwar meine IP aus, allerdings mit HTML-Tags:

<html><head><title>Current IP Check</title></head><body>Current IP Address: 217.231.61.98</body></html>

Wie kann ich nun diese wegschneiden, so das nur noch die IP übrig bleibt???

Danke!

Sharky 12. Okt 2004 08:33

Re: Text aus String wegschneiden?
 
Zitat:

Zitat von mlspider
...Wie kann ich nun diese wegschneiden, so das nur noch die IP übrig bleibt???

Hai,

das sollte mit Delphi-Referenz durchsuchenCopy und Delphi-Referenz durchsuchenPos möglich sein.

mlspider 12. Okt 2004 08:35

Re: Text aus String wegschneiden?
 
Bin nicht der geborene Delphianer. Es würde mir ein kleines Code-Beispiel sehr viel helfen.

Alexander 12. Okt 2004 08:43

Re: Text aus String wegschneiden?
 
Ich denke, in der Delphi Hilfe sollten mehr als genug Beispiele sein.
Aber noch mal ganz kurz: Mit COPY kopierst du alles nach "Address:" (das kannst du mit POS (liefert den Start-Index, d.h. du musst noch die Länge (length()!) von Address: dazuzählen) suchen oder gleich abzählen...) bis die IP endet, also bis </body>, das du wieder mit POS suchen kannst.

mlspider 12. Okt 2004 08:47

Re: Text aus String wegschneiden?
 
Da steig ich nicht hinter! Ich habe mir überlegt, den ganzen Kram in einer StringList zu übergeben:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
 slWork : TStringList;
begin
 Memo1.Lines[0] := IdHTTP1.Get('http://checkip.dyndns.org');
 try
 slWork := TStringList.Create;
 Memo1.Lines.AddStrings(slWork);
 finally
 FreeAndNil(slWork);
end;
end;
Wie kann man den Faden jetzt weiter spinnen?

fiasko 12. Okt 2004 08:49

Re: Text aus String wegschneiden?
 
Hallo,

besser ist IMHO wenn du hier mit [dp]reguläre Ausdrücke[/dp] arbeitest (siehe auch hier was das ist). Im Prinzip mußt du nur schauen das das Muster (\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}) auf die Rückgabe von dem GET matched. Das Muster erkennt zwar auch sowas wie 888.12.43.234 als gültige IP-Adresse - das kann man hier imho vernachlässigen.

Auf den ersten Blick mag das bißchen kompliziert aussehen - ist dafür aber nicht so anfällig wenn sich die Ausgabe der Internetseite mal leicht verändert - und im DP-Archiv scheint es auch viel zum Thema zu geben.

mlspider 12. Okt 2004 08:53

Re: Text aus String wegschneiden?
 
Boah!!! Daraus werde ich erst recht nicht schlau! Trotzdem Danke!!!

Alexander 12. Okt 2004 09:01

Re: Text aus String wegschneiden?
 
Mit einer StringList würde ich nicht arbeiten.
Hier mal ein kleines Beispiel:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  s : String;
  index, count : Integer;
begin
  s := '<html><head><title>Current IP Check</title></head><body>Current IP Address: 217.231.61.98</body></html>';
  index := POS('Address: ', s) + length('Address: ');
  count := Length(s) - index - length('</body></html>') +1;
  s := Copy(s, index, count);
end;
Index gibt den Index an, aber der kopiert werden soll und copy wie viele Zeichen kopiert werden sollen...
Habe es nicht getestet, hoffe aber, dass es funktioniert.
Wenn sich aber die Struktur der Website ändert, passt auch der Code nicht mehr, logisch oder?

Sharky 12. Okt 2004 09:08

Re: Text aus String wegschneiden?
 
Und hier auch noch ein Beispiel von mir :stupid:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  myString : String;
  ipString : String;
  i     : Integer;
begin
  myString := '<html><head><title>Current IP Check</title></head><body>Current IP Address: 217.231.61.98</body></html>';
  i := Pos (':',mystring); // Position von ":" ermitteln.
  Delete (myString,1,i); // Alles bis zur "IP-Adresse" löschen
  i := Pos ('<',mystring); // Position von "<" ermitteln.
  ipString := Copy(myString,1,i-1); // Alles bis zur Postion von "<" -1 in einen neuen String kopieren.
  Label1.Caption := ipString;
end;

mlspider 12. Okt 2004 09:10

Re: Text aus String wegschneiden?
 
Leuchtet schon ein. Nur wie übergebe ich jetzt den gefilterten String in ein weiteres Memo. Ich hoffe ich nerve nicht all zu sehr!!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:28 Uhr.
Seite 1 von 2  1 2      

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