Целочисленный тип имеет 32-битную длину, тип указателя - 64-битную длину на 64-битной платформе, следовательно, ошибка.Я не могу проверить это сейчас, но
inc(NativeInt(s1), PtrD);
должен решить проблему.
Кстати: Inc
процедура может принимать указатели, поэтому обычно нет необходимости приводитьуказатель на целое число здесь.Тот же самый результат может быть получен с помощью
inc(PByte(s1), PtrD);
. Чтобы избежать s1
, кастинг вообще даже лучше
inc(s1, PtrD);
, но это меняет смысл кода - его эквивалент равен
inc(PByte(s1), PtrD * SizeOf(TRGB24 ));