![]() |
Delphi-Version: XE2
Zeiger inkrementieren: 64Bit -> Fehler
Moin.
Ich habe folgenden Code welcher sich als 32 Bit Applikation problemlos kompilieren lässt:
Delphi-Quellcode:
Wenn ich als 64 Bit kompilieren möchte bekomme ich den Fehler
prcedure MyProc(pBuffer: Pointer);
begin ... ... inc(Integer(pBuffer), $8000); ... end; Wo liegt das Problem? Zitat:
|
AW: Zeiger inkrementieren: 64Bit -> Fehler
Ich glaub ich habe schon die Lösung
Delphi-Quellcode:
So scheint es zu gehen.
pBuffer := PByte(pBuffer) + $8000;
|
AW: Zeiger inkrementieren: 64Bit -> Fehler
Unter 64-Bit ist ein Zeiger 8 Byte (eben 64 Bit) groß, während ein Integer weiterhin 32 Bit verwendet. Mit dem Cast
Delphi-Quellcode:
wird somit eine temporäre Variable mit den unteren 32 Bit des Zeigers angelegt. Dieser kann man natürlich nichts zuweisen - zumindest hätte es nicht den gewünschten Effekt.
Integer(pBuffer)
Der Cast auf
Delphi-Quellcode:
ist hier genau die richtige Lösung.
PByte
|
AW: Zeiger inkrementieren: 64Bit -> Fehler
Aus Integer muss NativeInt gemacht werden, da Integer 32 Bit bleibt und der NativeInt je nach Platform sich anpasst.
Edit: Wo war die rote Box? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:20 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