char ArrOfData[][m][n]={};//m-кол-во блоков записей
//n- максимальная длинна записи
Помогите разобраться с форматом csv
;060000970;;ДЕНИСОВ АЛЕКСАНДР АЛЕКСЕЕВИЧ;;;;;14537,07;;0,00;0,00;;0,00;;59547,07;0,00
как это можно сделать?
Я могу только фамилию через Memo и функцией AnsiPos, а как предпоследнее число даже не представляю.
Есть 2 пути решения:
1- если в csv есть какая-то логика- распарсить файл в многомерный массив по разделилелю ";" чтобы у тебя получилось
Код:
2- если логики в файле нет(что вряд-ли)- сделать то что тебе нужно нереально (если только у тебя на машине случайно нет исходников матрицы)
Если исхходники матрицы есть- скомпилируй их, а дальше из командной строки:
Код:
TAgentSmith* Smith= new TAgentSmith;
Snith->AddTarget(Neo);
Snith->AddTarget(Triniti);
Snith->AddTarget(то что тебе нужно сделать с cvs);
//ГЛАВНОЕ!!!!! НЕ ЗАБЫТЬ УДАЛИТЬ ОБЪЕКТ Smith
delete Smith;
Snith->AddTarget(Neo);
Snith->AddTarget(Triniti);
Snith->AddTarget(то что тебе нужно сделать с cvs);
//ГЛАВНОЕ!!!!! НЕ ЗАБЫТЬ УДАЛИТЬ ОБЪЕКТ Smith
delete Smith;
P.S.
п 2 - конечно, шутка;)
А по первому способу можно поподробней, исходничек как парсить
Если вопрос в том, как лучше поделить строку по разделителям, можно ещё местный FAQ почитать.
Код:
TStringList * row = new TStringList();
row->Delimiter = ";";
row->DelimitedText = temp_string; //где temp_string это строчка CSV файла
/*...........*/
ShowMessage(row->operator[](15).Trim());
row->Delimiter = ";";
row->DelimitedText = temp_string; //где temp_string это строчка CSV файла
/*...........*/
ShowMessage(row->operator[](15).Trim());
вроде как должна показать тебе чиселку которую надо, а если вместо 15 будет 3, то должна показать тебе ФИО.....
PS: если где-то ошибки, сильно ногами не пинать.... в работе не проверял, но как бы должна работать... :)