AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Array löschen

Ein Thema von Gabriel · begonnen am 1. Feb 2004 · letzter Beitrag vom 2. Feb 2004
Antwort Antwort
Gabriel

Registriert seit: 1. Feb 2004
2 Beiträge
 
#1

Array löschen

  Alt 1. Feb 2004, 21:18
Moin,

es kann gut sein, dass es schon ein Thread zu diesem Thema gibt, aber ich hab es nicht gefunden.

Wie kann ich alle Werte aus einem Array löschen?
So wie das in der Delphi-Hilfe erklärt ist versteh ich das net...

Kann mir da einer helfen?
mir fällt nix schlaues ein....*fg*
  Mit Zitat antworten Zitat
Benutzerbild von moin339
moin339

Registriert seit: 23. Sep 2002
Ort: Hamburg
136 Beiträge
 
#2

Re: Array löschen

  Alt 1. Feb 2004, 21:25
setlength(array, 0);

das müsste funktioniern

ciao, moin339
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Array löschen

  Alt 1. Feb 2004, 22:31
Hallo,
in der OH steht irgendwo MyDynArray:=Nil;
Wenn Du aber Objektreferenzen in dem Array gespeichert hast solltest Du evt. die Objekte vorher freigeben.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Array löschen

  Alt 2. Feb 2004, 09:58
Das sollte so gehn:

Code:
fillchar(MeinArray,sizeOf(MeinArray),0) ;
Gruß,
Tom
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#5

Re: Array löschen

  Alt 2. Feb 2004, 11:55
Hallo Jelly,

wenn Du Records oder Arrays, die ihrerseits Datentypen wie Strings oder dynamische Arrays enthalten, so wie von Dir beschrieben leerst, untergräbst Du das Konzept der automatischen Referenzzählung und erzeugst somit "Speicherleichen". Verwende stattdessen die die Routine Finalize und ggf Anschließend eine Routine, die den Speicher "ausnullt" (zB FillChar oder ZeroMemory).

Ich glaube dieses Thema wurde hier bereits diskutiert.
gruß, choose
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#6

Re: Array löschen

  Alt 2. Feb 2004, 12:01
MyArray := NIL; bzw.SetLength(MyArray,0); sollten eigentlich reichen, der Compiler macht daraus automatisch einen Aufruf von Finalize.

Gruß, teebee
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#7

Re: Array löschen

  Alt 2. Feb 2004, 13:02
Hallo teebee,

bei dynamischen Arrays sollten die Lösungen von moin339 und Jens funktionieren, weil tatsächlich implizit eine Art von Finlaize aufgerufen wird. Weil Gabriel jedoch nicht nach einer Möglichkeit Veringern der Elementanzahl auf null sondern nach einer Lösung zum Löschen aller Einträge fragte, ging ich von "normalen" (statischen) Arrays aus, bei denen die bereits beschriebenen Probleme auftreten können.

Achtung: Sollte ein Konstrukt dieser Art verwendet werden
Delphi-Quellcode:
var
  myArray: array of TMyType;
begin
  //...
  FillChar(myArray, SizeOf(myArray), 0);
wird tatsächlich nur die Referenz auf das dynamische Array mit Nullen gefüllt, so dass myArray den Wert nil hat. Allerdings wird auch hierbei die Delphi-Referenzzählung untergraben, die bei einem schlichten Aufruf der Form
myArray:= nil; vom Compiler vorgenommen worden wäre, so dass "Speicherleichen" entstehen (können)...
gruß, choose
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz