为什么我的算法反转字符值在存储在Delphi XE2 ShortString中时不起作用?

时间:2012-08-08 12:22:00

标签: delphi unicode

我有以下代码:

user_s.username := EnDecrypt(Edit_username.Text);

该功能如下:

function EnDeCrypt(const Value : String) : String;
 var
 CharIndex : integer;
begin
 Result := Value;
 for CharIndex := 1 to Length(Value) do
Result[CharIndex] := chr(not(ord(Value[CharIndex])));
end;

变量的类型是:

TUser = record
 access: char;
 username: string[25];
 password: string[25];
end;

在Delphi 2007中它可以工作,在Delphi XE2中它失败了。奇怪的是,如果它是123456789,它会很好地加密/解密密码。这个问题必须与unicode和shortstring的使用有关。我希望有一些方法可以让它在Delphi XE2中运行..

1 个答案:

答案 0 :(得分:6)

String类型替换为AnsiString,将Char替换为AnsiChar,代码将与Delphi 2007完全相同。(String[25]不应该但是改变了。)当然,你不会得到Unicode支持。