Как исправить ошибку: в Delphi требуется тип массива - PullRequest
0 голосов
/ 17 декабря 2018

Я использую 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-разрядная ОС XP, работает просто отлично.

1 Ответ

0 голосов
/ 17 декабря 2018

Используйте PByteArray вместо PByte

В более новых версиях Delphi вы можете применять индексирование [] для типизированного указателя, когда директива complier {$POINTERMATH} равна ON (справка)

До D2009 арифметика указателей была реализована только для PChar (PAnsiChar), AFAIK

...