Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 07.07.2018, 14:51   #1
V_a_d
Пользователь
 
Регистрация: 12.02.2011
Сообщений: 15
Репутация: 10
По умолчанию Конвертер из ISAM в Firebird

Здравствуйте!
Пишу конвертер из БД ISAM в Firebird
Упрощенная часть кода чтения данных из dat файла:

Код:

            AssignFile(FileDat, DE1.Text + '\Eng.dat');
            Reset(FileDat);

            for i := 0 to x do Read(FileDat, b);

            while not EOF(FileDat) do
             begin
               Read(FileDat, b);

               Read(FileDat, b); ValInt := b;
               Read(FileDat, b); ValInt := ValInt + b * aa;
               Read(FileDat, b); ValInt := ValInt + b * bb;
               Read(FileDat, b); ValInt := ValInt + b * cc;
               ID := ValInt;

               if not EOF(FileDat) then Read(FileDat, b);
             end;

            CloseFile(FileDat);

Все читается на ура. Все работает почти так как надо.

Проблема в том, что считываются ранее удаленные записи в ISAM.

Дат файлы и структуру в них, смотрю утилитой DBISAM Viewer. В ней есть чекбокс, показывать все нормальные, все удаленные и все записи с ошибками.

Как можно отловить удаленные записи и не переносить в новую базу?

Последний раз редактировалось V_a_d; 07.07.2018 в 15:17.
V_a_d вне форума   Ответить с цитированием
Старый 08.07.2018, 20:52   #2
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,002
Репутация: 6348
По умолчанию

Там же признак удаленной записи по идее где-то должен быть. Как в dbf. Или взять провайдер для этой СУБД, который различает удалена или нет запись. Кстати что за СУБД? FoxPro, Paradox, dBase, DB2 или еще что?
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума   Ответить с цитированием
Старый 09.07.2018, 14:50   #3
V_a_d
Пользователь
 
Регистрация: 12.02.2011
Сообщений: 15
Репутация: 10
По умолчанию

Точно не скажу, но вроде как DBISAM (dat файл + idx файл). Открываю файлы для просмотра утилитой DBISAM viewer v2.52

Искал компонент DBISAM 3, так и не нашел. Версией выше ругается вроде на несовместимость (точно уже не помню)
V_a_d вне форума   Ответить с цитированием
Старый 09.07.2018, 16:06   #4
V_a_d
Пользователь
 
Регистрация: 12.02.2011
Сообщений: 15
Репутация: 10
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Там же признак удаленной записи по идее где-то должен быть. Как в dbf.
Вроде признак считывается при запросe SQL командой Select, а я читаю файл по байтно, т.к. нет возможности подключиться как к БД
V_a_d вне форума   Ответить с цитированием
Старый 09.07.2018, 17:46   #5
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,002
Репутация: 6348
По умолчанию

Этот признак где-то в записи и находится. Разберись с устройством записи, в hex-редакторе посмотри и вычисли где он )

Цитата:
т.к. нет возможности подключиться как к БД
Почему? Есть же DBISAM ODBC Driver, скачай, попробуй соединиться и запросом данные выдернуть. Особенностей его не подскажу, не пользовался. Если получится, то это лучше чем по байтно данные разбирать
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 09.07.2018 в 20:51.
Аватар вне форума   Ответить с цитированием
Старый 12.07.2018, 20:02   #6
V_a_d
Пользователь
 
Регистрация: 12.02.2011
Сообщений: 15
Репутация: 10
По умолчанию

Я бы не заморачивался побайтно разбирать базу, если бы нашел DBISAM ODBC Driver или подходящий компонент. Как то находил компонент DBISAM версии 4, но он не совместим. Нужен версии 3. Третью версию компонента не нашел. Я правда сижу на Delphi 7.
V_a_d вне форума   Ответить с цитированием
Старый 13.07.2018, 23:06   #7
Человек_Борща
Модератор
Заслуженный модератор
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Адрес: Республика Беларусь, г. Минск
Сообщений: 11,447
Репутация: 2769
По умолчанию

Создайте новую базу с 2 идентичными записями, одну из них удалите, сравните итоги. Будет Вам счастье при побайтном разборею
Человек_Борща вне форума   Ответить с цитированием
Ответ

Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка delphi 7 could not find installable isam Kursant_vv БД в Delphi 2 05.03.2015 16:09
Не запускается проект и сама программа на других ПК "Не удалось найти устанавливаемый ISAM " Ookami08 Общие вопросы Delphi 0 17.05.2012 19:35
Конвертер Макспч21 Помощь студентам 0 05.05.2012 12:19
Конвертер VanHelsing Софт 0 22.07.2010 11:46


00:52.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru