![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отключить загрузку ODBC-драйвера? [D7, XP]
cvg © (2008-11-27 11:55:00)Ситуация такая: на одном компе программа может работать в двух режимах -- боевом и тестовом. Для боевого данные берутся из базы MySQL, для тестового -- из текстового файла. На соседнем компе хочу иметь возможность запускать эту же программу, но только в тестовом режиме, она же пытается прицепиться к БД через ODBC, а поскольку их там никогда и не стояло, отзывается матом. В частности, говорит, что-де не может загрузить файл libmysql.dll, хотя я запихнул его и в текущий директрий, и в системную папку, и в c:\util... Вопрос: как сделсть так, чтобы если ODBC нет, то она бы и не пыталась его грузить? Подвопрос: почему она не может-таки найти libmysql.dll?
Ega23 (2008-11-27 16:15:00) [1]
> Так и не понял, почему нельзя вызывать сразу в виде 'myproga.
> exe myparam'
Почему нельзя? Можно.
if ParamCount>1 then
begin
if UpperCase(ParamStr(1))='COMBAT' then Включаем боевой режим;
if UpperCase(ParamStr(1))='TEST' then Иключаем тестовый режим;
end;
Amoeba (2008-11-27 16:14:00) [2]
> cvg (27.11.08 16:11) [12]
>
> Прочитал про обе функции. Так и не понял, почему нельзя
> вызывать сразу в виде 'myproga.exe myparam'
>
Почему нельзя? Можно, и в рассматриваемом случае достаточно.
cvg (2008-11-27 16:11:00) [3]Прочитал про обе функции. Так и не понял, почему нельзя вызывать сразу в виде 'myproga.exe myparam'
Ega23 (2008-11-27 15:56:00) [4]
> Просто что это за опция?
Это не опция, это так называемый параметр. Почитать про это можно в справке по ParamCount и ParamStr.
А как пример - ну, например, вызов архиватора из командной строки:
zip /p /o /a d:\ttt e:\ttt.zip /s1
(писал от балды)
cvg (2008-11-27 15:27:00) [5]Ну я понял, что оттуда... Просто что это за опция? Или где прочитать ее описание?
sniknik (2008-11-27 15:15:00) [6]> Вот только не понял, что такое '-m' в [5]...
то же самое что в [1], в [5] это вообще то комментарий оттуда, с добавлением одной строки которая показывает как можно было бы сделать.
cvg (2008-11-27 15:06:00) [7]Программа моя. Закомментарил все вызовы функций, обращающихся к MySQL, в результате вторая машина выполняет программу в тестовом режиме нормально. Насколько понимаю, можно использовать вариант, когда в тестовом режиме на второй машине она запускается с параметром (на основоной машине я обычно запускаю ее в отладчике). Вот только не понял, что такое '-m' в [5]...
Ega23 (2008-11-27 14:26:00) [8]
> А вот бы еще узнать, где именно она устанавливает коннект.
Программа твоя или нет? Если нет - то без исходников узнать будет сложно.
Если твоя - то для начала отказаться от открытия любых запросов в дизайн-тайм. Как привыкнешь и поймёшь как это работает - начинать уже по-нормальному пользоваться.
clickmaker (2008-11-27 14:01:00) [9]> точно? т.е. независимо от нужности само делает коннект?
да нет... не загружается, куда его ни клади
слышал про такой косяк в соответствии версии dbexpress и этой dll. возможно, и с odbc что-то подобное
sniknik (2008-11-27 13:43:00) [10]> где именно она устанавливает коннект...
а ты разве не знаешь? твоя программа. где первый Open/ExecSql сделан? небось в дизайне уже имеются открытые запросы.
> да это известная проблема с libmysql - какой-то косяк с версиями
> нормально пофиксили вроде только в Д2007
точно? т.е. независимо от нужности само делает коннект?
тогда вынести все в датамодуль, и создавать его самому ->
> myproga.exe -m combat
> myproga.exe -m test
> if <combat> then
Application.CreateForm(TDataModule, DataModule1);
> ...
> else
cvg (2008-11-27 13:34:00) [11]To Ega32: А вот бы еще узнать, где именно она устанавливает коннект... В MainFormUnit в uses перечислены: ... DBXpress, DB, SqlExpr, DBTables. В этом что ли дело?
clickmaker (2008-11-27 12:28:00) [12]да это известная проблема с libmysql - какой-то косяк с версиями
нормально пофиксили вроде только в Д2007
Ega23 (2008-11-27 12:19:00) [13]
> Вопрос: как сделсть так, чтобы если ODBC нет, то она бы
> и не пыталась его грузить?
Писать нормальные программы, которые устанавливают коннект по факту, а не на MainForm.Create
> Подвопрос: почему она не может-таки найти libmysql.dll?
А ты уверен, что достаточно её по пути положить? Я - нет. С ней не работал, но вполне возможно, что регистрировать надо через regsvr32, или ещё чё-нить в реестре прописывать.
Поросенок Винни-Пух (2008-11-27 12:17:00) [14]myproga.exe -m combat
myproga.exe -m test
if <combat> then
...
else
....