2016-12-10 7 views
0

Ich bin eine Migration einer App von Delphi 7 nach Delphi XE5, die unten ist meine Funktion.Inkompatible Typen Fehler in 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; 

Mein Fehler ist: inkompatible Typen ‚AnsiChar‘ und ‚char‘ delphi, Kann man in der richtigen Art und Weise führen Sie mich einfach.

+0

Haben Sie überhaupt geforscht? Sicherlich müssen Sie sich darüber im Klaren sein, dass sich 'Char' von Delphi 2009 von' AnsiChar' zu 'WideChar' ändert. Sie müssen diese Änderung rückgängig machen und lesen. Vorsichtig. Und Sie müssen wirklich aufhören, Text als binäre Daten zu behandeln. Das ist es wirklich nicht. –

Antwort

1

Versuchen

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

mit c1 und c2 als AnsiChar Typ.

+1

Und hoffen Sie, dass der Ort Sie nicht herausholt. Es wird. –

Verwandte Themen