Entwickler-Ecke

Internet / Netzwerk - Indy Pop3...


Leathl - Mi 01.01.03 19:46
Titel: Indy Pop3...
---


Millo - Mi 01.01.03 21:23

Moin,

Das sollte eigentlich funktionieren. Welcher Fehler kommt den genau?
Die NMPOP3 findest du unter der Registerkarte FastNet.


Leathl - Mi 01.01.03 21:34

---


Millo - Mi 01.01.03 23:38

Tja so recht weis ich auch nicht, ich kenn den Fehler noch ,hatte ich auch ein paar mal aber es felt mir nicht ein wo.
Komisch is das er nicht auftritt wenn du die Parameter direkt übergibst.
Ich hab das ganze jetzt mal asuprobiert und bei mir ging es ohne Problem
Hier ist mal der Code:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
var Index:Integer;
begin
  idPop31.Host := Edit1.Text;
  idPop31.UserId := Edit2.Text;
  idPop31.Password := Edit3.Text;
  idPop31.Port := 110;
  idPop31.Connect;

  if Form1.idpop31.CheckMessages > 0 then
  begin
    For Index := 1 to Form1.idPOP31.CheckMessages do
    begin
      ListBox1.Clear;
      idPOP31.RetrieveHeader(intIndex, Form1.IdMessage1);
      ListBox1.Items.Add('Account:');
      ListBox1.Items.Add(Form1.IdMessage1.Subject);
      ListBox1.Items.Add(Form1.IdMessage1.From.Text);
    end;
  end
  else
    ShowMessage('Keine Nachrichten');
end;

Ich hab auch mal die Ausgabe mit rein gemacht falls du da was vergessen hast. Bei fragen einfach fragen.


Leathl - Do 02.01.03 00:16

---


Millo - Do 02.01.03 00:39

moin,

So ich hab den Code etwas vereinfacht und getestet bei mir ging alles soweit ich hab sonst auch keine Ahnung mehr woran es noch lieger könnte.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
procedure TForm1.Button1Click(Sender: TObject);
begin
  try
    IdPOP31.Host:= Edit1.Text;
    IdPOP31.Userid:= Edit2.Text;
    IdPOP31.Password:= Edit3.Text;
    IdPOP31.Port:= 110;
    IdPOP31.Connect;
  except
    ShowMessage('Fehler passiert');
  end;

  if IdPOP31.CheckMessages > 0 then
  begin
    ListBox1.Items.Add(IntToStr(IdPOP31.CheckMessages)+' Neue Nachrichten vorhanden...');
    ListBox1.Items.Add(IntToStr(IdPOP31.RetrieveMailBoxSize div 1024)+'KByte(s) belegt...');
  end
  else
    ListBox1.Items.Add('Keine neuen Nachrichten vorhanden...');

  IdPOP31.Disconnect;
end;


TIP: Mit dem Try except Block kannst du auf Fehler reagieren ist bei solchen Sachen immer ganz gut das rein zu machen.


Leathl - Do 02.01.03 01:01

---


Millo - Do 02.01.03 03:02

MMHHHH...

Naja ob man die NMPOP3 runterladen kann weiss ich nicht aber bei Torry gibs nen paar gute spezielle E-Mail Komponenten.

PS: Würd mich echt mal interresieren warum das bei dir nicht läuft


BungeeBug - Do 02.01.03 11:41

Hi du .... erst mal musst ich wieder meckern ... schreib doch mal den Code vernünftig ... mit eingerückten Codeblöcken ... standart Befehle (WHILE...DO ; WITH ... DO ; IF ... THEN ...) immer GROSS usw ...


Leathl hat folgendes geschrieben:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Button1Click(Sender: TObject);
begin
IdPOP31.Host:= Edit1.Text;
IdPOP31.Username:= Edit2.Text;
IdPOP31.Password:= Edit3.Text;
IdPOP31.Port:= 110;
IdPOP31.Connect;
if Form1.IdPOP31.CheckMessages > 0 then
==>BEGIN<==
ListBox1.Items.Add('Neue Nachricht(en) vorhanden...');
ListBox1.Items.Add(IntToStr(IdPOP31.RetrieveMailBoxSize div 1024)+'KByte(s) belegt...')
==>END<==
else
==>BEGIN<==
ListBox1.Items.Add('Keine neuen Nachrichten vorhanden...');
IdPOP31.Disconnect;
==>END;<==
end;


so hab ichs und ich entdecke auf die schnelle auch keine fehler oder?
dann sacht er immer END erwartet aber ELSE gefunden :(
==> Du musst (so weit ich das mitbekommen habe) einen IF THEN ELSE - Block so auf bauen

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
    IF <Argument> THEN
      BEGIN
        <Befehle>
       END
     ELSE
       BEGIN
         <Befehle>
       END;
      END;

da sonst nur immer der Befehl direkt hinter den THEN bzw ESLE Ausgefürt wird (der rest wird IMMER auch wenn die Bedingung zutrifft /bzw NICHT zutrifft ausgefürt ... das kann zu Fehlern führen<==


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:
30:
31:
procedure TForm1.Button1Click(Sender: TObject);
begin
IdPOP31.Host:= Edit1.Text;
IdPOP31.Username:= Edit2.Text;
IdPOP31.Password:= Edit3.Text;
IdPOP31.Port:= 110;
IdPOP31.Connect;
if IdPOP31.CheckMessages > 0 then
ListBox1.Items.Add('Neue Nachricht(en) vorhanden...');
ListBox1.Items.Add(IntToStr(IdPOP31.RetrieveMailBoxSize div 1024)+'KByte(s) belegt...');
if IdPOP31.CheckMessages = 2 then
ListBox1.Items.Add('2 Nachrichten vorhanden...');
ListBox1.Items.Add(IntToStr(IdPOP31.RetrieveMailBoxSize div 1024)+'KByte(s) belegt...');
if IdPOP31.CheckMessages = 3 then
ListBox1.Items.Add('3 Nachrichten vorhanden...');
ListBox1.Items.Add(IntToStr(IdPOP31.RetrieveMailBoxSize div 1024)+'KByte(s) belegt...');
if IdPOP31.CheckMessages = 4 then
ListBox1.Items.Add('4 Nachrichten vorhanden...');
ListBox1.Items.Add(IntToStr(IdPOP31.RetrieveMailBoxSize div 1024)+'KByte(s) belegt...');
if IdPOP31.CheckMessages = 5 then
ListBox1.Items.Add('5 Nachrichten vorhanden...');
ListBox1.Items.Add(IntToStr(IdPOP31.RetrieveMailBoxSize div 1024)+'KByte(s) belegt...');
if IdPOP31.CheckMessages > 5 then
ListBox1.Items.Add('Mehr als 5 Nachrichten vorhanden...');
ListBox1.Items.Add(IntToStr(IdPOP31.RetrieveMailBoxSize div 1024)+'KByte(s) belegt...');
if IdPOP31.CheckMessages = 0 then
ListBox1.Items.Add('Keine neuen Nachrichten vorhanden...');
if IdPOP31.CheckMessages = 0 then
ListBox1.Items.Add('Keine neuen Nachrichten vorhanden...');
IdPOP31.Disconnect;
end;

Auch hier wieder ... Codeblöcke einrücken ... sonst kann mans nur schlecht bzw gernicht lesen und verstehen
so funzt alles, ausser, dass der fehler kommt :(



Ich hoffe ich konnte dir helfen, und nicht böse sein weil ich gemeckert hab :)
MfG BungeeBug