Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2011, 16:03   #1
Haladdin
Пользователь
 
Регистрация: 07.12.2009
Сообщений: 26
По умолчанию BDE с диска

Тут сразу два вопроса.
В общем, необходимо чтобы программа, использующая BDE (таблица Paradox 7) работала с компакт-диска (только чтение) на любом компьютере, даже если BDE на нем не установлен.

Проблема первая - как заставить ее работать на "голом" компьютере, где установлена, допустим, только винда?

И второе, программа использует некоторые файлы, пути я прописываю относительные. В самом начале работы программы путь до исполняемого файла записывается в глобальную переменную sPath, таким макаром:

Код:
GetDir(0,sPath);
Потом адреса всех файлов уже пишутся вида sPath+'\Source\1.txt'
При этом если я использую автозапуск с помощью autorun.inf (а исполняемый файл спрятан в папке), то путь сбивается, я так понимаю потому что GetDir возвращает путь к папке в которой лежит autorun.inf, а не экзешник. Если запускать экзешник вручную, все работает.
С другой стороны, если екзешник лежит в корне компакт диска, то текстовые файлы и картинки нормально находятся, а вот файлы базы данных все равно нет! Пишет "File not found" и все, вне зависимости от того, запускаю ли я экзешник руками или через авторан =(
Haladdin вне форума Ответить с цитированием
Старый 13.01.2011, 17:27   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

1. Без установленного BDE программа работать не будет
2. Использовать sPath:=ExtractFilePath(ParamStr(0)) вместо GetDir(0,sPath);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 13.01.2011 в 17:29.
Аватар вне форума Ответить с цитированием
Старый 13.01.2011, 17:52   #3
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Цитата:
Без установленного BDE программа работать не будет
Запустить, конечно, можно с использованием спецкомпонентов вместо TTable, но это, имхо, изврат.
И еще программы с BDE любят при sql-запросах делать временные файлы с именами типа _qsql000.db, _qsql001.db. И пихает их именно в каталог с программой. Не представляю куда она будет их писать на компакт-диске.
В общем,
1. Paradox 7 - это мазохизм.
2. Paradox 7 без установленного BDE - это мазохизм в квадрате.
3. Paradox 7 без установленного BDE с компакт-диска - это мазохизм в кубе.
_SERGEYX_ вне форума Ответить с цитированием
Старый 13.01.2011, 17:54   #4
Haladdin
Пользователь
 
Регистрация: 07.12.2009
Сообщений: 26
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
1. Без установленного BDE программа работать не будет
2. Использовать sPath:=ExtractFilePath(ParamStr(0)) вместо GetDir(0,sPath);
1. Вроде как если закинуть какие-то волшебные dll-ки в папку в которой содержится исполняемый файл все работать будет... "Проверил" так - зашвырнул все dll что были в папке Borland в папку с программой, проверил на соседнем компе (насколько я знаю, BDE или Delphi там никто никогда не устанавливал). Работает. Без этих dll не работает.

2. Я написал так

Код:
sPath:=ExtractFilePath(application.ExeName);
В принципе, так работает. А что означает ParamStr(0) ?


Цитата:
Сообщение от _SERGEYX_ Посмотреть сообщение
Запустить, конечно, можно с использованием спецкомпонентов вместо TTable, но это, имхо, изврат.
И еще программы с BDE любят при sql-запросах делать временные файлы с именами типа _qsql000.db, _qsql001.db. И пихает их именно в каталог с программой. Не представляю куда она будет их писать на компакт-диске.
В общем,
1. Paradox 7 - это мазохизм.
2. Paradox 7 без установленного BDE - это мазохизм в квадрате.
3. Paradox 7 без установленного BDE с компакт-диска - это мазохизм в кубе.
Ну, база строго локальная, чисто как хранилище информации для проги, юзер эту инфу в явном виде даже не видит. Насчет спецкомпонентов - dll-ки вроде бы решают?

По поводу 1,2,3 - согласен, пожалуй. Проблема в том что ничего другого пока не умею, а сделать надо быстро. =\

Последний раз редактировалось Haladdin; 13.01.2011 в 17:56.
Haladdin вне форума Ответить с цитированием
Старый 13.01.2011, 17:57   #5
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

ParamStr(0) - это тоже самое, что Application.ExeName
_SERGEYX_ вне форума Ответить с цитированием
Старый 13.01.2011, 18:03   #6
Haladdin
Пользователь
 
Регистрация: 07.12.2009
Сообщений: 26
По умолчанию

Цитата:
Сообщение от _SERGEYX_ Посмотреть сообщение
ParamStr(0) - это тоже самое, что Application.ExeName
Ясно, спасибо.
Единственное, GetDir выдает путь без \ в конце, а ExtractFilePath с оной, может тут собака и порылась? Заметил что если адрес текстового файла или картинки записывается, например так 'C:\Temp\\note.txt' то у дельфи это вопросов почему-то не вызывает, а вот при попытке воткнуть такую штуку в Table1.DatabaseName (как относительный путь к базе) - ругается.
Haladdin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
После BDE Шульц Свободное общение 4 13.10.2009 23:58
Редактирование BDE kraw2 БД в Delphi 3 23.08.2009 22:09
Пароль в BDE sander БД в Delphi 4 28.10.2007 11:16
BDE Arsgun БД в Delphi 4 29.05.2007 22:24