2012-04-13 21 views
1

私はC#の初心者です。とにかく、タイマーが数字に達するとイベントを再生するイベントシーケンスを作成しています。そのファイルでも、タイマーはファイルに格納されている番号に応じて速度を調整します。どのように私はこれについて行くだろう、ここでそのファイルのテキストがデコードされます。ファイルに格納された変数を使用してイベントをトリガーする

[EventSequence] 
{ 
    DisplayName "Default" 
    OFFset = 0 
    Resolution = 192 

} 
[SyncSequence] 
{ 
0 = B 180000 
} 
[EventsNotes] 
{ 
0 = E "section Intro" 
15168 = E "Note1" 
21120 = E "Note2" 
26880 = E "Note3" 
38976 = E "Note4" 
44928 = E "Note5" 
} 
[Events] 
{ 
192 = N 0 0 
240 = N 0 0 
288 = N 0 0 
336 = N 0 0 
384 = N 4 0 
432 = N 0 0 
480 = N 0 0 
528 = N 0 0 
576 = N 3 0 
624 = N 0 0 
672 = N 0 0 
720 = N 0 0 
768 = N 4 0 
816 = N 0 0 
864 = N 0 0 
912 = N 0 0 
960 = N 2 0 
1008 = N 0 0 
1056 = N 0 0 
1104 = N 0 0 
1152 = N 1 0 
} 

タイマーは非常に高速ですが、同期下の値に依存します。大きい値はイベントを引き起こす時間であり、N 0 0などはイベントである。 「イベントのノートを同様に設定残りはちょうど基本的な情報である任意のヘルプやアドバイスを高度に評価されて

+0

を – Botz3000

+0

あなたは本当に質問をしていない – Ricibob

+0

標識のセクション間の線を見つけます。例えばEventsセクションのすべてを使いたいと思ったら、他のセクションからは何も望みません。多くのサイズのファイルで利用できるようにする必要があります。問題は「私はこれについてどうやって行くのだろう」ということでした。 – Fornoreason1000

答えて

3

私はあなたのケースのために、この機能を作った:。。。

public List<string> GetFileKeyValues(string fileName, string key) 
     { 
      List<string> res = new List<string>(); 
      try 
      { 
       if (!string.IsNullOrEmpty(key)) 
       { 
        using (System.IO.StreamReader tr = new System.IO.StreamReader(fileName)) 
        { 
         bool keyFound = false; 
         while (!tr.EndOfStream) 
         { 
          string s = tr.ReadLine().ToLower(); 
          if (s.Contains(key.ToLower())) keyFound = true; 
          else 
          { 
           if (keyFound) 
           { 
            if (!s.Contains("{") && !s.Contains("}")) res.Add(s); 
            if (s.Contains("}")) break; 
           } 
          } 
         } 
         tr.Close(); 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
      return res; 
     } 

使用のは、私たちが望むとしましょうそう[SyncSequence]値を取得する:?あなたは問題があるんどのような特定の部分で

List<string> res = GetFileKeyValues(@"C:\t.txt", "[SyncSequence]"); 
if(res != null && res.Count > 0) 
{ 
    //Do Something with res[0], it will return 0 = B 180000 
    //So you split it by "=" to get B 180000 or any thing you want... 
} 
+0

ありがとう、これは私が探していたものです。残りの部分は、値を使用するときに処理できます。 – Fornoreason1000

+0

+1、あなたは歓迎です –

関連する問題