AGB  ·  Datenschutz  ·  Impressum  







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

Frage zu den "neuen" Records in 10.4

Ein Thema von Der schöne Günther · begonnen am 13. Jun 2020 · letzter Beitrag vom 15. Jun 2020
Antwort Antwort
Seite 1 von 2  1 2      
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Frage zu den "neuen" Records in 10.4

  Alt 13. Jun 2020, 10:16
Delphi-Version: 10.4 Sydney
Ich habe die Entwicklung nicht wirklich mitverfolgt, jetzt sind sie da.

Was mir auffällt ist dass früher ™ bei meinRecord1 := meinRecord2 die Felder kopiert wurden, mehr nicht. Sieht beispielsweise mein Record so aus
Delphi-Quellcode:
TMyRecord = record
  someByte: Byte;
  someInteger: Integer
end;
dann sind zwischen dem Byte und dem Integer (bei üblicher Compiler-Optimierung) 3 "Padding-Bytes" Platz. Die wurden nicht mitkopiert. Jetzt scheint das der Fall zu sein.

Hat das einen Grund? Muss ich mich vorsehen?

Ich habe unter
http://docwiki.embarcadero.com/RADSt...anaged_Records
nichts darüber gefunden.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.905 Beiträge
 
Delphi 12 Athens
 
#2

AW: Frage zu den "neuen" Records in 10.4

  Alt 13. Jun 2020, 11:56
Schonmal mit packed records probiert ?
Ich verstehe das so dass Alles wie bisher bleiben soll,
Nur das man zusätzlich selbst noch das Kopierverhalten steuern kann.

Im Default müsste man aber nichts anfassen, damit es kompatibel zu altem Code bleibt.
Ich habe aber noch nicht explizit damit rumprobiert, sondern versuche erstmal Projekte komplett zu portieren und zu testen.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Frage zu den "neuen" Records in 10.4

  Alt 13. Jun 2020, 12:02
Bei packed record gibt es gar kein Padding, das ist ja der Sinn der Dinger.

Ich habe ja auch gar kein konkretes Problem das ich lösen muss (außer dass unter 10.4 jetzt ein paar Unit-Tests fehlschlagen), ich würde nur gerne wissen ob jemand evtl. ein Beispiel vorstellen kann, wo das neue Verhalten eine Rolle spielt.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.905 Beiträge
 
Delphi 12 Athens
 
#4

AW: Frage zu den "neuen" Records in 10.4

  Alt 13. Jun 2020, 12:25
Was genau meinst Du mit "mitkopiert" ?

Ist vorher Padding drin, hinterher nicht ?
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.379 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Frage zu den "neuen" Records in 10.4

  Alt 13. Jun 2020, 12:44
...ich würde nur gerne wissen ob jemand evtl. ein Beispiel vorstellen kann, wo das neue Verhalten eine Rolle spielt.
Nur wenn man extrem unsauber programmiert.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Frage zu den "neuen" Records in 10.4

  Alt 13. Jun 2020, 12:55
Mit unsauberem Stil hat das nichts zutun.
Die neuen Möglichkeiten für Records erlauben es, diese z.B. automatisch zu initialisieren - mit Werten Deiner Wahl. Und über den Assign-Operator lässt sich das Kopier-Verhalten steuern. Gerade bei komplexen Typen kann hier Bedarf entstehen.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.017 Beiträge
 
Delphi 2009 Professional
 
#7

AW: Frage zu den "neuen" Records in 10.4

  Alt 13. Jun 2020, 14:20
ich würde nur gerne wissen ob jemand evtl. ein Beispiel vorstellen kann, wo das neue Verhalten eine Rolle spielt.
In die angegebene Richtung sollte es keine Probleme geben, aber in die Gegenrichtung.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
614 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Frage zu den "neuen" Records in 10.4

  Alt 14. Jun 2020, 15:17
... 3 "Padding-Bytes" Platz. Die wurden nicht mitkopiert. Jetzt scheint das der Fall zu sein. ...
Die wurden nicht mitkopiert? Ernsthaft?
Das hätte ja bedeutet das der Vorteil des einfacheren Zugriffs hinweg gewesen wäre bei jedem Kopiervorgang. Denn via Move einfach den Speicher von A nach B kopieren ist doch viel schneller als jedes einzelne Feld des Records unter Beachtung seines Datentyps einzeln zu kopieren. Das würde ich mit Schildbürgertum vom feinsten vergleichen. ... und kann ich mir nicht vorstellen.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.333 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Frage zu den "neuen" Records in 10.4

  Alt 14. Jun 2020, 17:01
dann sind zwischen dem Byte und dem Integer (bei üblicher Compiler-Optimierung) 3 "Padding-Bytes" Platz. Die wurden nicht mitkopiert. Jetzt scheint das der Fall zu sein.
Wenn sie in irgendeiner Version einmal nicht mit kopiert wurden, war das ein Bug. Ich konnte allerdings keine solche Version finden (XE, XE6, 10.2, 10.3 und 10.4 kopieren alle korrekt den kompletten Speicherinhalt).
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Frage zu den "neuen" Records in 10.4

  Alt 14. Jun 2020, 19:16
Was genau meinst Du mit "mitkopiert" ?

Ist vorher Padding drin, hinterher nicht ?
Angenommen wir haben zwei Records myRecordA, myRecordB: TMyRecord mit der Definition

Delphi-Quellcode:
TMyRecord = record
  someByte: Byte;
  someInteger: Integer
end;
Und sagen wir myRecordA liegt beispielsweise so im Speicher:

Code:
  Byte #   Wert  Gehört zu  

  0        42     someByte    
  1        FF    (Padding)  
  2        FF    (Padding)  
  3        FF    (Padding)  
  4        00     someInteger
  5        00     someInteger
  6        00     someInteger
  7        00     someInteger
Dann wurden früher ™ bei einer Zuweisung myRecordB := myRecordA nur die Bytes 0 und 4-7 in myRecordB gesetzt. Jetzt sind es alle.

Wenn sie in irgendeiner Version einmal nicht mit kopiert wurden, war das ein Bug.
Tatsächlich? Ich war die letzten Jahre auf 10.0 Seattle, und da wurden die Padding-Bytes bei einer Zuweisung definitiv nicht mitkopiert. Zu anderen Versionen kann ich nichts sagen. Ist ja auch eigentlich eine gute Sache dass es (jetzt) so ist.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:56 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