![]() |
AW: Im Array Element löschen
Zitat:
|
AW: Im Array Element löschen
Zitat:
|
AW: Im Array Element löschen
Dann sind das meiner Meinung nach schlechte Lehrer (auch wenn ich auf die Mütze bekomme).
Dann sollen sie doch ein vernünftigeres Szenario schaffen und für Szenarien wie dieses hier direkt die richtigen Lösungen lehren und verwenden. |
AW: Im Array Element löschen
Zitat:
|
AW: Im Array Element löschen
Zitat:
List.Delete(4) ? Gar nichts. Zum Einstieg ist es durchaus sinnvoll den Schülern beizubringen NACHZUDENKEN. Einen Eintrag aus einem Array zu löschen benötigt Wissen und Verständnis in einigen Bereichen und dazu ein Stück logisches Denken. Für das Löschen eines Eintrags aus einer Liste musst du dir die obige Zeile merken und ggf. die Zahl in den Klammern ersetzen. Die Schüler sollten trotzdem ein paar Stunden später Listen vorgestellt kriegen, nach dem Motto: "Und da hat jemand eine Liste gebaut die all die Funktionen der letzten Stunden bereits beinhaltet, sodass man diese Funktionalität nicht jedes mal neu implementieren muss!" |
AW: Im Array Element löschen
Zitat:
Delphi-Quellcode:
etc., aber bis zu dem zu löschenden Eintrag muss es lauten
Kontaktliste_2[z].Anrede := Kontaktliste[z].Anrede;
Delphi-Quellcode:
. Der Index muss dort ja dort unterschiedlich sein, da ein Element "fehlt".
Kontaktliste_2[z - 1].Anrede := Kontaktliste[z].Anrede;
Edit: Und setze die Länge besser vor der Schleife mit
Delphi-Quellcode:
SetLength(Kontaktliste_2, Length(Kontaktliste)-1);
|
AW: Im Array Element löschen
Zitat:
|
AW: Im Array Element löschen
Zitat:
Delphi-Quellcode:
Kontaktliste_2[High(Kontaktliste_2)].Anrede := Kontaktliste[z].Anrede;
und noch besser 1x nur
Delphi-Quellcode:
oder
Setlength(KontaktListe_2,length(Kontaktliste)-1);
Delphi-Quellcode:
oder ich gehe mal von Record aus...
For z:=i+1 to high(KontaktListe_2) do
begin KontaktListe_2[z-1] := KotaktListe_2[z]; end;
Delphi-Quellcode:
Das würde doch ein Lerneffekt haben... und schneller als eine TList ist es auch...
Move(KontaktListe_2[I+1],KontaktListe_2[I],(Length(KontaktListe_2)-I) * Sizeof(KontaktListe[0])); // Sizeof(Type)
Setlength(KontaktListe_2,Length(KontaktListe_2)-1); :stupid: Mavarik |
AW: Im Array Element löschen
Oder mit einem Array: Man kopiert den Record des letzten Elements auf das zu löschende Element und "schneidet" das letzte Elemente vom Array ab.
|
AW: Im Array Element löschen
Eine generische Lösung wäre beispielsweise:
Delphi-Quellcode:
class procedure TArrayHelper.Delete<T>(var A: TArray<T>; Index: Integer);
var I: Integer; begin for I := Index to High(A) - 1 do begin A[I] := A[I + 1]; end; SetLength(A, Length(A) - 1); end; class procedure TArrayHelper.Insert<T>(var A: TArray<T>; Index: Integer; const Item: T); var I: Integer; begin SetLength(A, Length(A) + 1); for I := High(A) - 1 downto Index do begin A[I + 1] := A[I]; end; A[Index] := Item; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz