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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.10.2007, 11:36   #1  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Число из файла
Есть файл. Загружаем его в BinData:
X++:
BinData         binData;
;
 binData = new BinData();
            if (binData.loadFile(fileName)) //only works if file not locked
            {
                _salesLine.Jls_MFJFile  = binData.getData();
                _salesLine.Jls_Width    = binData
            }
В структуре файла хранятся 4 байтные числа (int). Необходимо, зная смещение, вытащить число в аксапту. В случае Binary, как это сделать, понятно. Но как с BinData?
Старый 08.11.2007, 13:51   #2  
snirk is offline
snirk
Участник
 
36 / 12 (1) ++
Регистрация: 11.07.2007
X++:
static void Job32(Args _args)
{
   BinData              binData;
   container            c;
   anytype              b;
   str                  s,ss;
;
         binData = new BinData();
            if (binData.loadFile('C:\\tst.txt')) //only works if file not locked
            {
                // Если файл текстовый, то можно так
               s = bindata.getStrData();
               // Если данные не в текстовом формате
               c = bindata.getData();
               ss = bindata::dataToString(c);
            }
    binData.finalize();
    print s;
    print ss;
            
    pause;
}
Данные в BinData.GetData типа BLOB в контейнере. Данные можно получать из строк. Например, в текстовом файле содержатся строки:
X++:
9 8 7
99 66
начение s = "9 8 7[перевод строки]99 66
значение ss = "3 9 20 3 8 20 3 7 0d 0a 3 9 3 9 20 3 6 3 6"
3 - как я понимаю идет перед любым значением
20 - пробел
0d 0a - перевод строки
Старый 08.11.2007, 14:22   #3  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
так на самом деле выдаются Hex значения реальных чисел. Пришлось бы еще анализом строки и переводом чисел заниматься. Намного легче описать readFile. Правда, влом было описывать функции позиционирования в файле. Поэтому делаю readFile пока не наткнусь на нужный offset в файле.
X++:
client server static int ReadFile( int _hFile, int _nNumberOfBytesToRead )
{
    DLL         _winApiDLL  = new DLL('KERNEL32');
    DLLFunction _readFile   = new DLLFunction(_winApiDLL, 'ReadFile');

    Binary      _data       = new Binary(_nNumberOfBytesToRead);
    Binary      _data2      = new Binary(0x4);
    int         _ret;
    ;

    _readFile.returns(ExtTypes::DWord);

    _readFile.arg( ExtTypes::DWord,
                   ExtTypes::Pointer,
                   ExtTypes::DWord,
                   ExtTypes::Pointer,
                   ExtTypes::DWord);

    _ret =_readFile.call( _hFile, _data, _nNumberOfBytesToRead, _data2, 0);

    if (!_ret)
        error(winApi::formatMessage(winApi::getLastError()));

    return _data.dWord(0);
}

Последний раз редактировалось Eldar9x; 08.11.2007 в 14:31.
Старый 08.11.2007, 15:28   #4  
snirk is offline
snirk
Участник
 
36 / 12 (1) ++
Регистрация: 11.07.2007
Цитата:
В случае Binary, как это сделать, понятно. Но как с BinData?
C Binary как раз все понятно.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Проблема загрузки файла longson DAX: Программирование 3 06.06.2007 12:06
Возникла проблема с получением имени файла при создании своего канала вывода отчетов. oleg_kap DAX: Программирование 3 06.06.2006 14:12
Разбить число sah DAX: Программирование 5 26.02.2006 17:24
Установить время файла? SnowMan DAX: Программирование 5 01.10.2003 14:42
Сохранение файла в таблице Andrew Besedin DAX: Программирование 2 10.06.2003 06:48

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

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

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