Zeile eines Array löschen ohne Entstehung einer Lücke

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Tessi1998
Beiträge: 16
Registriert: Sa 15. Mär 2014, 21:06

Zeile eines Array löschen ohne Entstehung einer Lücke

Beitrag von Tessi1998 »

Hallo alle zusammen,

ich habe bei Lazarus ein zweidimensionales Array (Array of Array [1..3] of String) und möchte nun, dass ich bestimmte Zeilen löschen kann. Allerdings ohne Enstehen von Lücken.

Ich habe schon gegoogelt und auch in diesem Forum einige Beiträge gefunden, aber bis jetzt bin ich damit noch auf keine Lösung gestoßen.

Danke schonmal im Voraus und LG, Tessi

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Zeile eines Array löschen ohne Entstehung einer Lücke

Beitrag von af0815 »

Schau dir mal die TStringList an. Ist eine dynamische Liste die dein Problem lösen sollte
Man kann in der StringList im Object auch weitere Stringlists Speichen wenn nötig.
Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Tessi1998
Beiträge: 16
Registriert: Sa 15. Mär 2014, 21:06

Re: Zeile eines Array löschen ohne Entstehung einer Lücke

Beitrag von Tessi1998 »

Also ich denke nicht, dass ich das Problem über eine TStringList lösen kann...

Gibt es nicht einen Weg das komplette Array als Ganzes zu speichern?

LG, Tessi

Warf
Beiträge: 2118
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Zeile eines Array löschen ohne Entstehung einer Lücke

Beitrag von Warf »

Verwende doch die TFPGList Klasse, die kümmert sich für dich darum.

Wenn es unbedingt ein Array sein muss kannst du einfach mit Move alle Elemente drüber eins nach unten Kopieren und dann mit setLength den Array kleiner machen:

Code: Alles auswählen

Move(Arr[i+1], Arr[i], (len-i-1)*Sizeof(DeinTyp));
SetLength(Arr, len-1);
sollte es tun

Antworten