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

Вниз

Вопрос про глобальное определение объектов.   Найти похожие ветки 

 
AlexMey   (2002-05-06 11:03) [0]

Уважаемые мастера, подскажите...

У меня такая проблема. По идеи, она решается элементарно.
Я пишу систему в которой, будет около 20-ти форм. Каждая из них должна связываться с одной и той же базой. И понятно, что в каждой форме создавать заново новый "ADOConnection" - будет коряво, лучше было бы создать один раз при запуске и вынести его на уровень приложения, чтобы все формы могли к нему обращаться. А как это сделать - я-то и не знаю, так как приложения для Delphi пишу только 2 месяца...

Подскажите, как вынести объект ADOConnection на уровень приложения?

Заранее благодарен, Александр.


 
Кулюкин Олег   (2002-05-06 11:18) [1]

Можно положить ADOConnection на форму, которая автоматически создается при запуске приложения (ДатаМодуль, главная форма) и обращаться к нему (для этого в вызывающей форме надо подключить форму с ADOConnection).


 
AlexMey   (2002-05-06 11:28) [2]

А у меня начальная форма - форма для регистрации (запрос пароля и логина) как раз в ней первый раз и используется ADOConnection и после регистрации она закрывается.


 
Johnmen   (2002-05-06 11:35) [3]

Стандартное решение - TDataModule.


 
AlexMey   (2002-05-06 11:38) [4]

:-)
Johnmen, аnd what is it - TDataModule?
Where I can read any information about that?


 
Johnmen   (2002-05-06 11:47) [5]

Create->New->DataModule
Это есть контейнер невизуальных компонентов, в частности компонентов доступа к БД...


 
AlexMey   (2002-05-06 11:57) [6]

А можно, ли в этот самый DataModule занести какие-нибудь глобальные переменные?
А как потом обращаться к моему ADOConnection из других модулей?


 
Anatoly Podgoretsky   (2002-05-06 12:04) [7]

DataModule по сути обычная форма, делай выводы


 
Johnmen   (2002-05-06 12:11) [8]

Понимаю затруднения...
Для начала неплохо читануть книжку по Pascal.
:)


 
Кулюкин Олег   (2002-05-06 12:13) [9]

2 AlexMey © (06.05.02 11:57)
> А можно, ли в этот самый DataModule занести какие-нибудь глобальные переменные?
Можно.

> А как потом обращаться к моему ADOConnection из других модулей?
Мой ответ от (06.05.02 11:18)
...и обращаться к нему (для этого в вызывающей форме надо подключить форму с ADOConnection)...


 
AlexMey   (2002-05-06 12:18) [10]

Книжки по Delphi я читал и немало...

книжку господина Архангельского ...
книжку "Руководство разработчика том 2" авторы С. Тейксейра, К. Пачеко
книжку "ADO в Delphi"

Но там, почему-то, авторы не сочли нужным упомянуть о TDataModule.

:-(


 
Виктор Щербаков   (2002-05-06 12:27) [11]

AlexMey © (06.05.02 12:18)
И что, в "Руководство разработчика том 2" нет ни слова о DataModule? Неправда Ваша, там есть пример проектирования БД-приложения с нуля. Так что всё необходимое можно взять оттуда.


 
Johnmen   (2002-05-06 12:28) [12]

Я имел в виду не TDataModule, а организацию юнитов (по поводу глобальных переменных) :)


 
Anatoly Podgoretsky   (2002-05-06 12:42) [13]

Сер позвольте вам не поверить!
"книжку "Руководство разработчика том 2" авторы С. Тейксейра, К. Пачеко"

страницы 482, 574, 704, 788


 
AlexMey   (2002-05-06 12:50) [14]

Да, правда Ваша, эти страницы я просто пролистал ...


 
AlexMey   (2002-05-06 13:00) [15]

Кстати, пока мы тут беседовали. Я накидал кое-что, и уже нарвался на ошибку.

Сделал я 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 ...

что это за @#@^%#*$@!#$ !!!


 
Song   (2002-05-06 13:04) [16]

Вы же создаёте с родителем TApplication, а на выходе ещё и разрушаете сами. При закрытии родитель пытается разрушить ADO, но Вы его уже разрушили и поэтому генерируется AV.
Вообщем проще говоря нужно писать так:
procedure TForm1.Button1Click(Sender: TObject);
begin
DataModule3.ADOConn.Create(nil);
end;

либо не разрушать созданный объект самому.


 
Anatoly Podgoretsky   (2002-05-06 13:05) [17]

А вот такие вещи делать не рекомендуется Борландом DataModule3.ADOConn.Destroy;, надо .free
И такие тоже DataModule3.ADOConn.Create(Application);

Для начало желательно вниметельно прочитать выше приведенные книги, то есть

книжку господина Архангельского ...
книжку "Руководство разработчика том 2" авторы С. Тейксейра, К. Пачеко
книжку "ADO в Delphi"

Прочитать, а не пролистать


 
AlexMey   (2002-05-06 13:21) [18]

Спасибо всем за помощь!!!

особенно за - "Прочитать, а не пролистать".

P.S.
Я конечно понимаю, что прочитать 3 книги по 1000 страниц каждая - ерунда. :-)))
Если бы я не работал, у меня не было бы девушки, если я бы не спал, не изучал параллельно ASP.NET, Rational Rose, Oracle, то 3-х месяцев бы вполне хватило. :-)))



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

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

Наверх




Память: 0.51 MB
Время: 0.017 c
14-64827
SPeller
2002-04-11 01:36
2002.05.20
Библиотека RAR


7-64852
Dankin
2001-11-24 03:17
2002.05.20
Люди, подскажите как можно использовать Web камеру...


6-64761
snoup
2002-03-08 01:14
2002.05.20
Какие файлы в винде отвечают за удаленный доступ, сеть и все настройки сети?


6-64772
ATLANTIDO
2002-03-01 00:38
2002.05.20
УПРАВЛЕНИЕ Internet Explorero м


3-64462
Rub
2002-04-25 09:51
2002.05.20
Народ, а кто-нибудь юзал TeamSource???