2016-12-10 9 views
0

Iam, перенося приложение из Delphi 7 в Delphi XE5, ниже - моя функция.Ошибка несовместимых типов в Delphi

function InternalDecrypt(const S: AnsiString; Key: Word): AnsiString; 
var 
    I: Word; 
    Seed: Word; 
begin 
    Result := S; 
    Seed := Key; 
    for I := 1 to Length(Result) do 
    begin 
    Result[I] := Char(Byte(Result[I]) xor (Seed shr 8)); //Error is here 
    Seed := (Byte(S[I]) + Seed) * Word(C1) + Word(C2) 
    end 
end; 

Моя Ошибка: несоответствующего типа «AnsiChar» и «символ» Дельфи, Может ли один только вести меня в правильном направлении.

+0

Проводите ли вы какие-либо исследования вообще? Разумеется, вы должны понимать, что «Char» переходит из «AnsiChar» в «WideChar» из Delphi 2009. Вам нужно отступить и прочитать об этом изменении. Внимательно. И вы действительно должны перестать обрабатывать текст, как будто это двоичные данные. Это действительно не так. –

ответ

1

Попробуйте

Result[I] := AnsiChar(Byte(Result[I]) xor (Seed shr 8)); 

с c1 и c2, как AnsiChar типа.

+1

И надеюсь, что локаль вас не поймает. Это будет. –