Hi
Zunächst einmal musst du deinen Text aus der Datei laden. Dazu benötigst du den vollständigen Dateipfad, beispielsweise 'C:\Dokumente und Einstellungen\..\Desktop\Emails.txt'. Wenn sich die Datei nicht an einem festen Ort befindet, musst du ihn entweder mit einem TOpenTextFileDialog finden, oder aber relativ zu einem bestimmten Ordner(Pfad zu Eigene Dateien, .. lässt sich ermitteln -> Suche) danach suchen. Nun verwendest du
TStringlist.LoadFromFile, um an den Textinhalt zu kommen.
Da doch nicht immer ganz klar ist, welche Schritte nun genau benötigt werden, wäre demnächst eine kleine Liste der dir Schwierigkeiten bereitenden Teilaufgaben gut
Wenn du wirklich vor nicht allzu langer Zeit zu Programmieren begonnen hast und noch keine Zählschleife selbst schreiben kannst, rate ich dir doch nochmal zu einem oder zwei Tutorials. Den hier mal besucht?
Crashkurs von Christian S..
Wenn dir aber die generellen Möglichkeiten, wie etwa eine Schleife, bereits in ein paar Anwendungsfällen bekannt sind, solltest du das Folgende auf jeden Fall nicht übernehmen, sondern lieber selbst entwickeln:
Um das @ zu finden, gehst du den String aus der Textdatei mit einer Zählschleife durch und gehst bei Erfolg mit zwei weiteren Zählschelifen jeweils nach links und rechts. Am besten, du liest meinen Code und deaktiviert mal schnell die Tasten [Strg]+[c]. Wenn du ihn verstanden hast, schreibst du alles einmal selbst und vergleichst am Ende - so lernst du wahrscheinlich am meißten dabei
Delphi-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:
| procedure ExtractEmailAdresses(const S: String); var aAdressen: TStringlist; aAnfang, aEnde: Integer; aLen: Integer; i: Integer; begin aAdressen := TStringlist.Create; aLen := Length(S); i := aLen; while i <> 0 do begin if S[i] = '@' then begin aEnde := i; while (S[aEnde] <> '.') and (aEnde <> aLen) do Inc(aEnde); while (S[i] <> '"') and (i <> 1) do Dec(i); aAdressen.Append(Copy(S, i, aEnde)); end; Dec(i); end; aAdressen.SaveToFile(); aAdressen.Free; end; |
Wenn du dann noch Unterscheide zwischen unseren Versionen finden kannst, entfernst du diese am beten nicht gleich, sondern postest mal deinen Quelltext. Dann können wir dir auch genau erklären, warum an einer bestimmten Stelle nun der Check auf (i <> 1) kommt, und nicht der auf 0, etc.
mfG,