Вы вводите двухбайтовую вещь (Char
) в однобайтовую вещь (Byte
). Чтение этого значения легко определить, но сделать это значение доступным для записи сложно, вероятно, по той же причине типы формальных и фактических параметров "var" должны быть идентичны.*
Возможно, вы хотели привести его к типу двухбайтовых символов, например Word
.Или, может быть, вы хотите, чтобы GammaTable
был массивом Char
, поэтому вам вообще не нужно приводить тип.Или, может быть, если этот код был изначально написан для версии Delphi ранее 2009 года, вы хотите, чтобы эти PChar
объявления были PAnsiChar
- типы символов стали шире.Другим вариантом является приведение типа Dest
к PByte
и , затем разыменовывает результат.Это, вероятно, плохая идея, поскольку вы будете перезаписывать только каждый второй байт буфера.
Исходя из названия функции, кажется, что PChar
никогда не был подходящим типом данных для использования.,Этот тип предназначен для символов данных, но я думаю, что этот код имеет дело с байтами .Правильнее всего сделать это, вероятно, изменить PChar
на PByte
, и тогда вам вообще не нужно набирать Dest
.
Директива $J
не имеет значения;он контролирует, позволит ли компилятор присваивать значения типизированным константам.У вас нет ни одного из них в этом коде.