Autor Beitrag
violinenspieler1000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Mi 08.04.09 18:06 
Hallo,

ich habe in einem Programm folgenden Code stehen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TTGUI.Button8Click(Sender: TObject);
begin
//showmessage('');
Controll.Check_inputs();
end;


Dabei kommt ein Fehler der Art "Zugriffsverletzung bei Adresse...".

Schreibt man aber
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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?

_________________
We are, we were and will not be.
violinenspieler1000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Mi 08.04.09 18:50 
Nein, es werde nirgenswo Threads und Application.ProcessMessages verwendet.

Noch andere Ideen?
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Mi 08.04.09 18:57 
Was macht CheckInputs() denn genau? :)

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
violinenspieler1000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mi 08.04.09 19:05 
Dann setz mal Breakpoints und geh Stück für Stück durch, wo der Fehler genau auftritt. ;-)

_________________
We are, we were and will not be.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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.