Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm führt "falschen" Code aus (https://www.delphipraxis.net/42722-programm-fuehrt-falschen-code-aus.html)

TheMiller 23. Mär 2005 01:13


Programm führt "falschen" Code aus
 
Hey..

ich hatte vorhin gefragt, ob man Records freigeben muss. Nachdem das geklärt war, stehe ich nun vor einem größerem Rätsel. Diese Frage hatte natürlich Hintergrund.

Und zwar: Ich habe mehrere Prozeduren in Form20. Wenn ich Form20 zum ersten Mal aufrufe geht alles, wie es soll. Rufe ich es nochmal auf und klicke auf einen Button oder auf die ListView oder sonst wohin, wird erst der Code ausgeführt, der auf Button1 ausgeführt wird (egal ob da jetzt ShowMessage('xyz') oder DeleteWindows ;-) drinsteht). Darauf folgt eine Access-Violation. Danach geht alles normal weiter. Rufe ich diese Form später noch einmal auf, funzt alles wie gewohnt und als ob nix gewesen wäre...

Was bitte sehr ist da los?!?

Binärbaum 23. Mär 2005 01:24

Re: Programm führt "falschen" Code aus
 
Zeig doch mal den "falschen" und dann auch den "richtigen" Code, der ausgeführt werden soll, wenn man auf den Button oder wohin auch immer klickt.
Und dann wäre es auch noch gut zu wissen, an welcher Stelle dann die Zugriffsverletzung kommt.

MfG
Binärbaum

TheMiller 23. Mär 2005 01:25

Re: Programm führt "falschen" Code aus
 
einen Moment bitte...

TheMiller 23. Mär 2005 01:27

Re: Programm führt "falschen" Code aus
 
Liste der Anhänge anzeigen (Anzahl: 1)
Schau in die Anlage. Ich habe es makiert, was ausgeührt wird..

Binärbaum 23. Mär 2005 01:42

Re: Programm führt "falschen" Code aus
 
Hmm... ich kann erstmal so auf die Schnelle keinen Fehler entdecken.
Liegt vielleicht aber auch daran, dass ich hier vor meinem PC bald vom Stuhl kippe, weil es schon so spät (bzw. früh) ist :stupid:
Vielleicht wird das Button1Click ja auch noch von einer anderen Prozedur oder einem anderem Formular aufgerufen, und nicht durch den klick auf den Button ausgelöst. KA woran es liegt.

MfG
Binärbaum

TheMiller 23. Mär 2005 01:45

Re: Programm führt "falschen" Code aus
 
Ja... es ist schon recht spät. ICh würde vorschlagen wir gehen erstmal ein wenig HAIA machen.

ABer eins kann ich dir versichern. Es wird nirgends Button1.Click aufgerufen. Nur auf Button1.Click selbst...

Ich verstehe das ja eben auch nicht.

OK, Gute Nacht!!!

atreju2oo0 23. Mär 2005 01:57

Re: Programm führt "falschen" Code aus
 
Ähm...
Ich weiß nicht ob das geht da ich es noch nie gemacht habe,
aber mir fällt auf das Du nach der type Definition deines Form20 nochmal type definierst und da dein Record erklärst.
Ich würde das oben hinter type und vor Form20 schreiben...

Kannst ja mal probieren ob das was ändert...
Manchmal is komisch!
;)

TheMiller 23. Mär 2005 01:58

Re: Programm führt "falschen" Code aus
 
Hm,

so habe ich es gelernt, dass es richtig ist... Kann ich ja mal testen. Danke

Luckie 23. Mär 2005 01:59

Re: Programm führt "falschen" Code aus
 
Nur mal so am Rande: Bei 20 Forms wundert mich da eigentlich gar nichts mehr. Du wirst irgendwo den Überblick verloren haben. Wozu brauchst du 20 Forms? Ich würde mir mal über ein Redesign Gedanken machen.

TheMiller 23. Mär 2005 02:03

Re: Programm führt "falschen" Code aus
 
Das mit den 20 Forms hat seinen Grund. Erinnerst du dich an den einen Mann, für den das Programm sein soll? Kleine Übersichtliche Fenster. In jedem wenig Code... Und nirgends wird Button1.Click extern aufgerufen...

Luckie 23. Mär 2005 02:07

Re: Programm führt "falschen" Code aus
 
Hast du eventuell irgendein Ereignis im OI noch mit der ButtonClick Prozedur verknüpft?

Matze 23. Mär 2005 06:41

Re: Programm führt "falschen" Code aus
 
Ich hatte damals Probleme mit dem Ereignis OnActivate, du kannst das ja testweise einmal wo anders hingeben.

Jens Schumann 23. Mär 2005 07:25

Re: Programm führt "falschen" Code aus
 
Hallo Luckie,
Zitat:

