Думаю что здесь этот вопрос ответится бысрей чем где либо. Я в Delphi вообще ноль, я уважаю С++Builder. Так вот, в одной из своих приватных разработок для анализа ставок на футбол я использую Almdev BusinessSkinForm (глупая идея смотря назад, но там уже 50 тыс линей кода позади). Проблема в том что в DX10.3 всё ок, грузю библиотеку с downloadly точка ir и всё ок устанавливается и работает. Но вот в DX10.4 не алё. Delphi компилятор даёт 58 ошибок E2064.
{Copy interlaced images with 1 byte for R, G, B}
procedure TbsPngLayerIDAT.CopyInterlacedRGB8(const Pass: Byte;
Src, Dest, Trans, Extra: pChar);
var
Col: Integer;
begin
Col := ColumnStart[Pass];
Dest := pChar(Longint(Dest) + Col * 3);
repeat
Dest^ := Char(fOwner.GammaTable[pByte(Longint(Src) + 2)^]); inc(Dest); // здесь
Dest^ := Char(fOwner.GammaTable[pByte(Longint(Src) + 1)^]); inc(Dest); // и здесь я изменил код
Byte(Dest^) := fOwner.GammaTable[pByte(Longint(Src) )^]; inc(Dest); // здесь оригенальный кож и ошибка
inc(Src, 3);
inc(Dest, ColumnIncrement[Pass] * 3 - 3);
inc(Col, ColumnIncrement[Pass]);
until Col >= ImageWidth;
end;
Так вот, код такой Byte(Dest^) равняется там чегота. Если убрать Byte() всё компилируется, но вот я в дельфи не алё так что я не знаю что я делаю. Ну так видно что оригенальный код хочет написать в адрес Dest один байт.
Помогите кто может.
Если надо оригенальный код, возьмите с downloadly точка ir у иранцев, искать надо BusinessSkinForm.
Ещё одна солюша это найти последнюю версию библиотеки, но я искал без результатно.