将delphi的System.Copy转换为.net

时间:2012-01-03 23:01:53

标签: vb.net delphi

这是我试图转换为.net的Delphi代码:

   s1 := Copy ( s1 , 1,x - 1) + Copy(s1, x + 1,Length(s1));

我试过了:

  s1 = s1.Substring(x - 1, 1) + s1.Substring(s1.Length, x + 1)

但是当索引超出范围时我会得到错误。在Delphi,它工作得很好。

添加了一行进行转换..        s2:= s2 + chr(3);

1 个答案:

答案 0 :(得分:7)

你的Substring参数被颠倒了 - 起始索引首先就像在Delphi中一样。

Delphi字符串索引是从1开始的。 .net字符串索引是从0开始的。你有一个经典的一对一错误。

最后,你不能使用Substring的长度参数来放松。在Delphi的Copy中,您可以指定一个任意大的长度值,您将获得所有最右侧的字符。在Substring中,你不能要求更多的角色。如果你这样做,则抛出ArgumentOutOfRangeException

你需要这个:

s1 = s1.Substring(0, x-1) + s1.Substring(x, s1.Length-x)

我假设您已确保x0s1.Length-1的范围内。


至于你的其他问题,

s2 := s2 + chr(3);

转换为

s2 = s2 + Chr(3)