Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dynamische Array-Variable freigeben (ARRAY OF BOOLEAN) (https://www.delphipraxis.net/279-dynamische-array-variable-freigeben-array-boolean.html)

Gast 28. Jun 2002 12:53


Dynamische Array-Variable freigeben (ARRAY OF BOOLEAN)
 
Hi, 8)

Delphi (5) F1:

(...)

Dynamische Array-Variablen sind implizit Zeiger und werden mit derselben Referenzzählung verwaltet wie lange Strings. Um ein dynamisches Array freizugeben, weisen Sie einer Variablen, die das Array referenziert, den Wert nil zu, oder Sie übergeben die Variable an Finalize. Beide Methoden geben das Array unter der Voraussetzung frei, daß keine weiteren Referenzen darauf vorhanden sind. Wenden Sie auf dynamische Array-Variablen nicht den Derefenzierungsoperator (^) an, und übergeben Sie sie auch nicht an die Prozeduren New oder Dispose.“
(...)

So...

[code:1:8deeee572a]
TYPE

sakura 28. Jun 2002 12:58

Ich habe mich erst gewundert, ob das vielleicht ein FAQ werden soll, da ich die Herkunft D5 F1 nicht gleich kappiert habe :mrgreen:

mit
Code:
TYPE
   ArrayOfBoolean = ARRAY OF Boolean;
hast Du erst einmal einen neuen Variablentyp deklariert. Anschließend musst Du noch eine Variable dieses Types deklarieren
Code:
var
  BooleanArray: ArrayOfBoolean;
begin
  ....
  SetLength(BooleanArray, 5];
  BooleanArray[0] := False;
  BooleanArray[1] := True;
  BooleanArray[2] := False;
  ...
  BooleanArray := nil;
  // oder - ich mache es immer wie folgt
  SetLength(BooleanArray, 0);
end;

Gast 28. Jun 2002 13:00

Natürlich Sakura,

es sollte heißen:

[code:1:5ab5fd732d]
TYPE

sakura 28. Jun 2002 13:05

Nutze einfach das
Code:
SetLength(BooleanArray, 0);
Beispiel. Den Rest übernimmt Delphi dann automatisch.

jbg 28. Jun 2002 13:06

Bei mir funktioniert das aber unter D5 und D6.
Code:
type
  ArrayOfString = array of string;
  ArrayOfBoolean = array of Boolean;

procedure TForm1.Button1Click(Sender: TObject);
var
  a: ArrayOfString;
  b: ArrayOfBoolean;
begin
  a := nil;
  b := nil;
end;

Gast 28. Jun 2002 13:07

Hi Sakura, 8)

ok... so mache is es...hat mich bloß gewundert das es mit NIL nicht klappt...

Na..ja ... auf Dich ist wie immer Verlaß...

Besten DANK

Paul Jr.

sakura 28. Jun 2002 13:08

Weisst Du, warum ich nicht die Deutsche Delphi Version nutze? Wegen der schlecht übersetzten Hilfe. Hier das Original
Zitat:

Zitat von Delphi 5 English
Code:
SetLength(MyFlexibleArray, 20);
allocates an array of 20 reals, indexed 0 to 19. Dynamic arrays are always integer-indexed, always starting from 0.
Dynamic-array variables are implicitly pointers and are managed by the same reference-counting technique used for long strings. To deallocate a dynamic array, assign nil to a variable that references the array or pass the variable to Finalize; either of these methods disposes of the array, provided there are no other references to it. Dynamic arrays of length 0 have the value nil. Do not apply the dereference operator (^) to a dynamic-array variable or pass it to the New or Dispose procedure.

Vielleicht hilfts, wie auch immer, am Ende mit SetLength(ArrayName, 0) wieder freigeben.

Gast 28. Jun 2002 13:09

Ach so... mein Problem aber ist...das ich es später mit

IF a = NIL THEN

dieses Wert abfrage... was schlägst Du jetzt vor...?

Gruß

Paul Jr.

jbg 28. Jun 2002 13:10

if Length(a) = 0 then ...

Gast 28. Jun 2002 13:11

Hi Leute,

jetzt sehe ich (in Englisch,he,he)...

Danke jbg ... Danke Sakura

Gruß

Paul Jr.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:59 Uhr.
Seite 1 von 2  1 2      

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