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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.06.2005, 07:11   #1  
woland666 is offline
woland666
Участник
 
12 / 10 (1) +
Регистрация: 31.05.2005
Post Чтение из текстового файла?!
Какими АХАРТА функциями можно прочитать текстовый файл?! Или придётся вызывать Винайпи функции?!
Старый 01.06.2005, 14:12   #2  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
877 / 649 (23) +++++++
Регистрация: 14.10.2004
Например, можно так:
PHP код:
static void Job60(Args _args)
{
    
TextBuffer  textBuffer = new TextBuffer();
    
int         i;
    ;
    
textBuffer.fromFile("c:\\\\readme.txt");

    
textBuffer.setText(strrem(textBuffer.getText(), "\r")); //на всякий случай. Может быть, можно обойтись и без этого

    
for (0<= textBuffer.numLines(); i++)
    {
        
info(strLine(textBuffer.getText(), i));
    }

Старый 02.06.2005, 09:15   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Re: Чтение из текстового файла?!
Цитата:
Изначально опубликовано woland666
Какими АХАРТА функциями можно прочитать текстовый файл?! Или придётся вызывать Винайпи функции?!
Поищите здесь. Уже обсуждалось
либо TextBuffer, как сказал Ace of Database, либо AsciiIO, CommaIO
у обоих методов есть достоинства и недостатки

см. также http://axapta.mazzy.ru/lib/textfile/
__________________
полезное на axForum, github, vk, coub.
Старый 16.06.2005, 07:23   #4  
woland666 is offline
woland666
Участник
 
12 / 10 (1) +
Регистрация: 31.05.2005
А как читать файл в обратном порядке или с нужной позиции? Или файл читается только в одном направлении?!
Старый 16.06.2005, 15:35   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
А может считать и потом использовать функцию strReverse из Global?
Старый 19.11.2009, 19:07   #6  
Zeratul is offline
Zeratul
Участник
 
75 / 10 (1) +
Регистрация: 29.09.2005
Адрес: Минск
Цитата:
Сообщение от mazzy Посмотреть сообщение
Поищите здесь. Уже обсуждалось
либо TextBuffer, как сказал Ace of Database, либо AsciiIO, CommaIO
у обоих методов есть достоинства и недостатки

см. также http://axapta.mazzy.ru/lib/textfile/


Добрый день!
Написал довольно большой модуль по Экспорту данных из файла. А вот потом обнаружилось, что большие куски текста Аксапта при считывании обрезает.
Такое ощущение, что textBuffer.size не достаточно велик. textBuffer.size() выдаёт 568.

Содержимое файла вот такое: http://belcheese.by/img/readme.txt




Метод, описанный в статье http://axapta.mazzy.ru/lib/commaio/ тоже обрезает символы

В чём дело ?

Последний раз редактировалось Zeratul; 19.11.2009 в 19:11.
Старый 19.11.2009, 20:35   #7  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Наверное стоит привести полный код и полное описание сценария воспроизведения. Считываю в TextBuffer файлы по несколько мегабайт на всех версиях Ax (от 2.6 до 5-ки) - на потери не жалуются.
Старый 19.11.2009, 22:52   #8  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Цитата:
Сообщение от Zeratul Посмотреть сообщение
Такое ощущение, что textBuffer.size не достаточно велик. textBuffer.size() выдаёт 568.
Содержимое файла вот такое: http://belcheese.by/img/readme.txt
и проводник также говорит, а он какой должен быть?
может дело в том, что там перевод строки в один байт (0A)?
Старый 20.11.2009, 11:47   #9  
Zeratul is offline
Zeratul
Участник
 
75 / 10 (1) +
Регистрация: 29.09.2005
Адрес: Минск
Цитата:
Сообщение от Андре Посмотреть сообщение
Наверное стоит привести полный код и полное описание сценария воспроизведения. Считываю в TextBuffer файлы по несколько мегабайт на всех версиях Ax (от 2.6 до 5-ки) - на потери не жалуются.

X++:
static void Job60(Args _args)
{
    TextBuffer  textBuffer = new TextBuffer();
    AsciiIO     AsciiIO    = new AsciiIO("c:\\\\readme.txt","r");
    int         i;
    container   c;
    str         s;
    ;

    AsciiIO.inFieldDelimiter("</td>");

    c = AsciiIO.read();

    for(i = 0; i <= conlen(c); i++)
    {
        s = conpeek(c,i);
        info(strfmt('%1',s));
    }

}

и



X++:
static void Job60(Args _args)
{
    TextBuffer  textBuffer = new TextBuffer();
    AsciiIO     AsciiIO    = new AsciiIO("c:\\\\readme.txt","r");
    int         i;
    container   c;
    str         s;
    ;


    textBuffer.fromFile("c:\\\\readme.txt");

    textBuffer.setText(strrem(textBuffer.getText(), "\r"));



    for (i = 0; i <= textBuffer.numLines(); i++)
    {
        info(strfmt('%2  %1',strLine(textBuffer.getText(), i),strlen(textBuffer.getText())));
    }
}
Текст файла по ссылке выше...
Старый 26.11.2009, 11:22   #10  
Zeratul is offline
Zeratul
Участник
 
75 / 10 (1) +
Регистрация: 29.09.2005
Адрес: Минск
Разобрался.

В моём коде на самом деле присутствовала ещё функция LTRIM. Вот она то падлюка и обрезала строку до 250 символов.

Будьте бдительны.

Было

X++:
strItemId = strrtrim(strltrim(conpeek(c, 1)));
Стало (рабочий вариант)


X++:
strItemId = conpeek(c, 1);

strItemId = strrtrim(strltrim(strItemId));
Старый 26.11.2009, 11:33   #11  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Вам еще по идее кодировку надо указать другую (юникод) при считывании из файла
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Чтение данных за пределами файла, временная таблица zemlyn DAX: Программирование 0 05.12.2005 18:32
Импорт данных из текстового файла mvf DAX: Программирование 17 18.04.2005 16:02
Импорт из текстового файла YVAS DAX: Программирование 8 08.04.2004 16:44
Импорт из текстового файла - один их вариантов. YVAS DAX: Программирование 5 13.01.2004 16:31
импорт из текстового файла ea DAX: Администрирование 1 05.06.2003 20:19

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

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

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