Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Von-Bis im Text ausschneiden (https://www.delphipraxis.net/121984-von-bis-im-text-ausschneiden.html)

Eppos 7. Okt 2008 22:45


Von-Bis im Text ausschneiden
 
Hallo zusammen,

ich habe folgende Problematik.

Ich habe eine Textdatei in der ich bestimme sachen ausschneiden möchte.
Ich Suche nach der Stelle: <a href="
Wenn ich diese gefunden habe, möchte ich gerne ab dem Gänsefüsschen
bis zum nächsten Gänsefüsschen den Inhalt auslesen.
Im Text sind es meistens ca. 10 st.


Meine Frage,
hat jemand sollch eine Funktion schon oder ein Beispiel?

Vielen Dank

Dax 7. Okt 2008 22:46

Re: Von-Bis im Text ausschneiden
 
Reguläre Ausdrücke wären was für dich ;) '<a href="(.[^"]*?)"'

Hador 8. Okt 2008 00:01

Re: Von-Bis im Text ausschneiden
 
Entweder das oder mit Delphi-Referenz durchsuchenPosEx und Delphi-Referenz durchsuchenCopy

Eppos 8. Okt 2008 11:55

Re: Von-Bis im Text ausschneiden
 
Ok das verstehe ich, aber was ich noch nicht verstehe ist folgendes.

Wenn mehrere Links in dieser Textdatei stehen, wie kann ich das dann
durch eine Schelife laufen lassen?
Also wie springe ich zur nächsten Position und wohere weiss ich
das ich am Ende bin?

taaktaak 8. Okt 2008 12:15

Re: Von-Bis im Text ausschneiden
 
Du sprichst von einer Textdatei. Die wird üblicherweise zeilenweise gelesen/geschrieben. Innerhalb der Zeile wird dann wie vorstehend beschrieben gesucht und geschnippelt :coder:

DeddyH 8. Okt 2008 12:17

Re: Von-Bis im Text ausschneiden
 
Und Funktionen wie PosEx() haben einen Rückgabewert, den man auswerten kann ;)

DevilsCamp 8. Okt 2008 12:19

Re: Von-Bis im Text ausschneiden
 
PosEx gibt die Stelle des gefundenen SubStr in Str zurück. Wird SubStr nicht in Str gefunden, so ist der Rückgabewert 0


Delphi-Quellcode:
procedure GetUrls(Str: string; stringliste: TStringList);
var
  index: Integer;
  indexStringEnde: Integer;
begin
  stringliste.Clear;
  index := Pos('<a href="', Str);

  while (index > 0) do
  begin
    // Hier dein Copy-Befehl und sonstiges um die Daten zu ermitteln
    // z.B.
    indexStringEnde := PosEx('"', Str, index + Length('<a href="'));
    stringliste.Add(Copy(Str, index + Length('<a href="'), indexStringEnde));
    index := PosEx(SubStr, Str, index + 1);
  end;
end;
Aus Mangel an Delphi (im Moment), konnte ich das gerade nicht testen (v.a. bin ich mir gerade mit dem korrekten Aufruf von Copy und PosEx nicht sicher :) ).
Es sollte aber so funktionieren.


Grüße,
Marc


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:32 Uhr.

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