AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Variablen einer Klasse auslesen

Ein Thema von Timmyew · begonnen am 10. Mai 2021 · letzter Beitrag vom 10. Mai 2021
Antwort Antwort
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.312 Beiträge
 
Delphi 12 Athens
 
#1

AW: Variablen einer Klasse auslesen

  Alt 10. Mai 2021, 09:41
Interessehalber mal eine Frage:

Was machst du, wenn du die Variable hast? Du müsstest dich ja irgendwie einklinken. Das Event auf deine Klasse umleiten und dann selber das Event aufrufen. Oder?
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Timmyew

Registriert seit: 6. Jan 2020
7 Beiträge
 
#2

AW: Variablen einer Klasse auslesen

  Alt 10. Mai 2021, 09:49
Ja das tue ich.

Die Events werden in einer Dictionary gespeichert.
Beim ausführen eines Events wird die in der Klasse programmierte TNotify Methode aufgerufen und führt dann das eigentliche Event aus.
Damit bin ich in der Lage die Zeitmessung um das Event drumherum zu bauen ohne dieses in das eigentlichen Programm rein zu programmieren.
Damit Spare ich mir viel Zeit und habe eine schöne Analyse meines Programms.

Geändert von Timmyew (10. Mai 2021 um 09:51 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.213 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Variablen einer Klasse auslesen

  Alt 10. Mai 2021, 10:00
Gibt es einen Grund weshalb du keinen üblichen "Profiler" dafür verwendest?

Zu Fuß umsetzen lässt sich das über den Kram den man in System.Rtti findet: Hier kannst du eine TVirtualMethodInterceptor nehmen und bei einer Instanz deiner Klasse vor, nach und im Exception-Fall etwas tun (z.B. Zeiten loggen). Wie der Name schon sagt lässt sich das nur mit virtuellen Methoden umsetzen.

Falls es dir wirklich, wie du ja eigentlich sagst, darum geht, alle Felder zu belegen die mit "On..." beginnen und vom Typ TNotifyEvent sind ist das auch möglich, aber noch fummeliger. Auch hier findet man alles in System.Rtti .
  Mit Zitat antworten Zitat
Timmyew

Registriert seit: 6. Jan 2020
7 Beiträge
 
#4

AW: Variablen einer Klasse auslesen

  Alt 10. Mai 2021, 10:05
Der Grund ist, dass ich noch in der Ausbildung zum FAAE bin und daher noch nicht so erfahren bin

Ich konnte bei meinen Recherchen leider nichts finden und habe deswegen diesen Beitrag eröffnet ^^.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.213 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Variablen einer Klasse auslesen

  Alt 10. Mai 2021, 10:19
Alles klar 😉

Was du dir vorgenommen hast ist aber auch wirklich nicht trivial. Wenn du von "alle Aktionen" sprichst, dann meinst du wahrscheinlich die grafischen Elemente (TForm, TButton), oder? Wenn ja, das will tatsächlich keiner von Hand machen.

Du musst aber auch davon ausgehen, dass ebendiese TNotifyEvents schon belegt sind (ein TButton.OnClick, ein TForm.OnResize) weil da schonmal jemand was reinprogrammiert hat. In dem Fall musst du nehmen was im jeweiligen Event drinsteht, das dir wo wegspeichern, das Event auf deine eigene Routine zeigen lassen, das passende weggespeicherte finden, aufrufen, die Zeit messen, einen eventuellen Fehlerfall protokollieren, und das vernünftig wegloggen. Und dafür auch nicht zu lange brauchen, denn sonst verfälscht du auch die Ergebnisse, wie Zeitmessung. Ich glaube so etwas macht man auch nicht einmal an zwei Tagen nebenher...

Mir ist noch nicht klar wie man damit "Fehler" findet. Bislang hört es sich nach reiner Performance-Messung an. Kann es sein dass du nur die Exceptions loggen möchtest, statt der wenig hilfreichen Messageboxen auf dem Bildschirm?
  Mit Zitat antworten Zitat
Timmyew

Registriert seit: 6. Jan 2020
7 Beiträge
 
#6

AW: Variablen einer Klasse auslesen

  Alt 10. Mai 2021, 10:29
Jap, damit sind alle TControls gemeint.

Das loggen übernimmt in dem Fall die Zeitmessung ^^.

Die Zeitmessungklasse habe ich schon programmiert. (Diese funktioniert tadellos)
Diese verwende ich in der neuen Klasse auch.
Ja du hast Recht, die Klasse dient dazu die Performance zu Messen.

Allerdings ist mir vor einigen Wochen ein Bug aufgefallen, der die Software scheinbar willkürlich zum hängen bringt. (2-10 Sekunden)
Dabei wäre es sehr hilfreich gewesen, wenn man solch eine Klasse gehabt hätte.
Schließlich konnte ich den Fehler mithilfe der Zeitmessung ausfindig machen und beheben.

Die Klasse dient dann so wie du es bereits beschrieben hast dazu, die Performance zu messen und in seltenen Fällen Fehler ausfindig zu machen.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.767 Beiträge
 
Delphi 12 Athens
 
#7

AW: Variablen einer Klasse auslesen

  Alt 10. Mai 2021, 11:14
Du musst aber auch davon ausgehen, dass ebendiese TNotifyEvents schon belegt sind (ein TButton.OnClick, ein TForm.OnResize) weil da schonmal jemand was reinprogrammiert hat. In dem Fall musst du nehmen was im jeweiligen Event drinsteht, das dir wo wegspeichern, das Event auf deine eigene Routine zeigen lassen
Das könnte schwierig werden, wenn Events dynamisch im Programm zugewiesen werden bzw. Komponenten dynamisch erzeugt werden.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz