Delphi 7 和 Delphi 东京 - 不同的结果相同的功能
Delphi 7 and Delphi Tokyo - Different results same function
我正在将一个用 Delphi 7 编写的旧项目转换为最新版本(Delphi Tokyo),在旧代码中有这个函数可以对文本进行加扰和解密,但是当我阅读使用在 Delphi 东京编译的相同程序的乱码文本只会产生垃圾。
这里有谁知道为什么使用不同版本的 Delphi 编译相同的代码会产生不同的结果?
函数如下:
function TForm2.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;
从 Delphi 2009 开始,string
类型自动映射到 Unicode 兼容的 UnicodeString
类型。之前,它映射到 AnsiString
类型。
您可以通过明确地使用 AnsiString
和 AnsiChar
来使用您的例程。
function TForm2.EnDeCrypt(const Value : AnsiString) : AnsiString;
var
CharIndex : integer;
begin
Result := Value;
for CharIndex := 1 to Length(Value) do
Result[CharIndex] := AnsiChar(not(ord(Value[CharIndex])));
end;
请注意,如果传递给函数的字符串确实包含无法映射到本地 ANSI 字符集的 unicode 字符,这可能会在运行时导致意外结果。
我正在将一个用 Delphi 7 编写的旧项目转换为最新版本(Delphi Tokyo),在旧代码中有这个函数可以对文本进行加扰和解密,但是当我阅读使用在 Delphi 东京编译的相同程序的乱码文本只会产生垃圾。
这里有谁知道为什么使用不同版本的 Delphi 编译相同的代码会产生不同的结果?
函数如下:
function TForm2.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;
从 Delphi 2009 开始,string
类型自动映射到 Unicode 兼容的 UnicodeString
类型。之前,它映射到 AnsiString
类型。
您可以通过明确地使用 AnsiString
和 AnsiChar
来使用您的例程。
function TForm2.EnDeCrypt(const Value : AnsiString) : AnsiString;
var
CharIndex : integer;
begin
Result := Value;
for CharIndex := 1 to Length(Value) do
Result[CharIndex] := AnsiChar(not(ord(Value[CharIndex])));
end;
请注意,如果传递给函数的字符串确实包含无法映射到本地 ANSI 字符集的 unicode 字符,这可能会在运行时导致意外结果。