![]() |
Text durchsuchen
Hallo,
ich möchte ein Memo-Textfeld , in das eine Textdatei geladen wurde, nach einem Zeichen durchsuchen. Funktioniert auch , aber immer nur ein Zeichen. Leider findet er immer nur das erste Zeichen und ich blick leider nicht durch ,wie man die Suche fortsetzen kann. :wall: Es sollen alle im Text befindlichen Zeichen gefunden werden, ich möchte damit die Email-Adressen im Text speichern
Delphi-Quellcode:
memo1.Lines.LoadFromFile(Datei1);
a := pos('@',memo1.text); memo2.lines.strings[i] := inttostr(a); . . |
Re: Text durchsuchen
Hi,
schau Dir mal PosEx an. |
Re: Text durchsuchen
Hallo!
Das verstehe ich nicht: Hast Du eine Textdatei, in der irgendwo E-Mailadressen stehen und die möchtest Du heraussuchen? Oder nur die Positionen des @? Oder was? |
Re: Text durchsuchen
![]() ![]() |
Re: Text durchsuchen
Zitat:
Ich hab mit Pos immer nur die erste Email bekommen, aber mit PosEx funktioniert es jetzt ! |
Re: Text durchsuchen
....mit diesem Code hab ich alle Emails aus dem Text rausgefiltert.
Dummerweise erhalte ich bei den Emails immer noch ein Anführungszeichen " an die Emails drangehängt. Delphi gibt mir immer wieder neue Rätsel auf :wall: Dieses Zeichen ist doch gar nicht zulässig ...ich kann keinen Fehler finden. Frage an die Experten im Forum , wo ist da ein Fehler ????
Delphi-Quellcode:
procedure TForm2.ExtracteMail (aValue : string);
var at,p :integer;Mytext:String; start : integer; stop : integer; permittedChar : SET of Char; begin p:=1;i:=0; repeat at:=0; permittedChar := ['a'..'z','0'..'9','.','_','-']; aValue := AnsiLowerCase(aValue); at := Posex('@',aValue,p); if at = 0 then exit; // wenn at = 0 dann wurde keine Email gefunden p:=at+1; start := at-1; while (aValue[start] in permittedChar) and (start > 0) do begin Dec (start) end; stop := at+1; while (aValue[stop] in permittedChar) and (stop < length(aValue)) do begin Inc (stop) end; Mytext:= Copy (aValue,start+1,(stop-start)); unit13.Form13.memo2.Lines.Add(mytext) ; i:=i+1; //zählt die gefundenen Emails until at=0; end; |
Re: Text durchsuchen
Hi!
Wie sieht denn dein Ausgangstext aus und wie genau das Ergebnis? Und wie der Aufruf? Ciao, Frederic |
Re: Text durchsuchen
...der Aufruf erfolgt so....
Delphi-Quellcode:
die Datei hat folgenden Inhalt (ich die tatsächlichen Emails etwas abgeändert, dient nur zu Testzwecken ):
procedure TForm2.Button7Click(Sender: TObject);
var Datei1:String; begin if opendialog1.Execute then begin Datei1:=opendialog1.FileName; unit13.Form13.Show; memo1.Lines.LoadFromFile(Datei1); ExtracteMail (Memo1.text); unit13.form13.panel1.Caption:= inttostr(i)+' '+'gefundenen Email-Adressen'; unit13.Form13.Caption:= Datei1; end; end; thomasf.ppppppp@mail.de bbbbbbbbbbfffffffffrrrrrttttttt´+#.mx<thomasf_gggg g@mail.de"kkkkkkkkkkk thomasf_ttttzzzz@mail.com hlfootjhjkgggggggggggggggsssssssssssss"""""ÄÄÄÄÄ thomasf_ggghhhrrr@t-online.de ÄGGGGGGG das Ergebnis schaut dann so aus : thomasf.ppppppp@mail.de thomasf_ggggg@mail.de" <---------- Anführungszeichen :wall: thomasf_ttttzzzz@mail.com thomasf_ggghhhrrr@t-online.de bis auf das Anführungszeichen funktioniert alles einwandfrei |
Re: Text durchsuchen
Hi!
Du liest vermutlich nach hinten ein Zeichen zu viel, was bei den anderen nicht auffällt, weil hier das folgende Zeichen ein Leerzeichen ist! Ciao, Frederic |
Re: Text durchsuchen
...hab ich auch schon gedacht
wenn ich aber 1 Zeichen abziehe, dann fehlt bei manchen Emails ein Zeichen
Delphi-Quellcode:
Datei
....
.... Mytext:= Copy (aValue,start+1,(stop-start-1)); .... thomasf_tttggg@mail.com thomasf_rrrrrr@t-mail.de thomasf.rrrrrrrwwwww@mail.de Ergebnis : thomasf_tttggg@mail.com thomasf_rrrrrr@t-mail.de thomasf.rrrrrrrwwwww@mail.d <-------------- ein Zeichen fehlt !!!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 Uhr. |
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