01.06.2005, 07:11 | #1 |
Участник
|
Чтение из текстового файла?!
Какими АХАРТА функциями можно прочитать текстовый файл?! Или придётся вызывать Винайпи функции?!
|
|
01.06.2005, 14:12 | #2 |
Участник
|
Например, можно так:
PHP код:
|
|
02.06.2005, 09:15 | #3 |
Участник
|
Re: Чтение из текстового файла?!
Цитата:
Изначально опубликовано woland666
Какими АХАРТА функциями можно прочитать текстовый файл?! Или придётся вызывать Винайпи функции?! либо TextBuffer, как сказал Ace of Database, либо AsciiIO, CommaIO у обоих методов есть достоинства и недостатки см. также http://axapta.mazzy.ru/lib/textfile/ |
|
16.06.2005, 07:23 | #4 |
Участник
|
А как читать файл в обратном порядке или с нужной позиции? Или файл читается только в одном направлении?!
|
|
16.06.2005, 15:35 | #5 |
Участник
|
А может считать и потом использовать функцию strReverse из Global?
|
|
19.11.2009, 19:07 | #6 |
Участник
|
Цитата:
Сообщение от 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 |
Moderator
|
Наверное стоит привести полный код и полное описание сценария воспроизведения. Считываю в TextBuffer файлы по несколько мегабайт на всех версиях Ax (от 2.6 до 5-ки) - на потери не жалуются.
|
|
19.11.2009, 22:52 | #8 |
----------------
|
Цитата:
Сообщение от Zeratul
Такое ощущение, что textBuffer.size не достаточно велик. textBuffer.size() выдаёт 568.
Содержимое файла вот такое: http://belcheese.by/img/readme.txt может дело в том, что там перевод строки в один байт (0A)? |
|
20.11.2009, 11:47 | #9 |
Участник
|
Цитата:
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 |
Участник
|
Разобрался.
В моём коде на самом деле присутствовала ещё функция LTRIM. Вот она то падлюка и обрезала строку до 250 символов. Будьте бдительны. Было X++: strItemId = strrtrim(strltrim(conpeek(c, 1))); X++: strItemId = conpeek(c, 1); strItemId = strrtrim(strltrim(strItemId)); |
|
26.11.2009, 11:33 | #11 |
Участник
|
Вам еще по идее кодировку надо указать другую (юникод) при считывании из файла
|
|