"verwaiste" Ereignisprocedur eines graphischen Elements

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

"verwaiste" Ereignisprocedur eines graphischen Elements

Beitrag von Aliobaba »

Hallo,

wenn man in einem Formular ein Element (Button, Memo-Feld, Edit-Feld) , mit dem Ereignisproceduren verbunden sind (onClick, onEnter, onKeyup ), entfernt, dann bleiben diese Ereignisproceduren als Code erhalten.
Gibt es eine Möglichkeit, solche Ereignisproceduren zu finden, deren graphisches Element bereits vom Formular entfernt worden ist und damit eigentlich ja nicht mehr angesprochen werden?
Ist es eigentlich sinnvoll, solche "verwaisten" Ereignisproceduren zu erhalten?

Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

u-boot
Beiträge: 306
Registriert: Do 9. Apr 2009, 10:10
OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 785..

Re: "verwaiste" Ereignisprocedur eines graphischen Elements

Beitrag von u-boot »

Aliobaba hat geschrieben:Ist es eigentlich sinnvoll, solche "verwaisten" Ereignisproceduren zu erhalten?


Meiner Ansicht nicht, wenn die Unit nur in einem Programm verwendet wird und die jeweilige Prozedur auch tatsächlich verwaist ist.
Da Prozeduren auch von ausserhalb einer unit aufgerufen werden können, lässt es Lazarus gerne erst mal stehen und überprüft das auch nicht. (so nach dem Motto: wer weiss schon, ob man das noch braucht.....)
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: "verwaiste" Ereignisprocedur eines graphischen Elements

Beitrag von Aliobaba »

Danke, u-boot! Das leuchtet mir ein und ist sicherlich sinnvoll.
Gibt es einen Trick, solche "einsamen" Proceduren "in einem Rutsch" zu finden?
Es bleibt wohl nur die Suchfunktion und dann schauen, wie oft der Eintrag im Quellcode gefunden wird, um anschließend zu überprüfen, ob sich das graphische Element nicht doch noch irgendwo "versteckt"?
(Ich gebe ja zu, mein Programmierstil ist ein wenig chaotisch und hat zusätzlich noch noch "Altlasten" von meinen ersten Programmierschritten)
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: "verwaiste" Ereignisprocedur eines graphischen Elements

Beitrag von af0815 »

Lazarus, Quelltext, Klick mit rechter Maus, 'Refactoring', dort 'leere Methoden' und man hat einen Überblick welche Methoden leer sind und kann sie auch gleich löschen lassen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: "verwaiste" Ereignisprocedur eines graphischen Elements

Beitrag von Aliobaba »

Danke, af0815!
So geht's!!!
Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: "verwaiste" Ereignisprocedur eines graphischen Elements

Beitrag von af0815 »

Es reicht wenn man nur einen Kommentar in der Prozedur einfügt und sie wird nicht mehr als leer angezeigt.

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: "verwaiste" Ereignisprocedur eines graphischen Elements

Beitrag von Aliobaba »

... dann haben wir uns vielleicht falsch verstanden; ich habe den Effekt dieses Befehls nicht genau kontrolliert.
Eigentlich meinte ich mit "verwaisten Proceduren" nicht die, bei denen keine Anweisung drin steht, obwohl es natürlich ausgesprochen nützlich ist, auch diese Proceduren schnell und einfach zu finden.
Ich meinte die Proceduren, die man mit einer Ereignisprocedur eines graphischen Fensterelements (z.B. onClick, onEnter, onExit usw.) erstellt hat. Irgendwann stellt man im Laufe seiner Arbeit manchmal fest, dass man dieses graphische Element nicht mehr braucht, und löscht es. Und trotzdem bleibt der Ereigniscode erhalten, was - wie "u-boot" geschrieben hat, gelegentlich in speziellen Fällen Sinn machen kann. Trotzdem wäre es ganz schön, wenn man solche Proceduren leicht finden könnte, deren graphische "Mutter" fehlt. Denn die Gefahr besteht meines Erachtens schon, dass durch gelegentliches Löschen von graphischen Fensterelementen "Proceduren-Zombies" ein verborgenes "Untoten-Leben" weiter führen.
Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: "verwaiste" Ereignisprocedur eines graphischen Elements

Beitrag von af0815 »

Wenn der Kommentar drinnen ist,so hast du den Zombie.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: "verwaiste" Ereignisprocedur eines graphischen Elements

Beitrag von Aliobaba »

... und es ist kulturelles Allgemeinwissen und eine Tatsache: Zombie-Suche ist schwierig. 8) :lol:
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: "verwaiste" Ereignisprocedur eines graphischen Elements

Beitrag von Mathias »

Solche Zombies hatte(habe) ich auch in meinen Coden.

Eine Prüfroutine für sowas wäre nicht schlecht, aber ich denke, dies ist recht schwierig, dies über mehrere Units zu prüfen.

Dies ist übrigrsn bei einfachen Variablen auch der Fall

Code: Alles auswählen

var
  t1:Integer;
 
implementation
 
var
  t2:Integer;

Bei t2 kommt ein Hinweis, das sie nicht gebraucht wird, aber t1 wird ignoriert.
Aber bei t2 ist es eindeutig, das sie im privaten Teil ist.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten