Einzelnen Beitrag anzeigen

Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.130 Beiträge
 
Delphi 10.3 Rio
 
#18

AW: Im Array Element löschen

  Alt 8. Sep 2017, 16:15
for z:=Length(Kontaktliste)-1 downto 0 do

Mein zweites Array wird nun verkürzt, aber das letzte Element aus dem ersten Array nimmt es noch immer nicht mit.
Du benutzt immer Kontaktliste_2[z].Anrede := Kontaktliste[z].Anrede; etc., aber bis zu dem zu löschenden Eintrag muss es lauten Kontaktliste_2[z - 1].Anrede := Kontaktliste[z].Anrede; . Der Index muss dort ja dort unterschiedlich sein, da ein Element "fehlt".

Edit: Und setze die Länge besser vor der Schleife mit SetLength(Kontaktliste_2, Length(Kontaktliste)-1);
Oder

Kontaktliste_2[High(Kontaktliste_2)].Anrede := Kontaktliste[z].Anrede;
und noch besser 1x nur

 Setlength(KontaktListe_2,length(Kontaktliste)-1); oder
Delphi-Quellcode:
For z:=i+1 to high(KontaktListe_2) do
  begin
    KontaktListe_2[z-1] := KotaktListe_2[z];
  end;
oder ich gehe mal von Record aus...

Delphi-Quellcode:
Move(KontaktListe_2[I+1],KontaktListe_2[I],(Length(KontaktListe_2)-I) * Sizeof(KontaktListe[0])); // Sizeof(Type)
Setlength(KontaktListe_2,Length(KontaktListe_2)-1);
Das würde doch ein Lerneffekt haben... und schneller als eine TList ist es auch...

Mavarik

Geändert von Mavarik ( 8. Sep 2017 um 16:19 Uhr)
  Mit Zitat antworten Zitat