![]() |
AW: Default Value bei eigenen Typ
Was genau meinst du mit "Copy-on-Write"?
|
AW: Default Value bei eigenen Typ
Die Werte werden erst kopiert (im Speicher), wenn sie wirklich benötigt werden. Werden sie nur gelesen, wird nichts kopiert. Weil sie nicht verändert werden.
|
AW: Default Value bei eigenen Typ
Ah. Also praktisch dass die Daten vom Stack in ein Register geladen werden, dieses verändert wird und dann wieder auf den Stack geschrieben wird?
|
AW: Default Value bei eigenen Typ
Ja. Sobald der Compiler "merkt", dass sie verändert werden und vom Code eine Kopie benötigt wird. Eigentlich programmiert man one das Wissen im Hintergrund. Ich habe mir noch nie Gedanken drüber gemacht.
|
AW: Default Value bei eigenen Typ
Delphi-Quellcode:
Bei Strings gibt es RefCount=-1 für Konstanten.
var S1, S2: string;
S1 := 'abcd'; S2 := S1; S2[2] := 'B'; ShowMessage(S1 + sLineBreak + S2); // abcd aBcd var B1, B2: TBytes; B1 := (1, 2, 3, 4); B2 := B1; B2[1] := 22; // Arrays ausgeben > BEIDE (1, 22, 3, 4) |
AW: Default Value bei eigenen Typ
Zitat:
![]() |
AW: Default Value bei eigenen Typ
Ehm. Sorry wenn ich da was falsch verstanden hab, dann bitte korrigieren.
Aber um mal auf deinen Code im QC zu kommen: Du deklarierst eine Konstante
Delphi-Quellcode:
"TArray<T>" ist ja deklariert mit "array of T", also ein Array-Typ.
numbers: TArray<Integer> = [1, 2, 3]
Allerdings initialisiert man Array-Konstanten doch mit Runden Klammern, sofern ich mich nicht irre (hab ich zumindest immer so gemacht). Eckige Klammern sind doch soweit ich weiß für Set-Konstanten...?!
Delphi-Quellcode:
const
MyArr: array [0..2] of Char = ('A','B','C'); MySet = ['A','B','C']; |
AW: Default Value bei eigenen Typ
|
AW: Default Value bei eigenen Typ
Oh, hm okay. Ja dass man das zur Laufzeit irgendwie jetzt mit [] zuweisen kann hab ich irgendwie mal gelesen.
Aber dass man jetzt dynamische Array-Konstanten deklarieren kann und diesen dann mit [] Werte zuweisen kann wusste ich nicht. Naja, da ich eh fürs erste bei XE5 bleibe ist das eh nur nice-to-know für mich. =) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 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