Jeah, das war nun schon einmal ein großer Schritt. Nun ist der Fehler nämlich so gut wie reproduzierbar.
Nachdem ich sämtliche Variablen name in fname umbenannt hab, ist der abstrakte Fehler nicht mehr aufgetreten.
Nun tritt nur noch (nicht immer aber fast immer) der folgender Fehler auf:
Wenn ich eine Zeile von Elementen lösche und dies die letzte Zeile ist, dann tritt manchmal ein Zugriffsfehler auf. Habe diese Procedure inzwischen wie folgt umgeändert.
Delphi-Quellcode:
procedure TForm1.loeschenTeilnehmer(tempzahl:String);
var
fname: TNamenArray;
x,tempx: Integer;
temp: String;
begin
fname:=setArrays();
for x := 0 to 12 do
begin
TEdit(FindComponent(fname[x] + tempzahl)).Free;
end;
//Löschen des Mitglied und Kursfeldes
TCheckBox(FindComponent('mitglied' + tempzahl)).Free;
TComboBox(FindComponent('kurs' + tempzahl)).Free;
TComboBox(FindComponent('sportart' + tempzahl)).Free;
TButton(FindComponent('loeschen' + tempzahl)).Free;
showMessage(inttostr(zaehler));
tempx:=strtoint(tempzahl)+1;
while tempx < zaehler do
begin
showMessage(inttostr(tempx) + ' ' + inttostr(zaehler));
verschiebeTeilnehmer(inttostr(tempx));
tempx:=tempx+1;
end;
end;
Dabei tritt der Fehler dem ersten ShowMessage auf. Jedoch wird kein zweites ShowMessage ausgegeben, was soviel heißen müsste, wie dass die Schleife nicht durchlaufen wird, was auch korrekt ist.
Woran kann es dann noch liegen?