我需要为我的 mv4 应用程序将一些 delphi 代码迁移到 c# (.net)。这将取代现有德尔福应用程序的一些功能,但我需要使用一些特定的功能。
主要问题是当我尝试从以下字符串中获取字符时:
FText = "123456";
i = 1;
德尔福:
a := Integer(FText[i]);
C#:
a = (int)FText[i];
但是c#返回50
和delphi49
Delphi 历来使用“长度前缀”字符串,其中长度指示符为string[0]
. 将字符串的第一个字符放在索引 1 处。自从在 Delphi 中引入“长字符串”后,字节数不再在索引 0 处,但字符串继续使用从 1 开始的索引。
C# 对字符串使用从零开始的索引。当您将任何字符串代码从 Delphi 转换为 C# 时,您将需要处理不同的索引方案。
C# 代码工作正常。FText[1] == '2'
所以它是 50 的 ASCII 码。
对 Delphi 不太了解,但可能没有 0 索引的表,FText[1] == '1'
所以它的 49 ?