Einzelnen Beitrag anzeigen

heribert

Registriert seit: 5. Jun 2005
18 Beiträge
 
#1

pop3abfrage + progressbar -> fehler

  Alt 5. Jun 2005, 17:01
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;
  Mit Zitat antworten Zitat