Delphi 7和Delphi Tokyo - 不同的结果相同的功能

问题描述 投票:3回答:1

我正在将一个用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 pascal
1个回答
1
投票

从Delphi 2009开始,string类型自动映射到Unicode兼容的UnicodeString类型。之前,它映射到AnsiString类型。

你可以使用AnsiStringAnsiChar来更新你的例行程序。

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字符,则可能会在运行时导致意外结果。

© www.soinside.com 2019 - 2024. All rights reserved.