使用存储在文件中的变量来触发事件

时间:2012-04-13 06:24:03

标签: c# windows file

我是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等是事件。类似的设置“事件说明。其余的只是基本信息。任何帮助或建议在高级。

1 个答案:

答案 0 :(得分: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... 
}