![]() |
Delphi-Version: XE8
Wildes Pointer-Geschubse bei Win64
Hallo!
Ich habe in einer zugekauften Unit ein Portierungsproblem für 64 Bit. Da wird wild mit Zeigern herum geschubst:
Delphi-Quellcode:
Ich brauch mal nen kleinen Schubs, warum dieses Cardinal-Typecasting auf Win32 funktioniert und auf Win64 diesen Compilerfehler auswirft.
function Foo: PIrgendeinZeigerTyp;
begin Cardinal(Result):= Cardinal(IrgendeinObjekt)+SizeOf(TIrgendeinTyp); // <-- Mecker: "Der linken Seite kann nichts zugewiesen werden" end; Danke schööö! Cody |
AW: Wildes Pointer-Geschubse bei Win64
|
AW: Wildes Pointer-Geschubse bei Win64
Zitat:
Schrecklichen Dank! |
AW: Wildes Pointer-Geschubse bei Win64
Zitat:
Delphi-Quellcode:
wohl eher angebracht. Sonst kann es im 32-Bit-Bereich zwischen 2 und 4 GB schon mal zu merkwürdigen Effekten kommen.
NativeUInt
|
AW: Wildes Pointer-Geschubse bei Win64
Danke @Uwe für die Feinheiten!
|
AW: Wildes Pointer-Geschubse bei Win64
Man (vorallem Intel, Apple usw.) war auf die saudumme Idee gekommen und hat den Integer bei 32 eingefroren, und für 64 Bit einen neuen dynamischen Typ erfunden.
Integer = signed integer Cardinal = unsigned integer NativeInt und NativeUInt IntPtr und UIntPtr <- eigentlich das Richtige, aber in Delphi standardmäßig nicht deklariert Wenn du mit mehreren Delphi-Versionen arbeitest, oder Quellcode für mehrere Delphi-Versionen / Pascalsprachen bereitstellst, dann deklariere besser deine eigenen Typen und verwende immer nur Diese ... dann kannst du später an zentraler Stelle soeinen Drecke, wie mit dem Integer, bugfixen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 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