Einzelnen Beitrag anzeigen

BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#1

Event für Fehlercode-Übergabe

  Alt 20. Feb 2009, 10:28
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
  Mit Zitat antworten Zitat