Exemplo n.º 1
0
        //private ProgramKey ParseKey(string key)

        private bool ParseProgramData(List <string> line, int startIndex, DeviceType device, out ProgramData data)
        {
            data = null;
            if (regex3.IsMatch(line[startIndex].Trim()))
            {
                data = new ProgramData();
                //начинаем считывание частот и времен
                for (int i = startIndex; i < line.Count; i++)
                {
                    string freq = line[i].Trim();
                    if (regex3.IsMatch(freq))
                    {
                        float  f    = float.Parse(freq.Replace(',', '.'), CultureInfo.InvariantCulture.NumberFormat);
                        string time = line[i + 1].Trim();
                        if (!regex3.IsMatch(time))
                        {
                            throw new Exception(Lang.Phrase("Частота найдена, но не найдено время для нее"));
                        }
                        if (f <= 0 || f > DeviceInfo.GetMaxFreq(device))
                        {
                            throw new Exception(Lang.Phrase("Частота '{0}' выходит за допустимый диапазон", f));
                        }
                        UInt16   t  = UInt16.Parse(time);
                        FreqTime ft = new FreqTime(f, t);
                        data.Add(ft);
                        i++;
                    }
                    else
                    {
                        if (!regex4.IsMatch(freq))
                        {
                            throw new Exception(Lang.Phrase("Неизвестный завершающий символ '{0}'", freq));
                        }
                        break;
                    }
                }

                if (data.Count > DeviceInfo.GetMaxFreqCount(device))
                {
                    throw new Exception(Lang.Phrase("Число частот программы превышает допустимое значение для данного типа устройства"));
                }

                return(true);
            }

            return(false);
        }