Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Vovik
Зарегистрирован: 04.05.2008 Сообщения: 57
|
Добавлено: Ср Сен 29, 2010 3:48 am Заголовок сообщения: Прямой доступ к файлу *.DAT |
|
|
Из приложения на VB или MapBasic прочесть DAT файл напрямую.
Все читается но вместо чисел козюбрики. Как эти козюбрики перевести в числа.
Помогите! |
|
Вернуться к началу |
|
|
Андрей Могильный
Зарегистрирован: 21.03.2006 Сообщения: 864
|
Добавлено: Ср Сен 29, 2010 6:48 am Заголовок сообщения: |
|
|
DAT - это почти DBF, кодировку не помню, подбирайте - WIN1251 или DOS. |
|
Вернуться к началу |
|
|
Vovik
Зарегистрирован: 04.05.2008 Сообщения: 57
|
Добавлено: Ср Сен 29, 2010 7:38 am Заголовок сообщения: |
|
|
Благодарю за то, что откликнулись.
Верно что это почти DBF и своим приложением читаю файл как DBF однако числа полей типа Float, Smallint и Integer отображаются как к примеру "ЂG@" или "PГ" и т.п.Числа полей типа Decimal отображаются как есть.
При внимательном рассмотрении в этих козюбриках закодированы числа причем в зависимости от типа меняется соостетственно разрядность (количество козюбриков). Дело собственно не в козюбриках а кодах получаеммых ASC().
Например число 1 типа Float имеет длину знаков коды которых "0 0 0 0 0 0 240 63"
а число 2 "0 0 0 0 0 0 0 64"
Так вот как последовательность кодов перевести в десятичное число. |
|
Вернуться к началу |
|
|
SergS
Зарегистрирован: 01.11.2010 Сообщения: 51
|
Добавлено: Пн Ноя 01, 2010 6:13 pm Заголовок сообщения: DAT=DBF, но.... |
|
|
Структура DAT-файла - это чистый DBF, вплоть до заголовка, исключение одно - все спец. типы данных (integer, smallint, float) хранятся в родном для компутера формате. если программой считывать , то просто объявляешь переменную соответствующего вида, встаешь на начало поля и читаешь, что то типа вот такого:
Get [#] filenum , [ position ] , var_name
количество считанных байт зависит от типа (т.е. длины) переменной
кракозябры появляются, если читать dat-файл как dbf - т.е, предполагая, что все данные представляются в символьном виде (как и в оригинальном dbf-файле) |
|
Вернуться к началу |
|
|
Gazi
Зарегистрирован: 14.02.2010 Сообщения: 30
|
Добавлено: Пн Июн 06, 2011 8:47 pm Заголовок сообщения: |
|
|
если нужно сделать наоборот?
есть таблица, оператором Select выбираю нужные значения. можно ли результат сохранить в виде .dat ? |
|
Вернуться к началу |
|
|
Андрей Могильный
Зарегистрирован: 21.03.2006 Сообщения: 864
|
Добавлено: Чт Июн 09, 2011 3:26 pm Заголовок сообщения: |
|
|
Сохраните ее как таблицу MapInfo - Commit Table - в результате получите 4 файла, файл DAT оставляете, остальные убиваете. |
|
Вернуться к началу |
|
|
Arhara
Зарегистрирован: 18.02.2009 Сообщения: 400 Откуда: Moscow, RF
|
Добавлено: Пт Июн 10, 2011 2:38 pm Заголовок сообщения: |
|
|
Gazi писал(а): |
если нужно сделать наоборот?
есть таблица, оператором Select выбираю нужные значения. можно ли результат сохранить в виде .dat ? |
Чем не устраивает экспорт в DBF (стандартная команда) с последующим переименованием файла? |
|
Вернуться к началу |
|
|
Gazi
Зарегистрирован: 14.02.2010 Сообщения: 30
|
Добавлено: Вс Июн 12, 2011 11:40 am Заголовок сообщения: |
|
|
все манипуляции осуществляю из созданной панели средствами MapBasic. Поэтому нужно реализовать так, чтоб все делалось автоматически, без участия пользователя (его дело - просто нажать кнопку). Попробую вариант с Commit Table |
|
Вернуться к началу |
|
|
|