//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); }