C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как сделать чтобы моя программа работала на другом компе ?  (Прочитано 40275 раз)
Admin
Администратор


Сказали спасибо: +22/-4
Offline

Сообщений: 286


« : 30 Март 2007, 11:37:35 »

Хочу, чтобы моя программа работала на другом компьютере, где не установлен C++Builder.
Как сделать, чтобы пpогpамма на C++Builder 3,4,5,6 и т.д. не требовала .bpl, .dll ?


В Project|Options|Packages снять галку с Build with runtime packages,
   Project|Options|Linker снять галку с Use dynamic RTL.

---

Я сделал программу для работы с локальной базой данных, через BDE, как мне сделать чтобы моя программа
работала на другом компьютере ?


Несколько вариантов:

1/ Создать полноценнyю пpогpаммy инсталляции с помощью пpодyктов Install Shield, Wise или подобных.
Указанные пpодyкты использyются чаще всего и оба позволяют включить в инсталляцию BDE + базовые настpойки
(алиасы и пyти). То есть включить в инсталляцию и a) вашу программу и b) BDE.

2/ Cделать инсталляцию BDE отдельным пакетом (в Install Shield'е это делается более чем элементаpно - в пpоект не надо
добавлять ничего, кpоме поддеpжки BDE). Удобно в пpоцессе написания пpогpаммы для одного пользователя. Пеpвый pаз
yстанавливаешь и настpаиваешь и BDE и вашу программу , а затем носишь только новые веpсии пpогpамм.

3/ добавить необходимые файлы из папки BDE к вашему исполняемому модулю:
blw32.dll, idapi32.dll, idr20009.dll, idpdx32.dll для Paradox-таблиц или
iddbas32.dll для DBF-таблиц, bantam.dll, charset.cvb, usa.btl возможно понадобятся и другие,
разместить их в папке с вашей программой.

Доступ к таблицам надо настроить не через псевдонимы (alias'ы), а через пути в
файловой системе. В идеале все таблицы храните в папке программы, тогда нужно
только указать имя таблицы без пути.

Приготовленный таким образом дистрибутив запускается на любой машине без
необходимости инсталляции BDE, максимально устойчив и нечувствителен к смене
имен папок/переинсталляции системы/порчи реестра/влиянии на другие
BDE-приложения.
« Последнее редактирование: 30 Март 2007, 11:56:11 от Admin » Записан
oxotnik
Глобальный модератор


Сказали спасибо: +100/-15
Offline

Сообщений: 2425


« Ответ #1 : 15 Январь 2008, 09:57:07 »

Поулучаем список библиотек и включаем их в дистрибутив своей программы

Вот код (работающий кусок), который показывает загруженные в настоящий момент библиотеки
Код:
//---------------------------------------------------------------------------
// Получить список загруженных модулей (exe, bpl, dll)
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

TStringList *lst = (TStringList*)Memo1->Lines;
lst->Clear();

char buf [255];
TLibModule *lbm;
AnsiString fname, sname, path, drv, dir, name, ext;

for (lbm = LibModuleList; lbm; lbm = lbm->next)
 {  GetModuleFileName((HMODULE)lbm->instance, buf, 254);
    fname = AnsiString(buf).Trim().UpperCase();
    if (!fname.IsEmpty())  lst->Add(AnsiString(int(lbm->instance)) + ": " + fname);
 }
Записан
AVC
Администратор


Сказали спасибо: +28/-6
Offline

Сообщений: 1189


« Ответ #2 : 09 Апрель 2008, 09:38:07 »

BDE
> Можно ли указать путь к базе данных (другую директорию)?

У компонента TTable или TQuery в поле DatabaseName нужно прописать путь к каталогу с файлами без последнего слеша.


При централизации посредством TDatabase

Database, например, для dbf настраивается так
DatabaseName = каое-либо имя, пусть DB_aaa
DriverName = STANDART
Params:
PATH=если_кто_не_понял_сюда_поставить_СОБСТВЕННЫЙ_путь_к_файлам_например_F:\Temp
DEFAULT DRIVER=dBase
...что то свое, по желанию

После этого у TTable и TQuery просто проставляем DatabaseName = DB_aaa и пользуемся.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.054 секунд. Запросов: 25.