Inno Setup: функция Ord или эквивалент? - PullRequest
1 голос
/ 21 июня 2011

Я использую inno setup для "шифрования" пароля:

function XORcrypt(Value,Key: string): string;
var
    p,k,pl,kl: integer;
begin
    {very basic encryption, using bitwise XOR}
    result:=Value;
    pl:=Length(Value);
    kl:=Length(Key);
    if (pl>0) and (kl>0) then
    begin
        p:=1; k:=1;
        while (p<=pl) do
        begin
            Result[p]:=Char(Ord(Value[p]) XOR Ord(Key[k]));
            if k=kl then k:=1 else k:=k+1;
                p:=p+1
        end; {while}
    end; {if}
end; {XORcrypt}

inno, кажется, не знает функцию паскаля Ord , которая возвращает значение ASCII запрошенного символа (67 для 'C')

Какие-нибудь решения?

1 Ответ

3 голосов
/ 21 июня 2011

Проблема не в Ord(), а Char(), вам нужно использовать Chr().

function XORcrypt(Value,Key: String): String;
var
    p,k,pl,kl: integer;
begin
    {very basic encryption, using bitwise XOR}
    result:=Value;
    pl:=Length(Value);
    kl:=Length(Key);
    if (pl>0) and (kl>0) then
    begin
        p:=1; k:=1;
        while (p<=pl) do
        begin
            Result[p]:=Chr(Ord(Value[p]) XOR Ord(Key[k]));
            if k=kl then k:=1 else k:=k+1;
                p:=p+1
        end; {while}
    end; {if}
end; {XORcrypt}
...