![]() |
setlength(array,0); setlength(array,10);
Liebe MitprogrammiererInnen,
die Gewissensfrage: Wenn ich ein dynamisches Aray (Double/Integer) erst auf Länge null setze und dann aufspreize, ist dann sichergestellt, dass die Elemente gleich null sind? Was ich bis jetzt beim Debuggen gesehen habe, ist es so. Die Hilfe ist leider in einem riesigen Satz formuliert, der nicht ganz eindeutig für mich ist. Wie denkt ihr drüber? War es immer Zufall, dass die Elemente immer Null sind?
Delphi-Quellcode:
[edit=sakura] [delphi]Tags Mfg, sakura[/edit]
var
MyArray : array of double rate_mal : double; begin setlength(MyArray,0); setlength(MyArray,10); rate_mal := MyArray[5]; end; |
Re: setlength(array,0); setlength(array,10);
Geht nicht einfach
Delphi-Quellcode:
ArrayName := nil;
|
Re: setlength(array,0); setlength(array,10);
1. Benutz doch bitte [delphi]-Tags
2. Zitat:
Ich glaube, man muss das so machen:
Code:
Edit: Warum zum Teufel gehen diese verdammten [delphi]-Tags nicht ???
MyArray := setlength(MyArray,0);
[pre]Dieser Text steht in Delphi-Tags[/pre] |
Re: setlength(array,0); setlength(array,10);
[OT]Gehen sie bei dir nicht?
Bei mir ahben sie funktioniert.[/OT] |
Re: setlength(array,0); setlength(array,10);
Zitat:
Greetz alcaeus |
Re: setlength(array,0); setlength(array,10);
Ich glaub die einzigen Variablen, welche beim Start sozusagen auf 0 stehen sind die Globalen die Lokalen sind so, wie si gerade Lust haben.
Also mach, was alcaeus sagt und initialisiere die gefälligst vorher.
Code:
var
MyArray : array of double rate_mal : double; i : integer; begin setlength(MyArray,10); [color=red]for i := 0 to high(MyArray) do MyArray[i] := 0;[/color] rate_mal := MyArray[5]; end; |
Re: setlength(array,0); setlength(array,10);
Globale Variablen und Objektfelder sind Nullinitialisiert bzw. so wie es gerade dem Typ als "leer" entspricht. (Numerische Werte = 0; Booleans = false; String und ShortString = ''; Pointer = nil; usw...)
Bei lokalen Variablen kann man sich, wie gesagt, nie darauf verlassen! Auch wenn du das Array erst wieder verkleinerst, bzw. gerade dann nicht. Mit etwas Pech wird ein völlig neuer Speicherbereich alloziiert in dem alles möglich drin stehen kann, und im günstigsten Fall wird das Array am selben Offset wie vorher anfangen. Dann hast du halt deine alten Werte drin, und was dahinter steht ist wieder ein Fall für nen Wahrsager ;). Um eine Initialisierungsschleife wirst du nicht rum kommen. gruss, dizzy |
Re: setlength(array,0); setlength(array,10);
Zitat:
|
Re: setlength(array,0); setlength(array,10);
Zitat:
|
Re: setlength(array,0); setlength(array,10);
Hi Sprint,
Zitat:
Greetz alcaeus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:26 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