Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Fehler nur vorhanden, wenn keine showmessage?
violinenspieler1000 - Mi 08.04.09 18:06
Titel: Fehler nur vorhanden, wenn keine showmessage?
Hallo,
ich habe in einem Programm folgenden Code stehen:
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TTGUI.Button8Click(Sender: TObject); begin Controll.Check_inputs(); end; |
Dabei kommt ein Fehler der Art "Zugriffsverletzung bei Adresse...".
Schreibt man aber
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TTGUI.Button8Click(Sender: TObject); begin showmessage(''); Controll.Check_inputs(); end; |
wird das Programm ordnungsgemäß ausgeführt.
Ich habe keine Idee woran das liegen kann. Und schlage mich schon seit Stunden an diesem Fehler herum.
Irgendwelche Ideen wo der Fehler stecken könnte?
Gausi - Mi 08.04.09 18:34
Benutzt du irgendwo Threads? Oder Application.ProcessMessages, so dass der Button evtl. nochmal geklickt wird, bevor der erste Klick abgearbeitet ist?
violinenspieler1000 - Mi 08.04.09 18:50
Nein, es werde nirgenswo Threads und Application.ProcessMessages verwendet.
Noch andere Ideen?
Hidden - Mi 08.04.09 18:57
Was macht CheckInputs() denn genau? :)
violinenspieler1000 - Mi 08.04.09 19:04
CheckInputs() in TController ruft viele andere Klassen auf und führt einige Berechnungen durch.
Ich würde Code ja gerne posten aber leider sind das insgesamt 10 Units...
Gausi - Mi 08.04.09 19:05
Dann setz mal Breakpoints und geh Stück für Stück durch, wo der Fehler genau auftritt. ;-)
jaenicke - Mi 08.04.09 19:11
Kann es sein, dass du dynamische Arrays oder Pointer oder ähnliches benutzt und dabei ein Fehler passiert? Denn ohne Threads (wo parallel noch etwas passieren könnte, das können auch Threads zur Hardwareansteuerung (ComPort) oder dem Internetempfang (Indy) sein) wäre das eigentlich die einzige logische Erklärung warum durch ein ShowMessage das dann funktioniert.
Aktiviere einmal die Bereichsüberprüfung:
Projekt --> Optionen... --> Compiler --> Laufzeitfehler --> Bereichsüberprüfung
oder in neuen Versionen:
Projekt --> Optionen... --> Delphi-Compiler --> Compilieren --> Laufzeitfehler --> Bereichsüberprüfung
Das deckt in den meisten Fällen auf, wenn du z.B. einen Index größer als der maximale Index in einem dynamischen Arrays benutzt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!