Используя базу данных, вы частично переименовали часть проблемы от «ввода имен файлов и отслеживания множества файлов данных» до «ввода имени набора данных и отслеживания множества наборов данных».
В обоих случаях, например, пользователь или программа должны создать новое имя файла / набора данных и выбрать из списка файлов / наборов данных, чтобы открыть их позже. И в обоих случаях вам нужно вызвать функцию с именем что-то вроде «DeleteDataSet».
Вы можете пересмотреть вопрос о том, действительно ли вам нужна база данных (с соответствующей кривой обучения для API, как определить структуру данных, обновить ее в поле, когда что-то меняется, просмотреть данные в средстве просмотра, получить доступ к данным программно, проприетарный формат, обслуживание базы данных, инструменты восстановления, установка и т. д.) Я уверен, что вы могли бы изучить все это, и они могут быть полезны в будущих проектах. Но, возможно, более простой подход был бы более уместным и адекватным для этого одноразового проекта инженером, не занимающимся программным обеспечением.
Если вы хотите, чтобы в одной папке было много уникальных, автономных файлов данных, я бы рекомендовал вам придерживаться того, что работает: используйте один CSV-файл на набор данных. (Были ли у вас проблемы со скоростью или размером для файлов CSV, содержащих один набор данных? Это было бы огромное количество данных!) Одна приятная вещь о файлах CSV - это то, что вы можете просто вставить их в редактор для просмотра или редактирования. ...
И затем добавьте второй файл, который содержит имена файлов и другую описательную информацию. Этот файл будет простым TIniFile:
[My Name one]
Date=06 June 2010
StartTime=12:30pm
StopTime=3:15pm
FileName=Data1.csv
[My Name two]
...
Инструменты, доступные в Delphi для TIniFile, позволят вам легко управлять этим списком, включая ReadSections в список строк, который вы можете просто назначить в поле со списком, чтобы пользователь мог выбрать набор данных. (См. Пример ниже) И, как и файлы CSV, вы можете просто отредактировать файл .ini в любом текстовом редакторе.
Вам нужно будет создать пользовательский интерфейс, чтобы пользователь мог удалить набор данных (раздел в INI-файле и связанном CSV-файле). Чтобы дать вам представление о том, как будет использоваться INI-файл, вот псевдокод для удаления набора данных:
(В Инспекторе объектов IDE установите ComboBox.Style: = csDropDownList, чтобы запретить пользователю вводить имя, которое не существует.)
Загрузить комбинированное окно, в котором отображаются доступные наборы данных.
1. ComboBox.Items := IniFile.ReadSections;
В обработчике события OnSelect комбинированного блока:
2. DeleteFile(IniFile.ReadString(CombBox.Text, 'FileName', ''));
3. IniFile.EraseSection(ComboBox.Text); // remove the section from the inifile
Черт, это не так много кода, даже после того, как вы добавите немного защиты и проверки ошибок!
Возможно, вышеупомянутое решение будет отвергнуто другими здесь как попытка поставить круглый колышек в квадратное отверстие или заново изобрести колесо. И я мог бы согласиться с ними. Есть хорошие аргументы против этого подхода, в том числе распространение многих файлов. Но если бы это был я, я бы по крайней мере считал этот подход простым и не требующим ничего нового, кроме того, что вы изучаете объект TIniFile, который является довольно мощным.