INI-Parser Exception, когда есть дубликаты клавишC#

Место общения программистов C#
Ответить
Anonymous
 INI-Parser Exception, когда есть дубликаты клавиш

Сообщение Anonymous »

Я только что установил INI-Parser 2.5.2 (для приложения .NET 4.7) и столкнулся с этим.[INSTANCES]
NUMVTC=3
VTC=0,3330,ABCD,Descr1
VTC=1,3331,EFGH,Descr2
VTC=2,3332,IJKL,Descr3
< /code>
Чтобы проверить его, я попытался проанализировать выше раздел, используя: < /p>
List ls = GetIniSectionData("path-to-some-ini", "instances", "VTC");
< /code>
кусок кода, где брошено исключение: < /p>
public static List GetIniSectionData(string iniFilePath, string section, string key)
{
List ls = new List();
var parser = FileIniDataParser();
IniData data = parser.ReadFile(iniFilePath); // barfs here: Parsing exception: Duplicate key 'VTC' found in section 'INSTANCES'
int cnt = data[section].Count;
while(!string.IsNullOrEmpty(data[section][key]))
{
ls.add(data[section][key]);
}
return ls;
}

Как мне обойти дубликат вопроса о значении ключей? Не уверен, насколько это надежно, я думаю, я скоро узнаю! < /P>
var vals = File.ReadLines(sMappingFilePath)
.SkipWhile(line => !line.StartsWith("[instances]",
StringComparison.CurrentCultureIgnoreCase))
.Skip(1)
.TakeWhile(line => !string.IsNullOrEmpty(line))
.Select(line => new
{
Key = line.Split('=')[0],
Value = line.Split('=')[1]
});
foreach (var val in vals)
{
string[] saValues = val.Value.Split(',');

if (saValues.Length == 4)
{
int vtcNum = Convert.ToInt16(saValues[0]);
int vtcPort = Convert.ToInt16(saValues[1]);
string vtcName = saValues[2];
string vtcDescr = saValues[3];
...
}
}


Подробнее здесь: https://stackoverflow.com/questions/796 ... icate-keys
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»