Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
30. Mär 2020
Globale Variablen, und Felder in Objekten, werden mit 0 initiliaisiert. (bei Globalen kann man auch optional einen anderen Wert vorgeben)
Lokale Variablen in Funktionen werden nicht initialisiert (mit Ausnahme ein paar weniger Typen, wie z.B. der String)
Beim Result von Funktionen mal so und mal so (je nach Typ), aber eigentlich auch nie so, wie man es braucht, also sind praktisch nie sicher...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
27. Mär 2020
Jupp, und da kommt es drauf an, wo diese Variable liegt.
Global oder als Feld in einem Objekt, wo der Speicher initialisiert wird,
oder als lokale Variable in einer Funktion/Prodedur/Methode, wo das eben nicht passiert.
Wobei Strings, dynamische Arrays und Interfaces "immer" initialisiert werden. (außer wenn in Pointern, wo jemand alles falsch macht und die Speicherverwaltung verhunzt hat)...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
26. Mär 2020
Gut, wenn das Interface hier nur als Boolean (False=leer und True=einWert) verwendet wird, dann ist der String einfacher, denn wenn als String nur eine Konstante verwendet wird, dann braucht der auch keinen Speicher und man muß sich das DummyInterface nicht basteln
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
26. Mär 2020
Ja, mit ein paar kleinen Änderungen im Delphi würde der Typ dann für NullableBoolean nur 2 Byte benötigen. (oder gar 1 Byte, wenn man z.B. nur 1 bzw. -1 für True annimmt, bzw. wenn nur das erste Bit werthaltig ist)
Falls du sicherstellen kannst, dass der die Variable immer initialisiert wird, könntest du den Typen entsprechend anpassen.
Oder ein Treestate-Boolean nutzen, aber dann mußt du...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
26. Mär 2020
Weil der String automatisch initialisiert wird und ein Boolean ohne vorherrige Zuweisung sonst einen Zufallswert haben kann.
(würde ich mir vorstellen, da ich bei meinen eigenen Komponenten leider auch so einen "Scheiß" bauen muß, da Embarcadero meine Vorschläge nötige Funktionalitäten mit wenigen Zeilen Qellcode nachzurüsten, einfach ignriert hat, obwohl ich denen sogar schon den fertigen Code...