Hallo!
Hier erstmal der Quelltext in lesbarer Form, also richtig formatiert
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: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49:
| procedure TFrmMain.BtMaillisteClick (Sender: TObject); begin if (zZustand = cBereit) then Pop3Client.Socket.SendText ('LIST' + Chr(13) + Chr(10)) else MemStatus.Lines.Add ('Status: Client nicht bereit'); end; procedure TFrmMain.BtHolenClick (Sender: TObject); var i,j,k : integer; s,x : string; begin if (zZustand = cBereit) then begin if IdPop31.CheckMessages > 0 then begin Pop3Client.Socket.SendText ('RETR'); For i := 1 to IDPop31.CheckMessages do begin IDMessage1.Clear; IDpop31.Retrieve(i,IDMessage1);
s := '*popo*'; For j := 0 to length(s) do begin For k := 0 to length(s) do begin x := Copy(s,0, i-1) +uppercase(Copy(s, i, j))+ Copy(s,i+1,length(s)); if Pos(x, IdMessage1.Subject) > 0 then begin Listview2.Items.Add.Caption := IdMessage1.Subject; Listview2.Items[i-1-Listview1.Items.Count].SubItems.Add(IDMessage1.From.Address); Listview2.Items[i-1-Listview1.Items.Count].SubItems.Add(DateToStr(IDMessage1.Date)); end else begin Listview1.Items.Add.Caption := IdMessage1.Subject; Listview1.Items[i-1-Listview2.Items.Count].SubItems.Add(DateToStr(IDMessage1.Date)); Listview1.Items[i-1-Listview2.Items.Count].SubItems.Add(IDMessage1.From.Address); Listview1.Items[i-1-Listview2.Items.Count].SubItems.Add(IntToStr(IDpop31.RetrieveMsgSize(i) div 1024)+'kb'); Listview1.Items[i-1-Listview2.Items.Count].SubItems.Add(IdMessage1.MsgId); Listview1.Items[i-1-Listview2.Items.Count].SubItems.Add(IdMessage1.Body.Text); end; end; end; end; end; end; end; |
Nun zu Eurem Problem: Wenn ich das richtig sehe, sind die j- und die k-Schleife dazu da, jede Kombination aus Groß- und Kleinschriebung zu erkennen. Das Problem dabei ist, wenn im Betreff steht "PoPo", dann wird die Mail bei "popo" nicht als Spam erkannt und in die normalen Mails eingefügt, genauso bei "pOPO", "Popo", etc.
Ihr könnt aber viel einfacher vorgehen. Die Schleifen könnt Ihr Euch sparen, wenn Ihr es so macht:
Delphi-Quelltext
1: 2: 3: 4:
| lowerSubject := lowercase(IdMessage1.Subject); lowerX := lowercase(x); if Pos(lowerX, lowerSubject) > 0 then |
Ihr prüft also, ob ein vollständiges kleines Wort im vollständig kleinen Betreff steht. Damit sind die j- und die k-Schleife hinfällig. Für komplizierte Prüfungen solltet Ihr Euch mal
TREGEXP ansehen.
Grüße
Christian

Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".