![]() |
Delphi-Version: 10.4 Sydney
Frage zu den "neuen" Records in 10.4
Ich habe die Entwicklung nicht wirklich mitverfolgt, jetzt sind sie da.
Was mir auffällt ist dass früher ™ bei
Delphi-Quellcode:
die Felder kopiert wurden, mehr nicht. Sieht beispielsweise mein Record so aus
meinRecord1 := meinRecord2
Delphi-Quellcode:
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.
TMyRecord = record
someByte: Byte; someInteger: Integer end; Hat das einen Grund? Muss ich mich vorsehen? Ich habe unter ![]() nichts darüber gefunden. |
AW: Frage zu den "neuen" Records in 10.4
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. |
AW: Frage zu den "neuen" Records in 10.4
Bei
Delphi-Quellcode:
gibt es gar kein Padding, das ist ja der Sinn der Dinger.
packed record
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. |
AW: Frage zu den "neuen" Records in 10.4
Was genau meinst Du mit "mitkopiert" ?
Ist vorher Padding drin, hinterher nicht ? |
AW: Frage zu den "neuen" Records in 10.4
Zitat:
|
AW: Frage zu den "neuen" Records in 10.4
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. |
AW: Frage zu den "neuen" Records in 10.4
Zitat:
|
AW: Frage zu den "neuen" Records in 10.4
Zitat:
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. |
AW: Frage zu den "neuen" Records in 10.4
Zitat:
|
AW: Frage zu den "neuen" Records in 10.4
Zitat:
Delphi-Quellcode:
mit der Definition
myRecordA, myRecordB: TMyRecord
Delphi-Quellcode:
Und sagen wir myRecordA liegt beispielsweise so im Speicher:
TMyRecord = record
someByte: Byte; someInteger: Integer end;
Code:
Dann wurden früher ™ bei einer Zuweisung
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
Delphi-Quellcode:
nur die Bytes 0 und 4-7 in myRecordB gesetzt. Jetzt sind es alle.
myRecordB := myRecordA
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 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-2025 by Thomas Breitkreuz