Vadim писал(а):Если же один датасет связан с несколькими таблицами, то нужно предусмотреть какой-то иной механизм создания таблиц, более удобный.
Какие есть варианты? Я ж говорю - мне пока непонятна именно идеология.
Что до файлового обмена, то тут есть пара подводных камушков.
1. нужна невозможность восстановления нешифрованных данных. Например, на моем домашнем десктопе крутится Vcom Undeleter (из VCOM/Avanquest Systemsuite), аналог Protected Recycle Bin из Norton Utilities. Обойти его перехват удаления можно только из-под чистого ДОСа, то есть восстановить можно почти всё удаленное. Лучший способ препятствовать восстановлению данных на диске - ничего на него не писать, не так ли? Варианты с затиранием данных случайной информацией или принудительным установлением длины файла в 0 неприемлемы: всегда есть возможность нажать reset до начала стирания. (да-да, я знаю, что можно сделать дамп памяти, посмотреть нужные участки в отладчике и т.п., сам так делал, но для этого нужна бОльшая квалификация, чем запустить Unerase сотоварищи.
Вариант с RAM-диском тоже неприемлем в силу доступности этого диска.
То есть, файловый обмен должен проходить двумя файлами: входной и выходной, без создания промежуточных. Причем если выходной может быть в любом формате, то входной обязан быть шифрованным. Либо промежуточные должны создаваться не на диске.
2. Как я уже говорил, очень не хочется писать самому ВСЮ обработку списков - поиск, сортировку, перемещение вперед-назад. DataSet уже обладает минимальной необходимой функциональностью, разве не так?
(это не ёрничание, а обычный вопрос: я всегда допускаю, что могу чего-то не знать или не учитывать)
Мне непонятно, кстати: на фига нужен слой DataSource, если он может работать только с одним DataSet-ом?
Vadim писал(а):1. MemDS. ... скверно работает компонент в Лазарусе, проблемы с интерактивным редактированием данных в визуальном компоненте.
Ну, пока нашел только одну бяку - с булевыми полями. Workaround - использовать в качестве них поля char с фиксированными значениями для T/F - прекрасно редактируется в гриде и data-aware контролах. Хотя даже в таком варианте отказывается работать DBCheckBox.
Vadim писал(а):2. CSV-файл... 3. DBF
См. выше - оба этих формата вполне пригодны для передачи входного/выходного файла, но постоянная (де)шифровка на лету, если использовать их как рабочие файлы, приведет к неоправданным накладным расходам, нет?
debi12345 писал(а):довести до ума либо MemDataset (чтобы он не глючил, чтобы оповещал о событиях как нормальный датасет, и умел сохраняться в файл)
Э-э? У MemDataSet ЕСТЬ метод SaveToFile(имя файла,сохранять ли данные) и он работает.