0

我需要为我的 mv4 应用程序将一些 delphi 代码迁移到 c# (.net)。这将取代现有德尔福应用程序的一些功能,但我需要使用一些特定的功能。

主要问题是当我尝试从以下字符串中获取字符时:

FText = "123456";
i = 1;

德尔福:

a := Integer(FText[i]);

C#:

a = (int)FText[i];

但是c#返回50和delphi49

4

2 回答 2

2

Delphi 历来使用“长度前缀”字符串,其中长度指示符为string[0]. 将字符串的第一个字符放在索引 1 处。自从在 Delphi 中引入“长字符串”后,字节数不再在索引 0 处,但字符串继续使用从 1 开始的索引。

C# 对字符串使用从零开始的索引。当您将任何字符串代码从 Delphi 转换为 C# 时,您将需要处理不同的索引方案。

于 2013-10-24T16:00:58.453 回答
0

C# 代码工作正常。FText[1] == '2'所以它是 50 的 ASCII 码。

对 Delphi 不太了解,但可能没有 0 索引的表,FText[1] == '1'所以它的 49 ?

于 2013-10-24T15:43:13.927 回答