Gewisse Stelle aus einem Text abspeichern.
Hallöchen :),
suche eine Funktion bzw einen kleinen Rat um auf einem kompletten text immer abschnitte rauszusuchen und abzuspeichern. Habe hier einen Quelltext vor mir mit einer menge(!) von Links, Beispiel: ( nein, die Links haben keine beschriftung :) ). Nun möchte ich alles was im Text (egal wo) zwischen * <a href=" * und * "> * steht abspeichern. Werde es wohl nacher einfach in eine memo schreiben lassen , allerdings weiss ich nicht , wie ich diese Abschnitte suche, und vor allem immer den Link rauskopiere. PS: hoffe dass ich bei der Suchaktion nichts übersehen habe. Danke im Vorraus CC :bounce1: |
Re: Gewisse Stelle aus einem Text abspeichern.
Eine Möglichkeit wäre so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var s, s1 : String; Pos1, Pos2 : Integer; begin s := '[url="index.php?id=1"][/url]'; Pos1 := PosEx('"', s, 1); Pos2 := PosEx('"', s, Pos1 + 1); s1 := Copy (s, Pos1 + 1 , Pos2 - Pos1 - 1); showmessage('Pos1 ' + IntToStr(Pos1) + #13#10 + 'Pos2 ' + IntToStr(Pos2) + #13#10 + 'Link ' + s1); end; |
Re: Gewisse Stelle aus einem Text abspeichern.
oder so
Delphi-Quellcode:
Grüße
Function extracturl(link:string):String;
begin link:=copy(link,pos('"',link),length(link)); link:=copy(link,1,pos('"',link)-1); result := link; end; s:=extractURL('[url="index.php?id=1"][/url]'); Klaus |
Re: Gewisse Stelle aus einem Text abspeichern.
@Klaus01
Die erste Zeile Deiner Funktion löscht das linke Anführungszeichen nicht, es wird somit beim zweiten Pos() erneut gefunden. Hier die korrigierte Version:
Delphi-Quellcode:
Vielleicht sollte man auch noch eine Überprüfung einbauen, ob überhaupt ein URL im String enthalten ist.
function ExtractURL (const aLink: string): string;
begin Result := Copy(aLink, Pos('"', aLink) + 1, MaxInt); Result := Copy(Result, 1, Pos('"', Result)-1); end; Gruß Hawkeye |
Re: Gewisse Stelle aus einem Text abspeichern.
Suche mal nach TRegex - regular expressions sind das non-plus-ultra beim parsen/durchsuchen von texten.
Der Regex "|(.*?)|" sollte dir url und Text eines beliebigen Links geben. Eventuell muss du die öffnende spitze Klammer (<) maskieren, das weiss ich grad nicht, die könnte als lookbehind erkannt werden. Ach ja: www.regular-expressions.info - da steht so ziemlich alles, was man wissen muss. EDIT: man kann die url natürlich noch beschränken, so dass nur "echte" urls gefunden werden - aber ich denke, das ist unnötig |
Re: Gewisse Stelle aus einem Text abspeichern.
Ne andere Möglichkeit wäre Explode(eigentlich nicht dafür gedacht, sollte aber funktionieren) oder TDivStrList(für diesen fall wohl etwas überdimensioniert(außer du willst die Links ändern)). Der beste Weg wäre aber wohl wie schon erwähnt TRegEx...
mfg Christian |
Re: Gewisse Stelle aus einem Text abspeichern.
@Hawkeye219
Danke! Grüße Klaus |
Re: Gewisse Stelle aus einem Text abspeichern.
Hallo.
Da es sich bei dem Text offensichtlich um HTML-Code handelt, würde ich ihn auch als solchen behandeln. Mit der Prozedur ExtractLinks() werden alle hyperlinks aus einem HTML-Document heraus geholt, auch wenn sie nicht Attributwert eines Anchor-Elements sind:
Delphi-Quellcode:
Grüße vom marabu
procedure ExtractLinks(doc: IHTMLDocument2; s: TStrings);
var ec: IHTMLElementCollection; e: IHTMLElement; i: integer; url: Variant; begin ec := doc.links; for i := 0 to Pred(ec.length) do begin e := ec.item(i, 0) as IHTMLElement; url := VarToStr(e.getAttribute('href', 0)); if url <> '' then s.Add(url); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:40 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