2012-01-03 15 views
2

を.NETに変換します。これは、私が.NETに変換しようとしているDelphiコード:私が試しは、デルファイのSystem.Copyは

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ではうまく動作します。

変換する行が1行追加されました。 s2:= s2 + chr(3);

答えて

7

Substringのパラメータが逆になります。開始インデックスは、Delphiの場合と同様に最初に表示されます。

デルファイ文字列インデックスは1から始まります。 .net文字列インデックスは0ベースです。古典的なオフ・バイ・ワンのエラーがあります。

最後に、長さパラメーターをSubstringに設定して、ゆっくりと再生することはできません。 DelphiのCopyでは、任意の長さの値を指定することができ、すべての右端の文字を取得します。 Substringには、存在する文字よりも多くの文字を要求しないでください。そうすれば、ArgumentOutOfRangeExceptionがスローされます。

あなたはこの必要があります。

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

を私はあなたがすでにxs1.Length-1の範囲0であることを保証していると仮定しています。あなたの追加質問については


s2 := s2 + chr(3); 

s2 = s2 + Chr(3) 
+0

OKに変換しますが、解決以上ではない私の説明そのすべてをやったか、あなたはまだ問題がありますか? –

+0

私はまだ問題を抱えています。質問に書かれた問題ではありません。私は新しい質問をします – Ezi