Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi 32 bit Pointer Typen in 64 bit Anwendung? (https://www.delphipraxis.net/167865-32-bit-pointer-typen-64-bit-anwendung.html)

Zacherl 22. Apr 2012 22:48

Delphi-Version: XE2

32 bit Pointer Typen in 64 bit Anwendung?
 
Hey,

gibt es eine Möglichkeit 32 bit Pointertypen in einer 64 bit Anwendung zu forcieren?

Viele Grüße
Zacherl

Uwe Raabe 22. Apr 2012 22:52

AW: 32 bit Pointer Typen in 64 bit Anwendung?
 
Ein Pointer unter x64 hat nun mal 64 Bit.

Was willst du überhaupt erreichen?

Zacherl 22. Apr 2012 22:56

AW: 32 bit Pointer Typen in 64 bit Anwendung?
 
Ich habe einen Datentyp:

Delphi-Quellcode:
type
  TTest = packed record
    Data: DWord;
    X: DWord;
    APointer: Pointer;
  end;
Dieser befindet sich in einer Datei und zwar in Listenform. Um jetzt beispielsweise Eintrag 3 auszulesen, berechne ich das Offset über SizeOf(TTest) * 2. Durch die falsche Pointergröße kommt dadurch natürlich alles durcheinander.

Allerdings möchte ich den Pointer auch ungerne durch DWord oä. ersetzen.

himitsu 22. Apr 2012 22:59

AW: 32 bit Pointer Typen in 64 bit Anwendung?
 
Wer kommt auf die Idee einen Pointer abzuspeichern?
Nach dem Laden stimmen die eh nicht mehr. :roll:
Genauso wie man kein Integer, Cardinal, NativeInt, NativeUInt oder Char in einer Datei speichert, bzw. für IPC verwendet.

Die einzige Möglichkeit: Du nimmst eben DWORD statt Pointer.

Zacherl 22. Apr 2012 23:04

AW: 32 bit Pointer Typen in 64 bit Anwendung?
 
Das Format und die dazugehörigen Delphi Deklarationen sind nicht von mir :P Werde ich wohl nicht drumrum kommen, alles in DWord zu ändern.

Uwe Raabe 23. Apr 2012 07:48

AW: 32 bit Pointer Typen in 64 bit Anwendung?
 
Ich würde eine eigene Deklaration für die gespeicherten Records nehmen und eine für die Datenstruktur im Speicher.

Steht in den APointer-Feldern in der Datei überhaupt etwas Sinnvolles drin? In dem Fall müsste man den Inhalt beim Lesen in die passende Darstellung umrechnen - beim Speichern natürlich ebenso wieder zurück.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:22 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