Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.05.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.008 c
6-64766
Cor
2002-02-19 07:12
2002.05.20
Блокирование портов


3-64463
Ergoist
2002-04-22 12:22
2002.05.20
Как создать БД FoxPro


1-64675
Loxly
2002-05-06 07:58
2002.05.20
Положение панели задач


3-64452
Bomberman
2002-04-22 12:24
2002.05.20
Базы данных


1-64600
LVG
2002-05-07 20:01
2002.05.20
обратный отсчёт времени





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский