Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Text durchsuchen (https://www.delphipraxis.net/126860-text-durchsuchen.html)

Thomas F 3. Jan 2009 18:26


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);
.
.

Die Muhkuh 3. Jan 2009 18:27

Re: Text durchsuchen
 
Hi,

schau Dir mal PosEx an.

ULBE01 4. Jan 2009 12:54

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?

Andreas L. 4. Jan 2009 13:35

Re: Text durchsuchen
 
Reguläre Ausdrücke könntest du dir auch mal anschauen.

http://regexpstudio.com/TRegExpr/TRegExpr.html

Thomas F 4. Jan 2009 16:36

Re: Text durchsuchen
 
Zitat:

Zitat von ULBE01
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?

Ja, genau

Ich hab mit Pos immer nur die erste Email bekommen, aber mit PosEx funktioniert es jetzt !

Thomas F 5. Jan 2009 07:23

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;

fkerber 5. Jan 2009 07:31

Re: Text durchsuchen
 
Hi!

Wie sieht denn dein Ausgangstext aus und wie genau das Ergebnis?
Und wie der Aufruf?


Ciao, Frederic

Thomas F 5. Jan 2009 09:08

Re: Text durchsuchen
 
...der Aufruf erfolgt so....

Delphi-Quellcode:
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;
die Datei hat folgenden Inhalt (ich die tatsächlichen Emails etwas abgeändert, dient nur zu Testzwecken ):

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

fkerber 5. Jan 2009 09:10

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

Thomas F 5. Jan 2009 09:20

Re: Text durchsuchen
 
...hab ich auch schon gedacht

wenn ich aber 1 Zeichen abziehe, dann fehlt bei manchen Emails ein Zeichen

Delphi-Quellcode:
....
....
Mytext:= Copy (aValue,start+1,(stop-start-1));
....
Datei

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 11:33 Uhr.
Seite 1 von 3  1 23      

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