Форум: "Основная";
Текущий архив: 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.007 c