"verwaiste" Ereignisprocedur eines graphischen Elements
"verwaiste" Ereignisprocedur eines graphischen Elements
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
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 )
-
- 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
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)
Re: "verwaiste" Ereignisprocedur eines graphischen Elements
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)
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 )
- 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
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).
Re: "verwaiste" Ereignisprocedur eines graphischen Elements
Danke, af0815!
So geht's!!!
Aliobaba
So geht's!!!
Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )
- 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
Es reicht wenn man nur einen Kommentar in der Prozedur einfügt und sie wird nicht mehr als leer angezeigt.
Andreas
Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: "verwaiste" Ereignisprocedur eines graphischen Elements
... 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
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 )
- 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
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).
Re: "verwaiste" Ereignisprocedur eines graphischen Elements
... und es ist kulturelles Allgemeinwissen und eine Tatsache: Zombie-Suche ist schwierig.
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )
-
- 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
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
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.
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
Mit Java und C/C++ sehe ich rot