Hi,
erstmal würde ich den Connect mit einem Timeout versehen !
Code:
GeneralC.Connect(5000); // 5 Sekunden
Zweitens, würde ich Dir dringenst empfehlen am am Anfang deiner Procedure den Timer auszuschalten und am Ende der Procedure den Timer wieder anzuschalten, vielleicht das ganze durch nen Try Finnally Block sichern.
Dann würde ich hingehen und Deinen Code etwas optimieren :
Code:
// .....
try
GeneralC.Connect(5000); // Timeout 5 Sek.
except
// just catch the
exception
end;
if GeneralC.connected then begin
// save disconnect
try
GeneralC.disconnect;
except
// just catch it
end;
kontakte[i] := tree2.Items.AddChildFirst(tree2.Items.Item[0],table1.fieldbyname('Name').Text);
end
else begin
// Offline
kontakte[i] := tree2.Items.AddChildFirst(tree2.Items.Item[1],table1.fieldbyname('Name').Text);
end;
end; // end vom For
if tree2.items.item[0].ChildCount > 0 then
tree2.items.item[0].Fullexpand;
if tree2.items.item[1].ChildCount > 0 then
tree2.items.item[1].Fullexpand;
Desweiteren würde ich mir noch Deinen "Online" und Deinen "Offline" Node in einer temporären Var speichern und nicht mit Item[0] und Item[1] arbeiten.
Gruß Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.