Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.01.11;
Скачать: CL | DM;

Вниз

Как отключить загрузку ODBC-драйвера?   Найти похожие ветки 

 
cvg   (2008-11-27 11:55) [0]

Ситуация такая: на одном компе программа может работать в двух режимах -- боевом и тестовом. Для боевого данные берутся из базы MySQL, для тестового -- из текстового файла. На соседнем компе хочу иметь возможность запускать эту же программу, но только в тестовом режиме, она же пытается прицепиться к БД через ODBC, а поскольку их там никогда и не стояло, отзывается матом. В частности, говорит, что-де не может загрузить файл libmysql.dll, хотя я запихнул его и в текущий директрий, и в системную папку, и в c:\util... Вопрос: как сделсть так, чтобы если ODBC нет, то она бы и не пыталась его грузить? Подвопрос: почему она не может-таки найти libmysql.dll?


 
Поросенок Винни-Пух ©   (2008-11-27 12:17) [1]

myproga.exe -m combat
myproga.exe -m test

if <combat> then
...
else
....


 
Ega23 ©   (2008-11-27 12:19) [2]


> Вопрос: как сделсть так, чтобы если ODBC нет, то она бы
> и не пыталась его грузить?


Писать нормальные программы, которые устанавливают коннект по факту, а не на MainForm.Create


> Подвопрос: почему она не может-таки найти libmysql.dll?


А ты уверен, что достаточно её по пути положить? Я - нет. С ней не работал, но вполне возможно, что регистрировать надо через regsvr32, или ещё чё-нить в реестре прописывать.


 
clickmaker ©   (2008-11-27 12:28) [3]

да это известная проблема с libmysql - какой-то косяк с версиями
нормально пофиксили вроде только в Д2007


 
cvg   (2008-11-27 13:34) [4]

To Ega32: А вот бы еще узнать, где именно она устанавливает коннект... В MainFormUnit в uses перечислены: ... DBXpress, DB, SqlExpr, DBTables. В этом что ли дело?


 
sniknik ©   (2008-11-27 13:43) [5]

> где именно она устанавливает коннект...
а ты разве не знаешь? твоя программа. где первый Open/ExecSql сделан? небось в дизайне уже имеются открытые запросы.

> да это известная проблема с libmysql - какой-то косяк с версиями
> нормально пофиксили вроде только в Д2007
точно? т.е. независимо от нужности само делает коннект?
тогда вынести все в датамодуль, и создавать его самому  ->
> myproga.exe -m combat
> myproga.exe -m test

> if <combat> then
 Application.CreateForm(TDataModule, DataModule1);
>  ...
> else


 
clickmaker ©   (2008-11-27 14:01) [6]

> точно? т.е. независимо от нужности само делает коннект?

да нет... не загружается, куда его ни клади
слышал про такой косяк в соответствии версии dbexpress и этой dll. возможно, и с odbc что-то подобное


 
Ega23 ©   (2008-11-27 14:26) [7]


> А вот бы еще узнать, где именно она устанавливает коннект.


Программа твоя или нет? Если нет - то без исходников узнать будет сложно.
Если твоя - то для начала отказаться от открытия любых запросов в дизайн-тайм. Как привыкнешь и поймёшь как это работает - начинать уже по-нормальному пользоваться.


 
cvg   (2008-11-27 15:06) [8]

Программа моя. Закомментарил все вызовы функций, обращающихся к MySQL, в результате вторая машина выполняет программу в тестовом режиме нормально. Насколько понимаю, можно использовать вариант, когда в тестовом режиме на второй машине она запускается с параметром (на основоной машине я обычно запускаю ее в отладчике). Вот только не понял, что такое "-m" в [5]...


 
sniknik ©   (2008-11-27 15:15) [9]

> Вот только не понял, что такое "-m" в [5]...
то же самое что в [1], в [5] это вообще то комментарий оттуда, с добавлением одной строки которая показывает как можно было бы сделать.


 
cvg   (2008-11-27 15:27) [10]

Ну я понял, что оттуда... Просто что это за опция? Или где прочитать ее описание?


 
Ega23 ©   (2008-11-27 15:56) [11]


> Просто что это за опция?


Это не опция, это так называемый параметр. Почитать про это можно в справке по ParamCount и ParamStr.
А как пример - ну, например, вызов архиватора из командной строки:
zip /p /o /a d:\ttt e:\ttt.zip /s1
(писал от балды)


 
cvg   (2008-11-27 16:11) [12]

Прочитал про обе функции. Так и не понял, почему нельзя вызывать сразу в виде "myproga.exe myparam"


 
Amoeba ©   (2008-11-27 16:14) [13]


> cvg   (27.11.08 16:11) [12]
>
> Прочитал про обе функции. Так и не понял, почему нельзя
> вызывать сразу в виде "myproga.exe myparam"
>

Почему нельзя? Можно, и в рассматриваемом случае достаточно.


 
Ega23 ©   (2008-11-27 16:15) [14]


> Так и не понял, почему нельзя вызывать сразу в виде "myproga.
> exe myparam"


Почему нельзя? Можно.

if ParamCount>1 then
begin
 if UpperCase(ParamStr(1))="COMBAT" then Включаем боевой режим;
 if UpperCase(ParamStr(1))="TEST" then Иключаем тестовый режим;
end;



Страницы: 1 вся ветка

Текущий архив: 2009.01.11;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.014 c
2-1227780469
NS1989
2008-11-27 13:07
2009.01.11
TFileStream


2-1227990525
demon
2008-11-29 23:28
2009.01.11
RGB


2-1227959357
Pavel
2008-11-29 14:49
2009.01.11
Помогите оптимизировать код (выполнения в консоли)!


2-1228066243
lewka
2008-11-30 20:30
2009.01.11
Компоненты NMStrmServ и TNMStrm


8-1185558850
Ронин
2007-07-27 21:54
2009.01.11
Звук