AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.10.2008, 06:20   #1  
bobski is offline
bobski
Участник
 
38 / 11 (1) +
Регистрация: 01.10.2008
Coolibin,
Необходимо модифицировать запись.

Благодарю, кажется начинает проясняться. Думаю, и в правду нужно обработать записи, модифицировать, и когда всё закончится снова сохранить в файле.

P.S. Ice, если открывать с атриббутом "A", то в контейнер при попытке чтения ничего не возвращается.

Последний раз редактировалось bobski; 10.10.2008 в 06:58.
Старый 10.10.2008, 10:09   #2  
bobski is offline
bobski
Участник
 
38 / 11 (1) +
Регистрация: 01.10.2008
Но возникла другая проблема.
Сначала запись читается в контейнер. Затем, полученный контейнер добавляется к некоторому новому контейнеру + признак новой строки. И так пока 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);
Старый 10.10.2008, 13:57   #3  
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));
    }
Старый 10.10.2008, 14:55   #4  
bobski is offline
bobski
Участник
 
38 / 11 (1) +
Регистрация: 01.10.2008
Все вроде получается, если не менять первый элемент в контейнере.
Спасибо.

Цитата:
Сообщение от coolibin Посмотреть сообщение
Фигня получается. Сделай как-нибудь так:
X++:
 ...
            f1 = conpeek(Data_Container, 1);
            f1 = f1 + 1; // изменяем значение первого поля
            Data_Container = conPoke(Data_Container, 1, f1);
 ...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Стандартный импорт данных. Обновление sparur DAX: Функционал 0 24.03.2008 19:07
C# and AX Development: Reading CSV files in AX (Axapta) Blog bot DAX Blogs 0 07.12.2007 17:30
Сводное планирование - изменения&изменения мин. Alexm DAX: Прочие вопросы 1 05.04.2005 10:43
Глюк : не сохраняются изменения в коде Logger DAX: Администрирование 2 31.01.2005 12:02
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:45.