powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Microsoft.Jet.OLEDB.4.0" не зарегистрирован
4 сообщений из 54, страница 3 из 3
Microsoft.Jet.OLEDB.4.0" не зарегистрирован
    #39123276
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TbarrabasDima T,

В конце ты не ставишь EOF-маркер = 1A
Не заметил. Похоже его никто не проверяет. В FoxPro открываются, в экселе тоже.

У тебя где-то не прочиталось?

Добавил. Добавь в коде выделенную строчку
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
        public void Close() {
            if (fs == null) return;
            // Конец файла
            fs.WriteByte(0x1A);
            // Заголовок
            fs.Position = 0;
            var buf = new Byte[32];
            buf[0] = 0x03; //  	dBASE III, dBASE IV, dBASE 5, dBASE 7, FoxPro, FoxBASE+
            buf[1] = (Byte)(DateTime.Today.Year - 1900); // Дата последней модификации в виде ГГММДД
            buf[2] = (Byte)(DateTime.Today.Month);
            buf[3] = (Byte)(DateTime.Today.Day);
            buf[4] = (Byte)(row_count & 0xFF); // Число записей в базе 
            buf[5] = (Byte)((row_count >> 8) & 0xFF);
            buf[6] = (Byte)((row_count >> 16) & 0xFF);
            buf[7] = (Byte)((row_count >> 24) & 0xFF);
            Int32 hdr = 32 + 32 * fields.Length + 1; // Полная длина заголовка (с дескрипторами полей)
            buf[8] = (Byte)(hdr & 0xFF);
            buf[9] = (Byte)((hdr >> 8) & 0xFF);
            buf[10] = (Byte)((row_size + 1) & 0xFF); // Длина одной записи
            buf[11] = (Byte)(((row_size + 1) >> 8) & 0xFF);
            buf[29] = (Byte)(encoder.CodePage == 866 ? 0x65 : 0xC9); // Кодовая страница
            fs.Write(buf, 0, 32);
            // Поля
            foreach (var f in fields) {
                for (Int32 i = 0; i < 32; i++) buf[i] = 0;
                System.Text.Encoding.Default.GetBytes(f.name).CopyTo(buf, 0); // Имя поля
                buf[11] = (Byte)f.type; // Тип поля
                buf[16] = (Byte)f.size; // Полная длина поля
                buf[17] = (Byte)f.digs; // Число десятичных разрядов
                fs.Write(buf, 0, 32);
            }
            fs.WriteByte(13);
            fs.Close();
            fs = null;
        }




Просто начал сравнивать 2 файла в хексе и заметил, полез в доку по формату, там написано что должен быть маркер.
...
Рейтинг: 0 / 0
Microsoft.Jet.OLEDB.4.0" не зарегистрирован
    #39123282
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну всё, полное соответствие с файлами созданными через тормозной OLEDB:)
Спасибо, Dima T.
...
Рейтинг: 0 / 0
Microsoft.Jet.OLEDB.4.0" не зарегистрирован
    #39123286
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я по этой описаловке делал. Там нет его.
Смотрел в FoxPro - его тоже нет, если использовать родные DBF, но если из фокса выгрузить в формат dBASE IV - то есть.
...
Рейтинг: 0 / 0
Microsoft.Jet.OLEDB.4.0" не зарегистрирован
    #39123290
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЯ по этой описаловке делал. Там нет его.
Смотрел в FoxPro - его тоже нет, если использовать родные DBF, но если из фокса выгрузить в формат dBASE IV - то есть.
Я тут смотрел
...
Рейтинг: 0 / 0
4 сообщений из 54, страница 3 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Microsoft.Jet.OLEDB.4.0" не зарегистрирован
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]