Autor Beitrag
St. Janos
Hält's aus hier
Beiträge: 3


D7 Ent
BeitragVerfasst: So 26.12.04 05:20 
heyho,
ich hab heut erstmal ne bissel mit der POP3 Komponente von Indy rumprobiert. Aber mein Program friert momentan ein, wenn ich auf ein Pop3 Konto connecte, während schon ein weiterer Benutzer eingeloggt ist. Ist auch logisch, nach Spezifikation des Pop3 Protokolls: Da auf ein Konto ja nur eine Verbindung zur Zeit statt finden darf. Ich habe das ganze dann über ne Exception abgefangen.
Und hier friert das Programm sich ein. Und zwa ab dem klicken auf Verbinden bis zur Ausgabe der Exception.
Ich würde das einfrieren nun gerne verhindern. Habe in den OnWork meines IdPOP3 über den Objektinspektor auch des Application.ProcessMessages gesetzt, doch funzt es nicht.
Ich benutze keine IdAntifreeze Komponente, da ich gelesen habe das diese auch nur in bestimmten Zeitabständen ein Application.ProcessMessages ausführt.
Ich habe auch mal zu testzwecken die IdAntifreeze Komponente eingesetzt. Damit friert das ganze nicht mehr ein! Würde diese aber nur ungern verwenden, denn selbst ist der mann:)
Um auf das Problem zurück zu kommen: Was mach ich falsch?
Schon aus reiner Neugierde & Interesse würd mich mein fehler beim setzen des Application.ProcessMessages interessieren:)

Hier mal der gesamte Quellcode. Ist momentan nur zum testen gedacht:

ausblenden volle Höhe 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:
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:
50:
51:
52:
53:
54:
55:
56:
57:
58:
unit u_main; 

interface 

uses 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, 
  IdTCPClient, IdMessageClient, IdPOP3, IdException; 

type 
  TPopDown = class(TForm) 
    POP: TIdPOP3; 
    btn_connect: TButton; 
    procedure btn_connectClick(Sender: TObject); 
    procedure POPWork(Sender: TObject; AWorkMode: TWorkMode; 
      const AWorkCount: Integer); 
  private 
    { Private-Deklarationen } 
  public 
    { Public-Deklarationen } 
  end; 

var 
  PopDown: TPopDown; 

implementation 

{$R *.dfm} 

procedure TPopDown.btn_connectClick(Sender: TObject); 
begin 
  POP.Host := '127.0.0.1'; 
  POP.Port := 110; 
  POP.Username := 'root'; 
  POP.Password := ''; 
  try 
    POP.Connect(400); 
  except 
    on E:EIdProtocolReplyError do 
      showmessage(E.Message); 
    else 
      showmessage('Irgendwas'); 
  end; 
  if POP.connected then 
    begin 
      showmessage('Connected successfully'); 
      POP.Disconnect; 
      showmessage('Connection closed'); 
    end; 
end; 

procedure TPopDown.POPWork(Sender: TObject; AWorkMode: TWorkMode; 
  const AWorkCount: Integer); 
begin 
  Application.ProcessMessages; 
end; 

end.


hippe-di-hop
janos

Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt.