![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как добать базу данных в EXE файл [D6, Win2k]
-Evgeney - © (2004-03-05 08:15:00)Тоесть чтобы после компиляции база данных бала в exe-ке огромное спасибо тем кто откликнится.
Digitman (2004-03-05 12:41:00) [1]
> Есть ли готовый компонент для отображения таблицы, хранящейся
> в ресурсах файла?
да по колено, где она хранится !
ресурс PE-модуля - всего лишь своего рода контейнер
в ран-тайм птвоим приложением выделяется память и из контейнера этого туда считываются данные, хранимые там
в каком формате хранятся данные в этом (или любом ином) контейнере - тебе решать
ну пусть это, например, будут данные в формате, генерируемом компонентом TClientDataSet
тогда в ран-тайм ты создаешь экз-р класса TResourceStream, считываешь в этот поток данные из ресурса
далее создаешь экз-р TClientDataSet и вызываешь его метод LoadFromStream
все ! НД готов к работе ! Его подготовил ClientDataSet ..
а далее все как обычно и до безобразия просто : создаешь экз-ры TDatasource и TDBGrid, настраиваешь цепочку TClientDataSet + TDatasource + TDBGrid, как если бы вместо TClientDataSet был лбой другой компонент, например, TTable ... и все ! НД у тебя перед носом в гриде ! делай с ними что хошь ..
Игорь (2004-03-05 12:26:00) [2]Мне тоже нужна такая фигня. Я делаю справочник только для просмотра. И нужно, чтобы был только один файл - EXE.
Есть ли готовый компонент для отображения таблицы, хранящейся в ресурсах файла?
Я нашел такой в RXLib - RxMemoryData. Но данные в него надо закачивать самому, это занимает много времени, когда таблица большая. Вот если бы компонент сам сохранял в своих ресурсах таблицу, как, например, TImage сохраняет в ресурсах картинку.
Если кто что подобное видел...
Anatoly Podgoretsky (2004-03-05 10:15:00) [3]У меня тоже сомнения насчет понятий :-)
Digitman (2004-03-05 10:02:00) [4]
> Anatoly Podgoretsky © (05.03.04 09:51) [12]
> Основную сложность вызовет не ресурс, а разработка TResouceDataset
а что там сложного ?
если опираться на логику цельного считывания ресурса (хранящего полные БД-данные) в блок памяти, то разработка сабжа сводится к его наследованию от какого-нибудь TMemoryDataSet или TClientdataSet... при открытии НД, ассоциированного с сабжем, сначала ресурс считывается в блок памяти достаточного размера, а далее работа с блоком уже реализована в методах готового класса-предка
здесь другой вопрос - что подразумевается автором под базой данных ... ведь в общем случае БД - это не только некая единственная табличка, на основании данных в которой требуется сформировать в ран-тайм некий НД ..
Anatoly Podgoretsky (2004-03-05 09:51:00) [5]Модификация ресурса не является сложной задачей. Но обычно тот кто может это реализовать не будет это делать из за отсутсвия реальной необходимости. Основную сложность вызовет не ресурс, а разработка TResouceDataset
В свое время ФоксПро 2.6 имел такую штатную возможность, как RO таблица в ресурсе и полноценная работа с ним, возможно более позднии версии сохранили эту возможность. Так что если есть такая необходимость то можно подумать о готовом инструменте с реализованной возможностью, то есть Visual FoxPro
Но мне кажется что реально такой необходимости по всей видимости нет.
Digitman (2004-03-05 09:28:00) [6]
> Anatoly Podgoretsky © (05.03.04 09:12) [8]
> Для указанной платформы решается.
я не об этом ... понятно, что соотв.ф-ции для модификации ресурсов в ран-тайм имеются
другой вопрос - нетривиальная организация логики обновления ресурса в условиях когда ресурс относится именно к РЕ-модулю (т.е. в дан.случае с ехе-файлом), ассоциированному с тек.процессом ... если не задействовать разного рода недок.трюки, то поизвращаться придется крепко ... стоит ли задумка того ? ... вот в чем вопрос ..
Anatoly Podgoretsky (2004-03-05 09:16:00) [7]В сторону наследника от TDataset
Кщд (2004-03-05 09:15:00) [8]Anatoly Podgoretsky © (05.03.04 09:12) [8]
в какую сторону думать?
Anatoly Podgoretsky (2004-03-05 09:12:00) [9]Для указанной платформы решается.
Digitman (2004-03-05 09:09:00) [10]
> -Evgeney
если не предполагается модифицировать базу в ран-тайм (после ее извлечения из ресурса в ходе работы с ней), то такое извращение еще как-то можно оправдать
а если требуется модификация ? как намерен обновленную базу записывать назад в ресурс ? в ран-тайм ?
-Evgeney - (2004-03-05 08:45:00) [11]Понятно всем спасибо.
Hooch (2004-03-05 08:42:00) [12]какие люди ?
Anatoly Podgoretsky (2004-03-05 08:42:00) [13]rc файл и поделючить к проекту.
-Evgeney - (2004-03-05 08:35:00) [14]Как то же люди впихивать базу в EXE?
-Evgeney - (2004-03-05 08:20:00) [15]как это можно сделать через ресурсы, ссылочка есть?
Рамиль (2004-03-05 08:19:00) [16]БД в обычном понимании ну ни как не получится. Можно только ресурсы.