![]() |
Array mit Recordinhalten löschen
Hallo liebe Delphi-Freunde,
wie lösche ich am Sinnvollsten einen Array bzw. leere ihn? Bei einem einfachen Records würde ich es einfach mit ='' tun, aber mein Array hat zahlreiche "Unterelemente": array(1..10).Haus, array(1..10).Land, array(1..10).Nation, array(1..10).Name. Wie lösche ich das gesamte Element an einem bestimmten Index? Vielen Dank! |
AW: Array mit Recordinhalten löschen
Äh... ohne Quellcode? Keine Ahnung.
|
AW: Array mit Recordinhalten löschen
Hier der Code.
Delphi-Quellcode:
Ich möchte nun Beispielsweise alle Daten in Data[1] löschen und das ohne die einzelnen Unterbereiche wie Data.mitarbeiter anzusteuern. Gibt es ein schlanke Möglichkeit, alle Daten auf einmal an einem Bestimmten Indexwert(wie Data[1]) zu löschen?
Type
TErfassung = record Mitarbeiter: string[25]; Vorgesetzter: string[25]; PNummer: string[6]; Gehaltsstufe: 1..10; TDataArray = array[1..15] of TErfassung; var Data: TDataArray; Vielen Dank! |
AW: Array mit Recordinhalten löschen
So lange Du nur ShortStrings wie in Deinem Beispiel verwendest:
Delphi-Quellcode:
ZeroMemory(@data[1].Mitarbeiter,SizeOf(data[1]));
|
AW: Array mit Recordinhalten löschen
Irgendwie seltsam, dass Delphi Programmierer so blind sind und immer nur Arrays sehen wo in anderen Programmiersprachen (z.B. Python, C#,...Lisp!) schon längst Listen verwendet werden.
Arrays und Listen sind sich sehr ähnlich, aber nur aus Listen kann man schmerzfrei Elemente löschen. Intern können Listen auch über Arrays nachgebildet werden aber entscheidend ist was dem Programmierer als API angeboten wird: (dynamische) Arrays * Wahlfreier Zugriff auf Elemente (über Index) * nachträgliches Vergrössern/Verkleinern des Array Listen * Wahlfreier Zugriff auf Elemente (über Index und Inhalt) * automatisches Vergrössern/Verkleinern der Liste * Löschen von Elementen (ohne das Löcher zurückbleiben) * Einfügen von Elementen an beliebiger Stelle |
AW: Array mit Recordinhalten löschen
Vor allem spätestens sein TObjectList (k. A. ab welchem Delphi). Wobei TList auch nicht viel komplizierter ist, aber TObjectList macht es endgültig Kinderleicht.
|
AW: Array mit Recordinhalten löschen
Dann muss man aus dem Record aber erst einmal eine Klasse machen.
|
AW: Array mit Recordinhalten löschen
Also bei dem oberen Beispiel wäre es kein Akt. record gegen class tauschen, auf property verzichten, der Rest mit TObjectList.
Oder etwas aufwändiger - eine Klasse ableiten. |
AW: Array mit Recordinhalten löschen
Oder je nach Delphi-Version eine generische Liste (ich wundere mich, dass das noch niemand vorgeschlagen hat).
|
AW: Array mit Recordinhalten löschen
Zitat:
Im Übrigen kann man auch mit FaustkeilenArrays trefflich und performant Elemente löschen. Vor allen Dingen kann man damit eins: Lernen, wie es geht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 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