Hallo zusammen,
bin neu hier und habe ein Problem beim Operieren mit Arrays aus einem Record; ich erhalte immer an der gleichen Stelle im Debug-Modus die Informationsmeldung "project D:\bla\bla.exe faulted with message: '
access violation at 0x0000000 read of address 0x00000000' Process stopped.",zugleich öffnet sich das CPU-Fenster. Der Record und die Arrays sehen folgendermassen aus:
Delphi-Quellcode:
implementation
type
satztyp = Record
Satznummer : Integer;
Frage, Antwort : String;
end;
var
k,l,m,n,jo,i0: Integer;
Level1, AbfrageArray : array[0..3] of satztyp;
Level2 : array[0..7] of satztyp;
Level3 : array[0..19] of TLernstoffsatztyp;
Level4 : array[0..31] of TLernstoffsatztyp;
Level5 : array[0..51] of TLernstoffsatztyp;
{$R *.dfm}
Soviel zur Deklaration.
Ich benutze die globalen Integers um durch die insgesamt 6 Arrays zu navigieren. Das Problem tritt in der Abfrageroutine auf und zwar immer nach der insgesamt 6. Inkrementierung von k. Hier der Codeausschnitt dazu:
Delphi-Quellcode:
procedure TForm1.Abfrage(Antwort: string);
var j: Integer;
KopierArray: array[0..3] of TLernstoffsatztyp;
kopiert: Boolean;
begin
kopiert:=false;
o:=0;
if Antwort = (AbfrageArray[i0].Antwort) then
begin
inc(Richtig);
case AbfrageArray[i0].Satznummer of
0: begin
Level2[k].Frage:=AbfrageArray[i0].Frage;
Level2[k].Antwort:=AbfrageArray[i0].Antwort;
Level2j[k].Satznummer:=1;
AbfrageArray[i0].Frage:=Leer;
AbfrageArray[i0].Antwort:=Leer;
AbfrageArray[i0].Satznummer:=10;
inc(k);//im else-Zweig dieser if-Anweisung wird zurück in Level1 //kopiert
Hab'mich auf den Code beschränkt, in dem der Fehler auftritt. Ansonsten benutze ich Memos zur Texteingabe zusammen mit einem OnKeyUp-EventHandler. Die Arrays und Integers werden im FormCreateEvent initialisiert. Wenn ich das Programm kompiliere und außerhalb von Delphi ausführe, schließt es sich an derselben Stelle wie im Debug-Modus.
Nun ich hoffe, dass einer von Euch eine Idee hat, was mein Fehler ist oder wie ich ihn weiter eingrenzen kann.
Danke im Voraus,
Gruss,
Andreas