Pack den text in eine Variable vom Typ PChar und geh dann durch, in dem du den Zeiger inkrementierst.
Folgender Code extrahiert E-Mail-Adressen aus einen Text:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| procedure TForm1.GetEMails; var MailAddy: String; p: PChar; Start: PChar; begin p := PChar(Memo1.Text); while p^ <> #0 do begin { '@' gefunden } if p^ = #64 then begin { zurückgehen bis ein Leerzeichen oder Zeilenumbruch kommt } while (p^ <> #32) and (p^ <> #13) and (p^ <> #10) do Dec(p); { Anfang gefunden -> merken } Start := p+1; { eine Schritt nach vorne gehen, sonst hängen wir } p := p+1; { wieder nach vorne gehen bis zum nächsten Leerzeichen } while (p^ <> #32) do Inc(p); { gefunden } SetString(MailAddy, Start, p-Start); ListBox1.Items.Add(MailAddy); end; Inc(p); end; end; |
Ist schon älter. keien Ahnung für wen ich das mal gemacht habe.