AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Default Value bei eigenen Typ

Ein Thema von amoibos · begonnen am 8. Okt 2015 · letzter Beitrag vom 26. Okt 2015
Antwort Antwort
Seite 2 von 2     12   
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
482 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: Default Value bei eigenen Typ

  Alt 26. Okt 2015, 01:27
Was genau meinst du mit "Copy-on-Write"?
Dennis
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#12

AW: Default Value bei eigenen Typ

  Alt 26. Okt 2015, 01:47
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
482 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Default Value bei eigenen Typ

  Alt 26. Okt 2015, 01:52
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?
Dennis
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#14

AW: Default Value bei eigenen Typ

  Alt 26. Okt 2015, 02:00
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#15

AW: Default Value bei eigenen Typ

  Alt 26. Okt 2015, 16:00
Delphi-Quellcode:
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)
Bei Strings gibt es RefCount=-1 für Konstanten.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#16

AW: Default Value bei eigenen Typ

  Alt 26. Okt 2015, 17:50
Wobei ich das bei Arrays nicht ganz verstehe, denn der Pointer zu einem konstanten dynamischen Array passt in den Integer rein, genauso wie bei LongStrings.
Was es bei Arrays in Delphi aber komischer Weise nicht gibt, weil man da wohl was mit der Refferenzzählung vergessen hat, die eh "defekt" ist (kein Copy-On-Write, bei Schreibzugriffen).
Auf die Gefahr hin, ein Duplikat erzeugt zu haben, hab ich es mal eingetragen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
482 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Default Value bei eigenen Typ

  Alt 26. Okt 2015, 18:24
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
numbers: TArray<Integer> = [1, 2, 3] "TArray<T>" ist ja deklariert mit "array of T", also ein Array-Typ.
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'];
Dennis

Geändert von Dennis07 (26. Okt 2015 um 18:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#18

AW: Default Value bei eigenen Typ

  Alt 26. Okt 2015, 18:34
http://blog.marcocantu.com/blog/2014...delphixe7.html
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
482 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: Default Value bei eigenen Typ

  Alt 26. Okt 2015, 18:52
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. =)
Dennis
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 Uhr.
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