![]() |
pop3abfrage + progressbar -> fehler
hi, ich hab mir ein programm gecodet, dass sich zu einem pop3-server connectet und in ein listview alle namen von den vorhanden email-attachments schreibt. das klappt auch ganz gut, dann hab ich mir hier aus dem forum einen code für eine progressbar geholt, den man bei der indy pop3-komponente in den onwork-event schreibt. die funktioniert jetzt zwar, aber dafür zeigt das programm nur noch eine zeile an und gibt dann den fehler "listenindex überschreitet das maximum(2)" aus...
der code:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Pop3ServerName, Pop3ServerUser, Pop3ServerPassword: string; Pop3ServerPort, FMsgCount, FMailBoxSize, intindex, intindex2: integer; li: TListItem; begin IdPOP31.Host := Pop3ServerName; IdPOP31.Port := Pop3ServerPort; IdPOP31.Username := Pop3ServerUser; IdPOP31.Password := Pop3ServerPassword; IdPOP31.Connect; FMsgCount := IdPOP31.CheckMessages; FMailBoxSize := IdPOP31.RetrieveMailBoxSize div 1024; for intIndex := 1 to FMsgCount do begin IdPOP31.Retrieve(intIndex, IdMessage1); for intIndex2 := 0 to Pred(IdMessage1.MessageParts.Count) do begin if (IdMessage1.MessageParts.Items[intIndex2] is TIdAttachment) then begin li := ListView1.Items.Add; li.Caption := TIdAttachment(IdMessage1.MessageParts.Items[intIndex]).Filename; end; end; end; end; procedure TForm1.IdPOP31Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); begin ProgressBar1.Position:=AWorkCount; end; procedure TForm1.IdPOP31WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer); begin if AWorkMode = wmRead then Label4.Caption:='Downloading...' else Label4.Caption:='uploading Data'; ProgressBar1.Max:=51402; //ist nur zu testzwecken, da AWorkCountMax immer 0 war... end; procedure TForm1.IdPOP31WorkEnd(Sender: TObject; AWorkMode: TWorkMode); begin if AWorkMode = wmRead then Label4.Caption:='Download wurde beendet.' else Label4.Caption:='uploading complete'; end; |
Re: pop3abfrage + progressbar -> fehler
Hai heribert,
ich glaube hier benutzt Du die falsche "Schleifen-Variable":
Code:
Da müsste meine ich intIndex2 stehen.
procedure TForm1.Button1Click(Sender: TObject);
begin . . for intIndex := 1 to FMsgCount do begin IdPOP31.Retrieve(intIndex, IdMessage1); for intIndex2 := 0 to Pred(IdMessage1.MessageParts.Count) do begin if (IdMessage1.MessageParts.Items[intIndex2] is TIdAttachment) then begin li := ListView1.Items.Add; li.Caption := TIdAttachment(IdMessage1.MessageParts.Items[[b]intIndex[/b]]).Filename; ^^^^^^^^ end; end; end; end; |
Re: pop3abfrage + progressbar -> fehler
hmm, jo, jetz gehts zwar, aber jetzs teth da 2mal derselbe name untereinander... und das sind mit sicherheit 2 verschieden :?
|
Re: pop3abfrage + progressbar -> fehler
Hallo heribert,
ich weiß nicht wo du den Code gefunden hast, aber über den Fehler sind schon andere gestolpert:
Delphi-Quellcode:
Das muss so aussehen:
...
FMsgCount := IdPOP31.CheckMessages; for intIndex := 1 to FMsgCount do begin IdPOP31.Retrieve(intIndex, IdMessage1); ...
Delphi-Quellcode:
Grüße vom marabu
var
msgList: TStringList; msgNum: string; ... msgList := TStringList.Create; // soviel Zeit muss sein ... if not idPOP3.UIDL(msgList) then begin msgList.Free; Exit; end; for intIndex := 0 to msgList.Count - 1 do begin msgNum := msgList[intIndex]; SetLength(msgNum, Pos(' ', msgNum) - 1); IdPOP31.Retrieve(StrToInt(msgNum), IdMessage1); ... msgList.Free; |
Re: pop3abfrage + progressbar -> fehler
hmm, sorry, aber dein code macht bei mir nur ne access violation...
und den anderen code hab ich im übrigen aus der indy mailclient-demo... |
Re: pop3abfrage + progressbar -> fehler
Zitat:
|
Re: pop3abfrage + progressbar -> fehler
hmm, ich glaub, ich hab den fehler gefunden:
Delphi-Quellcode:
dumm, was? *g*
IdMessage1.Clear;
IdPOP31.RetrieveHeader(intIndex, IdMessage1); aber seltsam sits schon, dass das auch mal ohne das IdMessage1.Clear ging... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz