Autor Beitrag
mexx
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1183



BeitragVerfasst: Mi 28.03.07 16:48 
Ich möchte die Einträge eines Array of String löschen/entfernen. Dafür kann ich eine For-Schleife verwenden, die die Inhalte auf '' setzt. Aber es gibt vielleicht noch eine elegantere Lösung als diese?

_________________
Das Unsympathische an den Computern ist, dass sie nur ja oder nein sagen können, aber nicht vielleicht.
Hobby-Programmierer
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 238
Erhaltene Danke: 4

Win XP Pro, Vista Ultimate Trial :o)
D6 Pro, D7 Pro, Turbo, XE SE
BeitragVerfasst: Mi 28.03.07 22:04 
Nabend ...,
warum willst du überhaupt die Einträge löschen?

Wenns unbedingt sein muss, dann etwa so - hängt natürlich von der Array-Größe ab:
Du könntest dir über einen Index die gelöschten, ähmähm Items?, merken und bei Bedarf mit neuen Einträgen überschreiben;
oder aber
bei einem dyn. Array die Länge neu setzen, nachdem du jeweils mit deinen Einträgen 'nachgerückt' bist.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var i: Integer;
begin
  if index < High(MyArray) then // ist Index < letzter Eintrag ?
    for i:= index to High(MyArray) -1 do 
       MyArray[i]:= MyArray[i+1]; // Eintrag nach vorne kopieren
  SetLength(MyArray, Length(MyArray)-1); // Arraylänge neu festlegen
end;


LG Mario
mexx Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1183



BeitragVerfasst: Do 29.03.07 07:50 
Das löschen der Einträge muss einfach sein. Deinen Vorschlag hätte ich auch so machen wollen. Ich dachte es gibt einen Befehl, der alle Einträge löscht.

_________________
Das Unsympathische an den Computern ist, dass sie nur ja oder nein sagen können, aber nicht vielleicht.
ene
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: Do 29.03.07 07:55 
Moin,

wenn es ein eindimensionales Array ist, versuchs mal mit MyArr:= Nil;
IngoD7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: Do 29.03.07 08:38 
user profile iconene hat folgendes geschrieben:
wenn es ein eindimensionales Array ist, versuchs mal mit MyArr:= Nil;
:?
Mit statischen Arrays geht das gar nicht.
Mit dynamischen Arrays ist, wenn MyArr die letzte Referenz auf das Array war, der ganze Speicher freigegeben, das Array danach also gar nicht mehr greifbar. Und wenn MyArr nicht die letzte Referenz war, dann bewirkt das - bezogen auf die Elementinhalte - gar nichts.
mexx Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1183



BeitragVerfasst: Do 29.03.07 08:39 
Ich habs jetzt mit der For-Schleife gelöst.

_________________
Das Unsympathische an den Computern ist, dass sie nur ja oder nein sagen können, aber nicht vielleicht.