Entwickler-Ecke
Sonstiges (Delphi) - ASCII Text Parsen
Aya - Mi 29.01.03 01:01
Titel: ASCII Text Parsen
Hi,
gibt es eine schnellere Methode um ASCII Text zu Parsen als mit Copy(), Pos() und Delete()...??
Au'revoir,
Aya
Delete - Mi 29.01.03 01:34
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.
Aya - Mi 29.01.03 01:36
Zeiger Inkremen... was??? :oops:
Delete - Mi 29.01.03 01:39
inkrementieren, erhöhen. Was meinst du, woher der Name von Inc() herkommt.
Aya - Mi 29.01.03 01:43
achsoooo...... :oops: :oops: :oops:
matze - Mi 29.01.03 13:24
also bevor du mit POS() copy() usw rumstöpelst würd ich das so machen wie luckie in seinem besp test gezeigt hat.
wenn du allerdings nur wörter suchst bist du mit pos() recht gut bedient !!!
Sivar - Mi 29.01.03 13:30
@Luckie:
Beim Überfliegen des Codes ist mir was aufgefallen:
Quelltext
1: 2: 3: 4: 5:
| ... { wieder nach vorne gehen bis zum nächsten Leerzeichen } while (p^ <> #32) do Inc(p); ... |
Wenn die E-Mail jetzt aber am Ende des Textes ist, gibt es evtl. kein #32 mehr!? An dieser Stelle sollte auch auf #0 abgefragt werden.
Gruß
Sivar
Delete - Mi 29.01.03 13:32
Der Code war nur für jemanden schnell zusammen gekloppt. :roll:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!