Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
Delphi 8 Architect
|
Re: CD-Datenbank - Array, aus dem man löschen kann..
1. Feb 2004, 23:48
Ich denke, das 2. Array ist entbehrlich:
Delphi-Quellcode:
type
DeinTyp = Array of tEintrag;
var
DeinArray : DeinTyp;
procedure InsertEintrag(DerEintrag : tEintrag; Index : Integer = -1);
var i : Integer;
begin
if ( Index >= 0) and ( Index < Length(DeinArray)) // Index ist irgendwo VOR dem neuen
// Ende des Arrays...
then begin
SetLength(DeinArray,Length(DeinArray)+1); // Array vergrößern
for i := Index+1 to High(DeinArray)
do DeinArray[i] := DeinArray[i-1]; // Alle Items von Index bis Ende verschieben...
DeinArray[ Index] := DerEintrag; // und den Eintrag an gewünschte Stelle schreiben.
end else begin // kein Index angegeben - also Add am Ende
AddEintrag(DerEintrag) // siehe Procedure AddEintrag...
end;
end;
procedure AddEintrag(DerEintrag : tEintrag);
begin
SetLength(DeinArray,Length(DeinArray)+1); // Array vergrößern
DeinArray[High(DeinArray)] := DerEintrag; // Eintrag ans Ende schreiben - fertig!
end;
procedure DeleteEintrag( Index : Integer);
var i : Integer;
begin
if ( Index >= 0) and ( Index < Length(DeinArray))
then begin
for i := Index+1 to High(DeinArray)
do DeinArray[i-1] := DeinArray[i]; // umkopieren
SetLength(DeinArray,Length(DeinArray)-1); // anschließend Array
// verkleinern - fertig.
end else raise Exception.Create(' Ungültiger Index!'#13#10+
' Minimum = 0'#13#10+
' Maximum = '+InToStr(High(DeinArray))+#13#10+
' Fehlerhafter Wert = '+IntToStr( Index)+' !');
end;
procedure ClearDeinArray;
var i : Integer;
begin
SetLength(DeinArray,0); // Länge auf Null setzen - fertig!
end;
hoffe, das hülfet Dir, dynamische Arrays zu verstehen...
Gruß
Tim Leuschner Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
|