将非常旧的基于 ANSI 字符集的 Win32 应用程序转换为 UNICODE 的最佳过程是什么?目前源代码是用Delphi7编译的。使用哪个 Delphi 版本进行此转换最好?我目前有 XE6 版本的许可证,值得使用吗?
有大量 .pas 和 .dfm 文件,因此 AI 将是首选方法。
代码同时使用 STRING(最旧的)和 ANSISTRING、pchar、TStringList、TStreamFile。 该代码兼容从Windows95到Win11的所有Windows版本。
这只是如何使用字符串的一个小例子:
function LocalizeGUI.LanguageCodeStr( code :string ): integer;
var
rowlist : tstringlist;
st,j,i : integer;
alang: ansistring;
begin
st := 0;
if code = '' then code := Setting_ActiveLANGUAGE;
for i := 0 to languages.count - 1 do begin
alang := '';
RowList:= StrParse(Languages.strings[i],'=');
if (rowlist<>nil )and (rowlist.count>0) then
if uppercase(rowlist.strings[1]) = uppercase(code) then st := i;
RowList.free;
end;
result := st;
end;
Embarcadero 提供了一个非常全面的网站,其中包含有关如何以不同方式(例如 Unicode、x64、数据库等)迁移 Delphi 或 C++Builder 应用程序的大量信息:
在 Unicode 迁移部分,您可以找到 Unicode 统计工具(需要免费的 CDN 帐户才能下载):
此 Unicode 统计工具将帮助您收集有用的统计数据,了解将 Delphi 应用程序迁移到 Unicode 所需的时间和精力。
该工具会检查您的代码并告诉您最有可能需要更改的位置和内容。这至少可以让您估计需要审查多少行。
因此,结合其他可用资源,您应该很好地掌握要成功迁移所需执行的操作或更改的内容,无论是手动还是人工智能驱动。
关于您关于 Unicode 迁移过程使用哪个 Delphi 版本的问题:
这根本不重要,每个支持 Unicode 的 Delphi 版本就足够了(即撰写本文时的 Delphi XE 到 XE8 和 Delphi 10 到 12)。在这种情况下更重要的是,原始项目中使用的第 3 方组件可用于后续的 Delphi 版本。但这是另一个话题了...