![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос про глобальное определение объектов.
AlexMey © (2002-05-06 11:03:00)Уважаемые мастера, подскажите...
У меня такая проблема. По идеи, она решается элементарно.
Я пишу систему в которой, будет около 20-ти форм. Каждая из них должна связываться с одной и той же базой. И понятно, что в каждой форме создавать заново новый "ADOConnection" - будет коряво, лучше было бы создать один раз при запуске и вынести его на уровень приложения, чтобы все формы могли к нему обращаться. А как это сделать - я-то и не знаю, так как приложения для Delphi пишу только 2 месяца...
Подскажите, как вынести объект ADOConnection на уровень приложения?
Заранее благодарен, Александр.
AlexMey (2002-05-06 13:21:00) [1]Спасибо всем за помощь!!!
особенно за - "Прочитать, а не пролистать".
P.S.
Я конечно понимаю, что прочитать 3 книги по 1000 страниц каждая - ерунда. :-)))
Если бы я не работал, у меня не было бы девушки, если я бы не спал, не изучал параллельно ASP.NET, Rational Rose, Oracle, то 3-х месяцев бы вполне хватило. :-)))
Anatoly Podgoretsky (2002-05-06 13:05:00) [2]А вот такие вещи делать не рекомендуется Борландом DataModule3.ADOConn.Destroy;, надо .free
И такие тоже DataModule3.ADOConn.Create(Application);
Для начало желательно вниметельно прочитать выше приведенные книги, то есть
книжку господина Архангельского ...
книжку "Руководство разработчика том 2" авторы С. Тейксейра, К. Пачеко
книжку "ADO в Delphi"
Прочитать, а не пролистать
Song (2002-05-06 13:04:00) [3]Вы же создаёте с родителем TApplication, а на выходе ещё и разрушаете сами. При закрытии родитель пытается разрушить ADO, но Вы его уже разрушили и поэтому генерируется AV.
Вообщем проще говоря нужно писать так:
procedure TForm1.Button1Click(Sender: TObject);
begin
DataModule3.ADOConn.Create(nil);
end;
либо не разрушать созданный объект самому.
AlexMey (2002-05-06 13:00:00) [4]Кстати, пока мы тут беседовали. Я накидал кое-что, и уже нарвался на ошибку.
Сделал я TDataModule. (name - DataModule3)
Добавил внутрь TADOConnection (name - ADOConn)
И в основной форме пишу...
procedure TForm1.Button1Click(Sender: TObject);
begin
DataModule3.ADOConn.Create(Application);
end;
...
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DataModule3.ADOConn.Close;
DataModule3.ADOConn.Destroy;
end;
И, блин, когда закрываю форму - начинается...
The instruction at "0xoo4648f3" ... The memory could not be "read"
Exception EAccessViolation in module ...
Access violation at ...
что это за @#@^%#*$@!#$ !!!
AlexMey (2002-05-06 12:50:00) [5]Да, правда Ваша, эти страницы я просто пролистал ...
Anatoly Podgoretsky (2002-05-06 12:42:00) [6]Сер позвольте вам не поверить!
"книжку "Руководство разработчика том 2" авторы С. Тейксейра, К. Пачеко"
страницы 482, 574, 704, 788
Johnmen (2002-05-06 12:28:00) [7]Я имел в виду не TDataModule, а организацию юнитов (по поводу глобальных переменных) :)
Виктор Щербаков (2002-05-06 12:27:00) [8]AlexMey © (06.05.02 12:18)
И что, в "Руководство разработчика том 2" нет ни слова о DataModule? Неправда Ваша, там есть пример проектирования БД-приложения с нуля. Так что всё необходимое можно взять оттуда.
AlexMey (2002-05-06 12:18:00) [9]Книжки по Delphi я читал и немало...
книжку господина Архангельского ...
книжку "Руководство разработчика том 2" авторы С. Тейксейра, К. Пачеко
книжку "ADO в Delphi"
Но там, почему-то, авторы не сочли нужным упомянуть о TDataModule.
:-(
Кулюкин Олег (2002-05-06 12:13:00) [10]2 AlexMey © (06.05.02 11:57)
> А можно, ли в этот самый DataModule занести какие-нибудь глобальные переменные?
Можно.
> А как потом обращаться к моему ADOConnection из других модулей?
Мой ответ от (06.05.02 11:18)
...и обращаться к нему (для этого в вызывающей форме надо подключить форму с ADOConnection)...
Johnmen (2002-05-06 12:11:00) [11]Понимаю затруднения...
Для начала неплохо читануть книжку по Pascal.
:)
Anatoly Podgoretsky (2002-05-06 12:04:00) [12]DataModule по сути обычная форма, делай выводы
AlexMey (2002-05-06 11:57:00) [13]А можно, ли в этот самый DataModule занести какие-нибудь глобальные переменные?
А как потом обращаться к моему ADOConnection из других модулей?
Johnmen (2002-05-06 11:47:00) [14]Create->New->DataModule
Это есть контейнер невизуальных компонентов, в частности компонентов доступа к БД...
AlexMey (2002-05-06 11:38:00) [15]:-)
Johnmen, аnd what is it - TDataModule?
Where I can read any information about that?
Johnmen (2002-05-06 11:35:00) [16]Стандартное решение - TDataModule.
AlexMey (2002-05-06 11:28:00) [17]А у меня начальная форма - форма для регистрации (запрос пароля и логина) как раз в ней первый раз и используется ADOConnection и после регистрации она закрывается.
Кулюкин Олег (2002-05-06 11:18:00) [18]Можно положить ADOConnection на форму, которая автоматически создается при запуске приложения (ДатаМодуль, главная форма) и обращаться к нему (для этого в вызывающей форме надо подключить форму с ADOConnection).