Форум: "Начинающим";
Текущий архив: 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 это имя модулябазы данных. Что делаю нетак???
Data.Q_Get_SQL.ParamByName("type_sql").AsString:="SELECT";
Data.Q_Get_SQL.ExecQuery;
← →
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.041 c