Hallo an alle DPler,
habe ein Problem, mit welchem ich mich noch nie so beschäfftigt hab und würde mal gerne eine Art BrainStorming durchführen mit eurer Hilf. Die Aufgabe ist ein Fehler Protokoll zu erstellen. Ich habe mehrere Komponenten, die ich in Klassen kapsel. Möchte mich hier auf eine Klasse Tische begrenzen. Diese führt mehrere interne Prüfungen durch (z.B. ist die benötigte
DLL vorhanden, ist der Tisch angeschlossen(gibt es einen ComPort, der mit dem Tisch kommuniziert), ...). Wenn ein Fehler auftritt möchte ich jetzt in meinem Hauptprogramm diesen detektieren. Eine Möglichkeit ist ein Event. Habe mich hier auch schon schlau gemacht und folgendes:
Delphi-Quellcode:
type
TNameDeinesEventTypes = procedure(Sender: TObject; AParameterXYZ: String) of Object;
TDeineKlasse = class(TIrgendwas)
[...]
fDeinEvent: TNameDeinesEventTypes;
[...]
property OnDeinEvent: TNameDeinesEventTypes read fDeinEvent write fDeinEvent;
[...]
end;
implementation
[...]
procedure TDeineKlasse.LoeseEventAus(MitZuGebenderParameter);
begin
if Assigned(fDeinEvent) then
fDeinEvent(Self, MitZuGebenderParameter);
end;
Dies ist nicht auf meinem eigenen Mist gewachsen sondern wurde so übernommen von folgendem Threat:
OriginalThreat für den Delphicode
Zu dieser Variante ergeben sich jetzt folgende Fragen:
1.) Wenn die Tisch-Klasse in einer extra
Unit liegt und mein Hauptprogramm in einer weiteren, wo sollte ich dieses Event reinschreiben? Logisch wäre sicherlich in die Klasse, allerdings hier schließt auch gleich meine 2.) Frage von mir an, aber wie kommuniziert dies dann mit meinem Hauptprogramm? Hierbei meine ich einen sicheren Zugriff von Hauptprogramm auf den eventuell erstellten Fehlercode in der Klasse und einem eventuell sich änderenden Fehlerwert in der Klasse (es werden ja mehrere Proceduren hintereinander durchgeführt, die diesen Fehlercode ändern können.
2.) leider hab ich noch nirgendswo mal gefunden, wie die "Event-Procedure" wirklich dargestellt wird. Für mich als jemand, der sowas noch nicht wirklich benutz hat, wäre es logisch, dass im Implementationsteil irgendwo steht:
Delphi-Quellcode:
procedure TDeineKlasse.fDeinEvent(Sender: TObject; AParameterXYZ: String) of Object;
begin
...
end;
3.) Habt ihr vieleicht bessere Vorschläge mit Lösungsansätzen, wie ich vieleicht diese Fehlerbehandlung am besten durchführen kann. Leider fehlen mir hier noch das Verständnis für Möglichkeiten (ohne dass es zu einer Spagetti-Programmierung oder weiteren Fehlern führt) da ich bisher soetwas nie benutzt habe.
Vieleich hat jemand mal beispielhaft einen Code.
Vielen Dank
BAMatze