2012-02-05 27 views
3

工作我有以下的代碼:整型()類型的流延不Delphi的64位

inc(integer(DestPixel), DestDelta); //DestPixel: PColorRGB; DestDelta: integer; 

能正常工作在32位平臺。如果我改變了平臺的64位編譯器編譯器發出此錯誤:

E2064 Left side cannot be assigned to

這個問題似乎是在integer()類型轉換。我該如何解決這個問題?

+0

這段代碼來自JanFx.Stretch函數嗎?您將不得不使用INT_PTR或NativeInt。 – Ampere 2015-01-14 17:02:19

回答

7

在64位平臺上,DestPixel爲8個字節寬,Integer爲4個字節,因此該類型轉換無效。您可以使用NativeInt來解決此問題。

inc(NativeInt(DestPixel), DestDelta); 

NativeInt類型是大小作爲指針相同,4個字節,8個字節寬取決於輸出目標之間,以便浮動。儘管如此,我個人會與PByte類型轉換,因爲這更正確地描述了您正在執行的操作。

inc(PByte(DestPixel), DestDelta); 
+2

+1表示使用PByte表示您正在使用指針而不使用「整數值」。 – 2012-02-05 17:28:23

+0

@Andreas,但使用類型轉換爲'PColorRGB'不會更自然嗎?我的意思是'Inc(PColorRGB(DestPixel),DestDelta);' – TLama 2012-02-05 18:32:48

+0

@tlama如果TColorRGB的大小大於1,它將具有不同的含義 – 2012-02-05 18:43:07