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

Вниз

Ошибка при обращении к таблице   Найти похожие ветки 

 
carmen ©   (2006-05-18 18:16) [0]

Пишу прогу с использование пакетов (bpl). Имеется основной модуль, который по необходимости загружает нужний пакет. Также имеется модуль базы данных. Проблема в следующем.
Модуль базы данных содержит описание базы данных, основных справочников. Один из пакетов использует этот модуль базы данных, объявляется в implementation через uses DataModule.
Так вот, если из пакета обратится к таблице из модуля базы данных возникает ошибка: Access violation at adress 014128F in module "My_Module.Bpl". Read of address 000000DC. Если описываю данную таблицю в этом пакете, ошибки нет. Обращаюсь к таблице модуля базы данных так: Data.Q_Get_SQL.ParamByName("name_sql").AsString:="select_saldo";
Data.Q_Get_SQL.ParamByName("type_sql").AsString:="SELECT";
Data.Q_Get_SQL.ExecQuery;
Data это имя модулябазы данных. Что делаю нетак???


 
Desdechado ©   (2006-05-18 18:26) [1]

видимо, датамодуль не создан к моменту вызова таблицы из пакета


 
carmen ©   (2006-05-18 19:04) [2]

автоматом создается главная форма и датамодуль.
когда это все загружено идет загрузка пакетов.


 
Mike Kouzmine ©   (2006-05-18 22:41) [3]

carmen ©   (18.05.06 19:04) [2]
 Desdechado ©   (18.05.06 18:26) [1]
   видимо, датамодуль не создан к моменту вызова таблицы из пакета

Проверь порядок создания объектов.


 
Carmen ©   (2006-05-18 23:23) [4]

датамодуль на момент загрузки пакета уже загружен. Загруженный пакет использует информацию основной базы, транзакции из датамодуля. Все таблицы пакета используют эту информацию из датамодуля и работают нормально. ошибка возникает когда хочу обратится к таблице описаной в датамодуле.


 
Carmen ©   (2006-05-19 09:19) [5]

а больше не советов?


 
ANB ©   (2006-05-19 10:04) [6]


> Carmen ©   (19.05.06 09:19) [5]

Ничего не понял.
Давай ка подробнее.
И так - у тебя есть основной экзешник, к которому ты прикомпилял модуль данных.
Из экзешника ты вызывешь (я так понял - динамически) пакет.
И пакета лезешь к модуль данных основного приложения.
Вопрос - как ты связал модуль данных с основным приложением ?
Если просто прикомпилял - будет AV.
Нужно передать в пакет адрес модуля данных и уже с ним работать в пакете.
При этом экзешник и пакет должны быть скомпилены на одной делфе.


 
ANB ©   (2006-05-19 10:05) [7]


> Carmen ©   (18.05.06 23:23) [4]

А экзешник скомпилен с использованием рантайм пакетов ?


 
Carmen ©   (2006-05-19 13:06) [8]


> Ничего не понял.
> Давай ка подробнее.
> И так - у тебя есть основной экзешник, к которому ты прикомпилял
> модуль данных.
> Из экзешника ты вызывешь (я так понял - динамически) пакет.
>
> И пакета лезешь к модуль данных основного приложения.
> Вопрос - как ты связал модуль данных с основным приложением
> ?
> Если просто прикомпилял - будет AV.
в подгружаемом пакете этот же датамодуль подключаю через uses

> Нужно передать в пакет адрес модуля данных и уже с ним работать
> в пакете.
а как его передать?

> При этом экзешник и пакет должны быть скомпилены на одной
> делфе.

одна


 
ANB ©   (2006-05-19 13:51) [9]


> в подгружаемом пакете этот же датамодуль подключаю через
> uses

Вот здесь и кроется ошибка.


> а как его передать?

Передать через параметр какой нибудь функции пакета. В пакете можно сохранить адрес локально, а можно передавать каждой функции пакета.

И обязательно экзешник компилять с флагом "использовать рантайм пакеты".


 
Carmen ©   (2006-05-19 13:57) [10]


> И обязательно экзешник компилять с флагом "использовать
> рантайм пакеты".

так и компилю.
А можно пример по передачы адреса.



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

Форум: "Начинающим";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.035 c
2-1147715553
MVP
2006-05-15 21:52
2006.06.04
Как организовать цикл?


15-1147153694
Мефисто
2006-05-09 09:48
2006.06.04
Искусство программирования на Ассемблере. 3-е изд. Как оно?


4-1142183589
Arazel
2006-03-12 20:13
2006.06.04
Как узнать по PID, в какое время был запущен процесс?


15-1147451292
Mozart
2006-05-12 20:28
2006.06.04
Странный спам...


2-1147801737
alexey_newbie
2006-05-16 21:48
2006.06.04
Access violation





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский