Ich habe mal den Debugger benutzt. Mit F7 gehe ich Zeile für Zeile durch. Der Debugger springt in die markierte Zeile und danach wird der Fehler ausgelöst.
Delphi-Quellcode:
procedure TMarkFile.DeleteSubject(Sender : TObject);
var row,i,i2:integer;
begin
row:=(Sender as TButton).Tag;
if row=High(FEingabeArray) then
begin
for i2 := 1 to 5 do
begin
FreeAndNil(FEingabeArray[row].array_edit[i2]);
end;
FreeAndNil(FEingabeArray[row].button_loeschen);
FreeAndNil(FEingabeArray[row].Combobox_fach);
end else
begin
for i := row to High(FEingabeArray)-1 do
begin
for i2 := 1 to 5 do
begin
FEingabeArray[i].array_edit[i2].text:=FEingabeArray[i+1].array_edit[i2].Text;
end;
FEingabeArray[i].button_loeschen.Tag:=FEingabeArray[i+1].button_loeschen.Tag;
FEingabeArray[i].Combobox_fach.Text:=FEingabeArray[i+1].Combobox_fach.Text;
end;
FreeAndNil(FEingabeArray[High(FEingabeArray)].button_loeschen);
FreeAndNil(FEingabeArray[High(FEingabeArray)].Combobox_fach);
for i2 := 1 to 5 do
begin
FreeAndNil(FEingabeArray[High(FEingabeArray)].array_edit[i2]);
end;
end;
SetLength(FEingabeArray,Length(FEingabeArray)-1);
UpdateSubjects;
end;//hier nach end; wird der Fehler ausgelöst. Danach kommt nichts mehr.