|
![]() |
#1 |
Участник
|
Coolibin,
Необходимо модифицировать запись. Благодарю, кажется начинает проясняться. Думаю, и в правду нужно обработать записи, модифицировать, и когда всё закончится снова сохранить в файле. P.S. Ice, если открывать с атриббутом "A", то в контейнер при попытке чтения ничего не возвращается. Последний раз редактировалось bobski; 10.10.2008 в 06:58. |
|
![]() |
#2 |
Участник
|
Но возникла другая проблема.
Сначала запись читается в контейнер. Затем, полученный контейнер добавляется к некоторому новому контейнеру + признак новой строки. И так пока IO_Status::Ok. После того, как цикл закончится в тот же файл забивается собранный нами контейнер. Все вроде бы правильно, но в самом файле, начиная со второй строки данные сдвигаются на ячейку вправо. Т.е. если просмотреть в текстовом виде, то начиная со второго номера перед каждой строкой стоит строковый разделитель. Как это победить? Ничего не выходит ![]() Вот как это делаю: X++: AsciiIO = new AsciiIO(FileName, "R"); AsciiIo.inRecordDelimiter('\r\n'); AsciiIo.inFieldDelimiter(';'); while (AsciiIo.status() == IO_Status::Ok) { Data_Container = AsciiIo.read(); ontainer_New += conins(Data_Container,conlen(Data_Container)+1,'\n'); ... } AsciiIO = new AsciiIO(FileName, "W"); AsciiIo.OutRecordDelimiter('\r\n'); AsciiIo.OutFieldDelimiter(';'); AsciiIo.write(Data_container_New); |
|
![]() |
#3 |
Участник
|
Цитата:
Сообщение от bobski
![]() Как это победить? Ничего не выходит
![]() Вот как это делаю: X++: AsciiIO = new AsciiIO(FileName, "R"); AsciiIo.inRecordDelimiter('\r\n'); AsciiIo.inFieldDelimiter(';'); while (AsciiIo.status() == IO_Status::Ok) { Data_Container = AsciiIo.read(); ontainer_New += conins(Data_Container,conlen(Data_Container)+1,'\n'); ... } AsciiIO = new AsciiIO(FileName, "W"); AsciiIo.OutRecordDelimiter('\r\n'); AsciiIo.OutFieldDelimiter(';'); AsciiIo.write(Data_container_New); X++: AsciiIo.inRecordDelimiter('\r\n'); AsciiIo.inFieldDelimiter(';'); while (AsciiIo.status() == IO_Status::Ok) { Data_Container = AsciiIo.read(); if (Data_Container != connull()) { f1 = conpeek(Data_Container, 1); f1 = f1 + 1; // изменяем значение первого поля Data_Container = conPoke(Data_Container, 1, f1); //Вata_Сontainer_New += conins(Data_Container,conlen(Data_Container)+1,'\n'); Data_container_New = conIns(Data_container_New, conLen(Data_container_New) + 1, Data_Container); //... } } AsciiIO = new AsciiIO(@"D:\TEMP\test2.csv", "W"); AsciiIo.OutRecordDelimiter('\r\n'); AsciiIo.OutFieldDelimiter(';'); //AsciiIo.write(Data_container_New); for (i = 1; i < conlen(Data_container_New) + 1; i++) { AsciiIo.write(conpeek(Data_container_New, i)); } |
|
![]() |
#4 |
Участник
|
|
|