Autor Beitrag
avenger
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Di 19.05.09 13:45 
Ich benutze die dOPC Komponente von Kassl.de und habe folgendes Problem...

Auf meinem Testcomputer befinden sich eine Reihe von OPC Servern. Auch noch alte Simatic WinCC OPC Server die eigentlich schon deinstalliert worden sind die jedoch immer noch Registriert sind, jedoch kann bei diesen keine Verbindung aufgebaut werden. Nun moechten ich mich in einer for Schleife jeweils zu einem der Server verbinden:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
for i := 0 to dopcServerBrowser1.Count-1 do //for each Server in list
begin
try
OPCServer.ServerName  := dopcserverbrowser1[i].ServerName;
OPCServer.Active := true;
//...
finally
OPCServer.Active := false;
end;
end;

Jedoch kann nicht zu allen OPC Servern, die in der Liste sind eine Verbindung erstellt werden. Ist dies der Fall gibt die Komponente einen Fehler aus (unbekannter Fehler) bei
ausblenden Delphi-Quelltext
1:
OPCServer.Active := true;					
erstellt und in den finally Block gesprungen. Am Ende des finally Block terminiert das Programm auch obwohl die for Schleife noch nicht zu Ende gelaufen ist.

Gibt es eine Moeglichkeit VOR der Verbindung (OPCServer.Active := true;) zu ueberpruefen, ob ueberhaupt eine Verbindung moeglich ist?? (So dass man im Fehlerfall erst gar keine Verbindung zu erstellen versucht). Oder gibt es vielleicht eine Alternative wie man diesen Fehler abfangen kann ohne dass das Programm gleich terminiert?

Moderiert von user profile iconmatze: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: So 24.05.09 20:06 
Das scheint mir ja so, als ob der Server nicht möchte, dass man an seinen Verbindungseinstellungen rumarbeitet - also weder true noch false.
Und da ja die Exception beim false-setzen nicht abgefangen wird, ist ja klar, dass die Anwendung dort "zusammenkracht".
Also ich (als in diesem Gebiet noch unbewanderter) würde sagen, dass es am besten wäre, wenn Du nur den reinen Verbindungsversuch in einen Try-Block baust und wenn die Exception dabei auftritt, dann hat der Versuch wohl nicht geklappt und somit brauchst Du die Verbindung auch nicht mehr zurücksetzen.