|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.04.2009, 14:42 | #1 |
Регистрация: 12.04.2009
Сообщений: 8
|
Доступ к базе из нескольких модулей
Здравствуйте! Есть программа, использующая SQLite, как описано здесь: http://www.delphi.int.ru/articles/43/
Сделал, все, как там описано, все работает, поменял только в разделе implementation имя глобального объекта для работы с базой sldb: TSQLiteDatabase на MAIN_DB: TSQLiteDatabase. Но возникла необходимость добавить в программу дополнительные формы, которые тоже используют этот объект MAIN_DB. Сначала я из implementation перенес его в раздел Public, но компилятор стал ругаться: Undeclared Identifier: TSQLiteDatabase. Аналогичная ситуация, когда я поместил его вот сюда Код:
Пожалуйста, подскажите, что я делаю неправильно, как сделать, чтобы БД была видна из всех модулей? |
12.04.2009, 14:44 | #2 |
Пользователь
Регистрация: 06.02.2009
Сообщений: 89
|
Попробуй так обращаться из других модулей -
Код:
Если вдруг захотите сказать мне спасибо - воспользуйтесь кнопкой "Добавить отзыв"
|
12.04.2009, 18:44 | #3 |
Регистрация: 12.04.2009
Сообщений: 8
|
Вся фигня в том, что даже когда в других модулях нет обращений к MAIN_DB , программа все равно не компилится, а компилятор ругается на Undeclared Identifier.
Интересно, что когда я поместил MAIN_DB в раздел var того модуля, где описан сам этот класс TSQLiteDatabase, т.е. модуля SQLiteTable3, все остальные модули этот объект увидели. Но, во-первых, пришлось править сторонний модуль, что не очень красиво, а, во-вторых, хочется понять, почему все-таки такое произошло. Часто ведь бывает, что класс описан в одном модуле, а объект в другом! |
12.04.2009, 18:48 | #4 |
Пользователь
Регистрация: 06.02.2009
Сообщений: 89
|
а в main в uses точно было - SQLiteTable3? а во всех остальных модулях в uses был main?
Если вдруг захотите сказать мне спасибо - воспользуйтесь кнопкой "Добавить отзыв"
|
12.04.2009, 21:09 | #5 |
Регистрация: 12.04.2009
Сообщений: 8
|
Если ты про тот uses, что в разделе implementation, а не в interface, то да, он там как раз и есть. Переключился на модуль main, потом в меню File->Use Unit, выбрал SQLite3 и SQLiteTable3. Потом из других модулей аналогично подцепил эти модули и main. Теоретически все должны друг друга видеть.
|
12.04.2009, 23:21 | #6 |
Редкий обитатель
Форумчанин
Регистрация: 08.04.2009
Сообщений: 170
|
в каждый модуль, в котором объявлена переменная класса TSQLiteDatabase, в interface > uses пропиши тот юнит, где живет класс TSQLiteDatabase, а если в implementation он уже есть, то лучше перенеси наверх, потому что по смыслу ошибки явно видно, что он не знает откуда брать данные для этого класса
Мозг, хорошо устроенный, стоит больше, чем мозг, хорошо наполненный (Мишель Монтень)
|
13.04.2009, 11:05 | #7 |
Регистрация: 12.04.2009
Сообщений: 8
|
Получается, что uses в разделе interface обладает бОльшим приоритетом, чем uses в implementation? Перенес в interface > uses сразу SQLiteTable3 и SQLite3. Сейчас объект виден в тех модулях, которые используют main. Не будет ошибкой, что я перенес туда сразу два модуля (на всякий случай)?
|
13.04.2009, 14:08 | #8 |
Редкий обитатель
Форумчанин
Регистрация: 08.04.2009
Сообщений: 170
|
нет ошибкой не будет, но если ты вторую не используешь, то лучше не хлами прогу.
Мозг, хорошо устроенный, стоит больше, чем мозг, хорошо наполненный (Мишель Монтень)
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
подключение модулей... | Teleport | Помощь студентам | 2 | 25.06.2008 00:26 |
подключение модулей... | Teleport | Помощь студентам | 1 | 13.06.2008 15:04 |
Доступ к com порту для нескольких приложений | Lexx | Win Api | 11 | 06.04.2007 20:10 |
Доступ к базе SQL из Delphi | Miranda | БД в Delphi | 3 | 26.03.2007 13:14 |