2016-05-03 89 views
0

このコードを追加したいが、動作しない。チャットシステムから、プレイヤーがサーバーに接続して、テキストボックス(チャット)にHelloMsgと表示したいときですが、プログラムを起動するときにエラーが発生します。C#インデックスと長さは、文字列内の場所を参照する必要があります。パラメータ名:length

私の悪い英語のために申し訳ありません!

#region ' Read Configuration.ini ' 
StreamReader Sr = new StreamReader(Database + "\\Configuration.ini"); 

string line = null; 

while ((line = Sr.ReadLine()) != null) 
{ 
    if (line.Substring(0, 12) == "HelloMessage") 
    { 
     string[] StrMsg = line.Split('='); 
     HelloMsg = StrMsg[1].Trim(); 
    } 
} 

Sr.Close(); 

答えて

1

String.Substringは、開始インデックスと長さの2つのパラメータが必要です。あなたは、2つの場合にこの例外を取得:

  1. startIndexプラスlengthはない、このインスタンス内の位置を示しています。
  2. startIndexまたはlengthがゼロ未満です。

だから、文字列の長さが12未満であることを処理する必要があります:

while ((line = Sr.ReadLine()) != null) 
{ 
    if (line.Length >= 12 && line.Substring(0, 12) == "HelloMessage") 
    { 
     string[] StrMsg = line.Split('='); 
     HelloMsg = StrMsg[1].Trim(); 
    } 
} 

、より読みやすく、より安全なアプローチString.StartsWithを使用している:

if(line.StartsWith("HelloMessage")) 
{ 
    // ... 
} 
+0

はどうもありがとうございました! –

関連する問題