AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Gewisse Stelle aus einem Text abspeichern.
Thema durchsuchen
Ansicht
Themen-Optionen

Gewisse Stelle aus einem Text abspeichern.

Ein Thema von CodenameCookie · begonnen am 8. Apr 2006 · letzter Beitrag vom 8. Apr 2006
Antwort Antwort
Benutzerbild von CodenameCookie
CodenameCookie

Registriert seit: 12. Mai 2005
87 Beiträge
 
Delphi 6 Personal
 
#1

Gewisse Stelle aus einem Text abspeichern.

  Alt 8. Apr 2006, 00:33
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
M.
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
504 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Gewisse Stelle aus einem Text abspeichern.

  Alt 8. Apr 2006, 01:07
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;
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Gewisse Stelle aus einem Text abspeichern.

  Alt 8. Apr 2006, 08:00
oder so

Delphi-Quellcode:
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]');
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Gewisse Stelle aus einem Text abspeichern.

  Alt 8. Apr 2006, 11:21
@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:
function ExtractURL (const aLink: string): string;
begin
  Result := Copy(aLink, Pos('"', aLink) + 1, MaxInt);
  Result := Copy(Result, 1, Pos('"', Result)-1);
end;
Vielleicht sollte man auch noch eine Überprüfung einbauen, ob überhaupt ein URL im String enthalten ist.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Gewisse Stelle aus einem Text abspeichern.

  Alt 8. Apr 2006, 15:00
Suche mal nach Hier im Forum suchenTRegex - 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
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#6

Re: Gewisse Stelle aus einem Text abspeichern.

  Alt 8. Apr 2006, 16:07
Ne andere Möglichkeit wäre ExplodeExplode(eigentlich nicht dafür gedacht, sollte aber funktionieren) oder TDivStrListTDivStrList(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 Hier im Forum suchenTRegEx...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Gewisse Stelle aus einem Text abspeichern.

  Alt 8. Apr 2006, 16:12
@Hawkeye219
Danke!

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Gewisse Stelle aus einem Text abspeichern.

  Alt 8. Apr 2006, 17:06
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:
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;
Grüße vom marabu
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 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