Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Memo nach bestimmtem LINKS durchsuchen. (https://www.delphipraxis.net/59106-memo-nach-bestimmtem-links-durchsuchen.html)

xe0n 17. Dez 2005 14:02


Memo nach bestimmtem LINKS durchsuchen.
 
Hallo

ich moechte gerne eim memo nach allen links durchsuchen.
die gefundennen sollen dann alle in einem seperaten memeo abgespeichert werden.

BSP für memo 1.
Delphi-Quellcode:
Text Test
Text TestText Test
Text Test [url]www.google.de/linux[/url] Text Test
Text [url]www.php.net/downloads.php[/url] Text TestText Test
Text TestText Test
Text TestText Test
so, diese 2 Links sollen jetzt in ein 2. memo
untereinander importiert werden.

BSP für MEMO 2.
Delphi-Quellcode:
[url]www.google.de/linux[/url]
[url]www.php.net/downloads.php[/url]
der andere überflüssige text loss also verschwinden.
villeicht hat ja jemand ne tolle idee

mfg Xe0n

Nils_13 17. Dez 2005 14:04

Re: Memo nach bestimmtem LINKS durchsuchen.
 
Benutz das RichEdit (Find...) oder nimm das das und das und programmierst es zu deinen Gunsten um

xe0n 17. Dez 2005 14:09

Re: Memo nach bestimmtem LINKS durchsuchen.
 
hi ja das iss ja grad das prob ich hab vol delphi noch nicht do viel ahnung
auf die seite die tu gepostet hast bin ich auch schon gestoßen aber ich konnte
nicht wirklich viel damit anfangen.
hat jemand vllt nen code-schnipsel für mich das würde mit weiterhelfen

trotzdem thx für deine fixe antwort no.1

mfg xe0n

xe0n 17. Dez 2005 16:28

Re: Memo nach bestimmtem LINKS durchsuchen.
 
oder kannst du mir erklären wie ich die wildcard einsetze
also zb es sind 2 links gegeben.
www.google.de/wasweißich
www.google.de/dasweißichnet

der sollalle kopieren die dem muster entsprechen
www.google.de/*

wenn das fuktioniert

mfg xe0n

marabu 17. Dez 2005 16:33

Re: Memo nach bestimmtem LINKS durchsuchen.
 
Hallo xe0n,

was ist das für ein Text, den du nach Links untersuchen willst? Handelt es sich dabei zufällig um den Quelltext einer Web-Seite?

Grüße vom marabu

Khabarakh 17. Dez 2005 16:44

Re: Memo nach bestimmtem LINKS durchsuchen.
 
Am einfachsten (wenn man sie dann mal beherrscht) wären IMO Regular Expressions, in Delphi lassen sie sich über zusätzliche Packages nutzen. Für einen einfachen Highlighter (nur www) würde schon
Code:
www\.[\S]+
reichen.

[add]Um auch ein http zuzulassen:
Code:
(http://)?www\.[\S]+
Spätestens hier wird eine pure Delphi-Lösung mit Pos und Co. zu einem ziemlichen Gefummel.
Bessere und dadurch etwas komplexere RegExprs für Links lassen sich schnell im Internet finden.
[/add]

xe0n 17. Dez 2005 18:13

Re: Memo nach bestimmtem LINKS durchsuchen.
 
hi also ich habs jetzt raus bekommen

ja es handelt sich um einen seitenquelltext
was genau ist uninterressant^^
da der quelltext im memo ist brauch ich nur noch die liks zu suche
nach einigen stunde recherche bin ich auf diese gestoßen ^^
diesen findet links und schreibt sie in eine listbox PERFECT für mich :coder2:

:arrow: hier das script:

Delphi-Quellcode:
{
  For this tip you need Memo1, ListBox1, Label1, Button1.

  Für diesen Tip braucht man ein Memo1, eine ListBox1,
  ein Label1 und einen Button1.
}

procedure TForm1.Button1Click(Sender: TObject);
var
  i, p: Integer;
  s: string;
begin
  ListBox1.Clear;
  for i := 0 to Memo1.Lines.Count - 1 do
  begin
    if Pos('http://', Memo1.Lines.Strings[i]) > 0 then
    begin
      s := '';
      {If the current line contains a "http://", read on until a space is found

       Die aktuelle Zeile wird nach der Zeichenfolge "http://" durchsucht
       und bei Erfolg ab der gefundenen Position ausgelesen, bis ein
       Leerzeichen auftritt...}

      for p := Pos('http://', Memo1.Lines.Strings[i]) to
        Length(Memo1.Lines.Strings[i]) do
        if Memo1.Lines.Strings[i][p] <> ' ' then
          s := s + Memo1.Lines.Strings[i][p]
      else
        break;

       {Remove some characters if address doesn't end with a space

       Falls die gefundene Adresse nicht mit einem Leerzeichen abschließt,
       werden hier noch anhängende Textzeichen entfernt...}

      while Pos(s[Length(s)], '..;!")]}?''>') > 0 do
        Delete(s, Length(s), 1);
      // Add the Address to the list...
      //Gefundene Adresse in die Liste aufnehmen...
      ListBox1.Items.Add(s);
    end;
  end;

  // Show the number of Addresses in Label1
  // Die Zahl der gefundenen Adressen in Label1 anzeigen...

  if ListBox1.Items.Count > 0 then
    label1.Caption := IntToStr(ListBox1.Items.Count) +
      ' Adresse(n) gefunden.'
  else
    label1.Caption := 'Keine Adresse gefunden.';
end;
von meiner lieblingsseite :mrgreen: :mrgreen: :mrgreen: http://www.swissdelphicenter.ch

mfg xe0n

p.s an alle die so schnell helfen wollten :-D :-D :-D

marabu 17. Dez 2005 19:27

Re: Memo nach bestimmtem LINKS durchsuchen.
 
Hallo xe0n,

schön, dass du den für dich passenden Code gefunden hast. Ich lasse mir die Links lieber vom HTML Parser geben und das sieht dann so oder ähnlich aus:

Delphi-Quellcode:
procedure ExtractLinks(doc: IHTMLDocument2; s: TStrings);
var
  all: IHTMLElementCollection;
  e: IHTMLElement;
  i: integer;
  info: TStrings;
  url: Variant;
begin
  info := TStringList.Create;
  all := doc.all;
  for i := 0 to Pred(all.length) do
  begin
    e := all.item(i, 0) as IHTMLElement;
    url := e.getAttribute('href', 0);
    if not VarIsNull(url) then
    begin
      info.Add(e.innerText);
      info.Add(url);
      info.Add(e.tagName);
      s.Add(info.CommaText);
      info.Clear;
    end;
  end;
  info.Free;
end;
Im Gegensatz zu deinem Code "aus der Schweiz" werden damit auch relative Links gefunden, wobei ich gleich noch die Informationen mit einsammle, die der FireFox in seiner PageInfo unter Links anbietet.

Grüße vom marabu

MisterNiceGuy 5. Okt 2008 13:00

Re: Memo nach bestimmtem LINKS durchsuchen.
 
Gibts ne Möglichkeit alle Links als absolute Links anzuzuzeigen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:43 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