Zitat von Luckie
Nur mal so am Rande: Bei 20 Forms wundert mich da eigentlich gar nichts mehr. Du wirst irgendwo den Überblick verloren haben. Wozu brauchst du 20 Forms? Ich würde mir mal über ein Redesign Gedanken machen.

Ich sehe es ganeu wie Du. Bei 20 Forms, so sprechenden Namen wie unit1 und unit 19 und globalen Variablen wundert mich gar nichts.

stonimahoni 23. Mär 2005 08:18

Re: Programm führt "falschen" Code aus
 
moin

abgesehen jetzt mal vom codestil...
könntest du mal probieren eine variable zu deklarieren als boolschen wert ( also wahr und falsch )
und die dan nan entsprechender stelle zu übergeben bzw zu setzen damit gewisse codestücke echt nur zu einem gewissen zeitpunkt ausgeführt werden

hat mir schon ab und an mal geholfen auch wenn es vielleicht nicht immer der eleganteste weg ist oder die beste lösung ( bin auch noch nicht so der delphi crack ;) )


so long...

mfg

stoni

TheMiller 23. Mär 2005 18:17

Re: Programm führt "falschen" Code aus
 
Okay,

der Tipp mit dem OI war garnicht übel... Ich hatte (warum auch immer) in mehreren OnExit Prozeduren Button1.Click stehen. Hammerhart. Da wäre ich nie drauf gekommen...

Habt Dank!

Nils_13 23. Mär 2005 19:28

Re: Programm führt "falschen" Code aus
 
Hi,

20 Forms sind umständlich 5 sind schon zu viel, du könntest es aber bei diesem Code in einer machen, musst dich halt mit dem Design rumschlagen.

TheMiller 23. Mär 2005 19:39

Re: Programm führt "falschen" Code aus
 
Naja,

ich denke, es kommt drauf an, was das Programm alles können soll. Je nach dem kann man schon genug Forms erstellen. Man könnte aber die Prozeduren in DLLs auslagern. Das wäre doch schon mal ein Anfang, oder?

Binärbaum 23. Mär 2005 19:46

Re: Programm führt "falschen" Code aus
 
Zitat:

Zitat von DJ-SPM
Naja,

ich denke, es kommt drauf an, was das Programm alles können soll. Je nach dem kann man schon genug Forms erstellen. Man könnte aber die Prozeduren in DLLs auslagern. Das wäre doch schon mal ein Anfang, oder?

Wäre möglich. Aber es muss nichtmal eine DLL sein. Wenn man die mehrfach verwendeten Funktionen und Prozeduren in eine getrennte Unit auslagert und diese dann -an den Stellen, wo sie benötigt wird- in die anderen Formular-Units einbindet, wird das ganze auch schon übersichtlicher.

TheMiller 23. Mär 2005 19:51

Re: Programm führt "falschen" Code aus
 
Hm... Schon gute Idee. Doch wenn du ein Update machen willst, brauchst du ggf. nur die DLL austauschen, oder?

Binärbaum 23. Mär 2005 19:55

Re: Programm führt "falschen" Code aus
 
Zitat:

Zitat von DJ-SPM
Hm... Schon gute Idee. Doch wenn du ein Update machen willst, brauchst du ggf. nur die DLL austauschen, oder?

Ja, stimmt auch wieder, vorausgesetzt, du machst die DLL abwärtskompatibel zu älteren Versionen.

Die eigene Unit ist eigentlich nur der Übersicht halber gedacht, und damit man es vermeidet, für mehrere der 20 Formulare die selbe Prozedur mehrmals schreiben zu müssen.
Ist letztlich deine Entscheidung, ob DLL oder nur eine neue Unit.

MfG
Binärbaum

TheMiller 23. Mär 2005 19:58

Re: Programm führt "falschen" Code aus
 
Super Idee.

Ich denke ich werde mir das Programm nochmal genauer vornehmen. Allerdings werde ich die aktuelle Version an den besagten Mann überreichen und dann ein "kleines" Update rausbringen...

Luckie 23. Mär 2005 22:28

Re: Programm führt "falschen" Code aus
 
Zitat:

Zitat von DJ-SPM
Ich denke ich werde mir das Programm nochmal genauer vornehmen. Allerdings werde ich die aktuelle Version an den besagten Mann überreichen und dann ein "kleines" Update rausbringen...

Klingt irgendwie nach Microsoft. :roll: :mrgreen:

Zitat:

If you can't make it good, make it at least look good.

TheMiller 23. Mär 2005 22:48

Re: Programm führt "falschen" Code aus
 
Was soll ich dazu sagen :-D

Okay, ich geb's zu. Ein wenig Recht hast du da schon, Luckie... Aber es steht auf meiner Liste... *g*


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 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