Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Default Werte in Array? (https://www.delphipraxis.net/137885-default-werte-array.html)

Satty67 30. Jul 2009 12:58

Re: Default Werte in Array?
 
Zitat:

Zitat von aaaaaaaaaa_10
Nur zur Info. Es ist alles mit 0 gefüllt. Danke

Weil (wie meistens) der dafür reservierte Speicher bereits 0... stehen hatte oder weil delphi das array mit 0 initialisiert hat.

Wie mkinzler schreibt, sollte man prüfen (sofern es dringend nötig ist, das dort 0 drin steht), ob der Zustand zufällig oder kontrolliert ist.

Aber deswegen hattest Du ja gefragt, es wusste bisher nur noch keiner sicher wurde von der Realität überholt

mkinzler 30. Jul 2009 13:00

Re: Default Werte in Array?
 
Zitat:

Besser wäre es gewesen, da wäre nix drin gewesen. Kann man die Default Werte alle löschen?
Mit was? Irgendwas muss ja drinstehen.

aaaaaaaaaa_10 30. Jul 2009 13:00

Re: Default Werte in Array?
 
Danke Worker, das ist doch mal ne vernünftige Übersicht :thumb:

aaaaaaaaaa_10 30. Jul 2009 13:02

Re: Default Werte in Array?
 
ich mache vergleiche mit den arraywerten u.a. minimum und wenn da bereits eine 0 drin steht, dann sind ja meine werte immer größer und werden nie in das array übernommen

mkinzler 30. Jul 2009 13:04

Re: Default Werte in Array?
 
Dann musst du die Felder halt manuell mit dem Maximum des Datentyps bestücken.
BTW. bitte verwende die Edit-Funktion, denn Pushen mögen wir hier nicht.

aaaaaaaaaa_10 30. Jul 2009 13:05

Re: Default Werte in Array?
 
Oh entschuldige bitte. War ein Versehen. Werde mich bessern

Edit: Ganz sicher !

sirius 30. Jul 2009 13:06

Re: Default Werte in Array?
 
Zitat:

Zitat von mkinzler
Das hatte ich vermutet, aber wie gesagt darf man sich darauf nicht verlassen!

Das wirft eine Frage auf:
Warum sollte man sich nicht darauf verlassen? Beim initialisieren eines Objektes wie auch beim initialisieren eines dynamischen Arrays wird der Befehl fillchar (x,y,0) bereits von Delphi ausgeführt. Wenn man nun zwingend die 0 im Array benötigt, sollte man das fillchar dann noch ein zweites Mal ausführen?

Ja,
weil sicher ist sicher und irgendwann könnte ja CodeGear auf die Idee kommen und den Quellcode von DynArraySetLength zu ändern und das Fillchar rausnehmen.


Nein,
denn warum sollte man das jemals ändern und außerdem steht es ja in der Doku/Hilfe, dass der Inhalt 0 gesetzt wird. Sowas sind nur Performanceverluste, die nicht sein müssen.

himitsu 30. Jul 2009 13:35

Re: Default Werte in Array?
 
Sagen wir es mal so, die Array-Felder sind "nie" vorbelegt.

als globale Variable oder in einem Objekt:
der globale Variablen-Speicher und der Speicher von Objekten wird beim erstellen geNullt,
also wenn da zufällig ein statisches Array seine Elemente dort drin hat, dann ist es demnach auch automatisch indirekt mit 0en vorbelegt.

der Stack (lokale Variablen):
wird nicht initialisiert/geNullt

Speicher vom Speichermanager (via GetMem, z.B. der Inhalt von dynamischen Arrays):
wird ebenfalls nicht initialisiert/geNullt


Ausnahmen:
initialisierungspflichtige Typen, wie z.B. Strings, dynamische Arrays (der Array-Zeiger und nicht dessen Inhalt) oder Interfaces werden zu Initialisierung mit "nil" gefüllt.

und daraus kann man sich jetzt alle möglichen Szenarien basteln.


Grund ist, daß bei den "Ausnahmen" zur Speicherbehandlung ein definierter Wert gegeben sein muß, denn sonst wissen die Verwaltungsfunktionen nicht, ob sie einen alten Inhalt eventuell freigeben müssen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:58 Uhr.
Seite 2 von 2     12   

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