Beides nicht sooooo schön.
@jaenicke:
Die Kommunikationsroutinen stehe in einer eigenständigen 'einfachen'
Unit ohne Formular, DataModule o.ä. und das sollte auch so bleiben.
1. weil ich die eigentlichen
COM-Routinen quasi autark haben will und 2. weil die Applikation mehrsprachig sein muss, die Übersetzungen dafür jedoch in/mit der MainForm verbunden sind. Die
Exception muss also von der
COM-
Unit "nach oben" durchgereicht und behandelt werden.
@Bernhard:
Das "Schmeissen" einer eigenen
Exception soll an einem zentralen Punkt erfolgen, weil ich bei der
COM-
Unit von aussen nicht nur die MasterFct aufrufen kann, sondern auch die ganzen SubFct. Die MasterFct bündelt das ganze nur zu einem zentralen Aufruf beim Erstkontakt mit dem Gerät, im weiteren Programmverlauf ist es aber auch nötig, die SubFct separat aufzurufen.
Vielleicht mal so ganz pauschal, wann meine
Exception geworfen werden soll.
Fall 1: Gerät antwortet nach einem Befehl vom Programm nicht in einer bestimmten Zeit => Timeout =>
Exception
Fall 2: Gerät antwortet nach einem Befehl vom Programm mit einem Fehlercode => Fehlercode auslesen =>
Exception
In einer zentralen
COM-Routine, durch die alle SubFct durch müssen, wird ein entsprechender Befehl an das Gerät geschickt und in einer repeat-until Schleife wird x Sek. auf Antwort vom Gerät gewartet. Tritt einer der beiden oben genannten Fälle ein, geht es in die 'COMErrorHandling' und hier wird je nach aufgetretenem Fehlerfall eine entsprechende
Exception geworfen. Tritt keiner der beiden Fälle auf, geht es zurück in die SubFct und die vom Gerät geschickten Daten werden ausgelesen&analysiert.