Показать сообщение отдельно
Старый 10.10.2008, 13:57   #9  
coolibin is offline
coolibin
Участник
 
264 / 68 (3) ++++
Регистрация: 07.04.2005
Цитата:
Сообщение от 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));
    }