Я использую Delphi 7, пытаюсь скомпилировать демонстрационное приложение uWebBrowser (OSRDLLBrowser.dpr) в CEF4 Delphi и получаю сообщение об ошибке:
TempSrcOffset := ((dirtyRects[n].y * Width) + dirtyRects[n].x) * SizeOf(TRGBQuad);
TempDstOffset := ((TempScanlineSize * pred(TempHeight)) - (dirtyRects[n].y * TempScanlineSize)) +
(dirtyRects[n].x * SizeOf(TRGBQuad));
src := @PByte(buffer)[TempSrcOffset];
dst := @PByte(TempBufferBits)[TempDstOffset];
[Ошибка] uWebBrowser.pas (455): требуется тип массива.
Я понимаю, что src := @PByte(buffer)[TempSrcOffset];
пытается присвоить значение, которое не является массивом, но не могли бы вы объяснить, почему и как это исправить?
Примечание:
Теперь я работаю с этими двоичными файлами: https://github.com/salvadordf/OldCEF4Delphi с использованием D7, 32-разрядная версия OS XP, работает нормально.
Используйте PByteArray
вместо PByte
В более новых версиях Delphi вы можете применить индексацию []
к типизированному указателю, когда директива компилятора {$POINTERMATH}
- это ON
(помощь)
До D2009 арифметика указателей была реализована только для PChar (PAnsiChar)
, AFAIK.
Работает отлично. Спасибо.