Правильно написанная и правильно используемая программа D4 не должна оставлять после себя файлы .MB, как вы описываете.
Я настоятельно призываю вас следовать описанной ниже процедуре, чтобы вы могли удовлетворить себя в этом заблуждении. Файлы MB не должны оставаться в обычном режиме; надеюсь, что как только вы это сделаете, будет достаточно просто выяснить, почему они остались позади в вашем деле.
Создайте новую папку проекта, назовите ее D: \ Test on диск разработки и скопируйте в него файлы существующей базы данных Paradox. Я использовал базу данных Venues, которая в D7 (более ранней версии у меня нет) находится в папке Delphi Shared \ Data. Он состоит из файла данных Venues.DB, индекса Venues.PX и файла заметок Venues.MB. Если D4 не поставляется с базой данных Venues, используйте другую. Между прочим, смысл копирования файлов базы данных в новую папку проекта заключается в том, что база данных, скорее всего, будет повреждена в ходе следующих действий.
Используя программу конфигурации BDE, создайте новый Стандарт, псевдоним Paradox указывает на папку проекта.
Запустите D4 и создайте новый проект, который включает TDataBase, TQuery, TDataSource и TDBGrid для отображения базы данных TQuery. Установите для свойства TQuery SQL значение
select * from venues
Важное замечание: при сохранении проекта убедитесь, что свойство Connected в TDataBase имеет значение False и Свойство TQuery Active также имеет значение False. Вставьте код в событие FormCreate, чтобы открыть Query1
Открыть окно CMD в каталоге вашего проекта.
Скомпилировать и запустить программу.
Пока программа открыта, выполните
dir * .mb
в приглашении CMD.
Вы должны увидеть
Venues.MB
и файл с именем, например
_QSQ1.MB
, который является временным .MB файлом, который BDE открыл для Query1.
Закройте программу и повторите шаг 7.
Теперь вы должны видеть только
Venues.MB
, перечисленных в списке, потому что BDE Код закрыл и удалил временный файл .MB. Вот что должно произойти .
Запустите программу еще раз. и на этот раз, после того, как откроется форма, нажмите Ctrl-F2, чтобы сбросить ее (принудительно закрыть, не выполняя свой обычный код завершения работы.
Повторите шаг 7, и вы должны найти там два файла .MB
Venues.MB
и временный файл с именем, например
_QSQ1 .MB
, поскольку у кода BDE не было возможности удалить временный файл .MB
Если вы продолжите повторять шаги 9 и 10, вы обнаружите, что лишний файл .MB остался позади (с увеличивающимся числом в конце его имени), поэтому BDE в конечном итоге жалуется, что вы у меня закончились файловые дескрипторы.
Боюсь ваша задача состоит в том, чтобы выяснить, почему это происходит:
-
Возможно, вы просто нажали Ctrl-F2 для завершения программы, и в этом случае решение очевидно, не надо!
Иначе что-то должно быть не так, как программа закрывается. Это может быть любая из множества вещей, но только вы можете видеть свой код. Я хотел бы найти что-то вроде обработчика исключений, который был настроен в событии FormClose для подавления нежелательного исключения во время завершения работы. Такого рода «быстрое исправление», которое было предназначено, чтобы скрыть проблему, не находя и не устраняя проблему, вызывая ее довольно часто в эпоху D4.
Во всяком случае, удачи! С некоторой систематизацией c отладки, надеюсь, она вам не понадобится /