Hallo und herzlich willkommen in der
DP!
Zu deinem Problem: Bei einem dynamisches Array muss vor Verwendung die Länge (Anzahl der Eintrgäge) festgelegt werden. Das geht mit
SetLength(Array,50); //50 Einträge möglich
Wenn du nun einen Eintrag löschen willst, musst du die Anderen Einträge im Array ja um eins nach oben verschieben. Ich würde deshalb das ganze Array, außer des zu löschenden Eintrags, in ein anderes Array kopieren:
Delphi-Quellcode:
var
Arr1, Arr2: Array of TEintrag;
.
.
.
procedure EintragLoeschen(Eintrag, LaengeArr: Integer);
var i : Integer;
begin
SetLength(Arr2, LaengeArr -1);
For i := 0 to LaengeArr - 1 do
begin
IF i < Eintrag THEN Arr2[i] := Arr1[i]
ELSE
IF i > Eintrag THEN Arr2[i] := Arr1[i+1]
end;
For i := 0 to Length(Arr2) -1 do
begin
SetLength(Arr1,Length(Arr2));
Arr1[i] := Arr2[i]
end;
end;
Ich hoffe mal, das das stimmt, was ich geschrieben hab. Bin schon etwas müde, also bitte korrigiert mich, wenn ich Schmarrn geschrieben hab.
Man liest sich, Stanlay