![]() |
Re: Was bringt ein "packed" bei "record packe
Außerdem ist packed wichtig, wenn du zum Beispiel direkt Bitmaps aus dem Speicher auslesen willst. Diese haben oftmals eine Bittiefe von 24 Bit (3 Byte) pro Pixel. Es gibt allerdings keinen Datentyp, der 3 Byte breit ist.
Mit...
Delphi-Quellcode:
...kannst du dir einen genau 3 Byte breiten Typ erstellen, und mit diesem direkt auf jeden Pixel deines Bitmaps zugreifen. Ohne das "packed" währe der Record 24 Byte breit.
type
TRGBRec = packed record r, g, b: Byte; end; |
Re: Was bringt ein "packed" bei "record packe
Hallo,
ich möchte Michaels Ausführung in Beitrag #2 teilweise widersprechen. Der von ihm als Beispiel angeführte Record belegt auch im "ungepackten" Zustand immer 2 Bytes im Speicher - selbst bei der Ausrichtung Quad Word. Interessant wird es erst, wenn man zwischen die beiden Bytes einen Integer-Wert einfügt. In diesem Fall wächst der Speicherplatzbedarf des ungepackten Records auf 12 Bytes an. Gruß Hawkeye |
Re: Was bringt ein "packed" bei "record packe
Hallo,
auf die Gefahr hin Prügel dafür zu beziehen möchte ich doch noch auf die Welt ausserhalb Delphi hinweisen: z.B. Datenstrukturen in WIN32 sind normalerweise direkt gespeichert wie beschrieben, word, byte usw. folgt ohne Lücken aufeinander. Man muss daher fast immer Records, die in einer anderen Sprache definiert wurden, in Delphi als packed deklarieren - gilt also besonders bei Benutzung von DLLs. Gruss Reinhard |
Re: Was bringt ein "packed" bei "record packe
Zitat:
Zitat:
|
Re: Was bringt ein "packed" bei "record packe
Zitat:
Zitat:
Code:
Borland Delphi Version 14.0
... Compiler-Schalter: $<buchst><status> (Vorgabewerte siehe unten) A8 Ausgerichtete Record-Felder ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:25 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