Приведение типа Integer () не работает в 64-разрядной версии Delphi - PullRequest
3 голосов
/ 05 февраля 2012

У меня есть следующий фрагмент кода:

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

Это прекрасно работает на 32-битных платформах. Если я изменю платформу на 64-битную в компиляторе, компилятор выдаст эту ошибку:

E2064 Левая сторона не может быть назначена на

Проблема, кажется, в типе integer(). Как я могу решить проблему?

1 Ответ

7 голосов
/ 05 февраля 2012

На 64-битной платформе DestPixel имеет ширину 8 байт, Integer - 4 байта, поэтому типовая передача недействительна.Вы можете исправить эту проблему, используя вместо этого NativeInt.

inc(NativeInt(DestPixel), DestDelta);

Тип NativeInt имеет тот же размер, что и указатель, и поэтому имеет размер от 4 до 8 байт в зависимости от размера.на выходной цели.

Сказав это, я лично произвожу тип с PByte, потому что это более правильно описывает выполняемую вами операцию.

inc(PByte(DestPixel), DestDelta);
...