Hallo,
mal ein ganz anderer Ansatz: Du könntest den kompletten String an bestimmten Trennzeichen auftrennen und die dazwischen liegenden Einträge bsp. in eine TStringList schreiben. Die gehst du durch und prüfst auf das @-Zeichen (falls dies zur Feststellung einer E-Mail-Adresse für dich ausreicht.
Da gibt es zum Beispiel diese Prozedur in der Code-Library:
Strings trennen.
Ein Aufruf könnte ungefähr so aussehen (ich habe das nur anhand des Beispiels aus der CL zusammengetippt):
Delphi-Quellcode:
procedure ShowEmails(const s: string); // s ist dein dein zu durchsuchender Text (Memo1.Text)
var
StrList, NewList: TStringlist;
i: Integer;
begin
StrList := TStringlist.Create;
NewList := TStringlist.Create;
try
// Hinzufügen aller Trennzeichen
StrList.Append(',');
StrList.Append(';');
StrList.Append('|');
StrList.Append('"');
StrList.Append(' ');
StrList.Append(#13#10);
DivideString(s, StrList, NewList);
// Prüfen auf eine E-Mail-Adresse
for i := 0 to NewList.Count - 1 do
begin
// E-Mail-Adressen ausgeben
if Pos('@', NewList[i]) > 0 then
ShowMessage(NewList[i]);
end;
finally
FreeAndNil(NewList);
FreeAndNil(StrList);
end;
end;
Wie gesagt, das ist komplett ungetestet, doch ich könnte mir vorstellen, dass es in der Art funktioniert.
Grüße, Matze