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