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

Вниз

Не соображу, что за ошибка...   Найти похожие ветки 

 
User1   (2008-05-12 09:15) [0]

Есть dll, в которой находится форма с Grid- ом, на форме также находится DataSource.

У этого DataSource есть не без известное свойство DataSet.

Так вот: Все наборы данных находятся на главной форме. При вызове dll мы передаем ей Application главной формы, сохраняем ее App, передаю DataSet следующим образом:

В dll:


Type
 PDataSet = ^TDataSet;

Procedure Run(ADataSet: PDataSet);
Begin
 fHandBook = TfHandBook.Create(Application, ADataSet^);
End;
Где:
Constructor TfHandBook.Create(AOwner: TApplication, ADataSet: TDataSet);
Begin
 Inherited Create(AOwner);
 Ds.DataSet := ADataSet;
End;

Procedure …..FormCreate(Sender: …..);
Begin
 If not ds.DataSet.Active then
   Ds.DataSet.Open;
End;


В главной форме:


Type
 PDataSet = ^TDataSet;

Var
 P: PDataSet;

Initialize(Integer(Application)); //Инициализируем dll;
P^ := ADODataSet1;
Create(P); //Передаем DataSet…


1. Если ADOQuery1 закрыт. Форма загружается но на гриде не появляются данные. Через время. Ошибка.
2. Если ADOQuery1 открыт первоначально. Форма загружается на гриде появляются данные. Если мы начнем перемещать форму, или кликнем по гриду, опять ошибка.
3. Навигатор перемещает курсор, но через время опять ошибка !!!.....
Собственно вопрос:

Как правильно работать с dll которой передается DataSet ?


 
User1   (2008-05-12 10:11) [1]

Кто-то сталкивался с подобными вопросами ?


 
Сергей М. ©   (2008-05-12 10:17) [2]

см. все касаемое опции Build With Run-Time Packages


 
Сергей М. ©   (2008-05-12 10:27) [3]


> Initialize(Integer(Application))


К чему эти пляски с бубном вокруг Application ?


> Create(P)


Что за Create ?
> Type
>  PDataSet = ^TDataSet;
> …
> Procedure Run(ADataSet: PDataSet);


Зачем передавать указатель на указатель ?

Тип TDataSet и так уже являет собой указатель.


 
User1   (2008-05-12 10:36) [4]

Create в том смысле что создается форма. Учту Run :o)

Procedure Run(ADataSet: PDataSet);

Procedure Run(ADataSet: Point); ?

И с чем всеже связана такая ошибка. Адресные пространства DLL и приложения ?

А если передать полностью объект ? TDataSet ???

И есть ли у кого рабочие примеры ?

Заранее спасибо !


 
Сергей М. ©   (2008-05-12 10:51) [5]


> с чем всеже связана такая ошибка


С разными экземплярами RTL.
Читай все о пакетах времени выполнения.

И вообще - где подробная инф-ция об ошибке ?


> Адресные пространства DLL и приложения ?


Оно едино.


> если передать полностью объект


как это "полностью" ?
Это еще надо умудриться передавать объект "частями")


 
Amoeba ©   (2008-05-12 11:42) [6]


> Как правильно работать с dll которой передается DataSet
> ?
>

Дело в том, что одноименные классы в DLL и host-приложении оказываются на деле разными, т.к. не будут иметь общих RTTI и VMT.
Проблем не возникнет только если приложение и DLL компилируются с пакетами.



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

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

Наверх





Память: 0.46 MB
Время: 0.047 c
3-1219341003
frippy
2008-08-21 21:50
2009.04.19
По умолчанию Рекурсивный запрос к БД - не могу сообразить как


2-1235708177
sco
2009-02-27 07:16
2009.04.19
TImage и прорисовка (не про DoubleBuffered)


1-1210571079
Гость1468
2008-05-12 09:44
2009.04.19
ESC-последовательность на принтер - ошибка I/O error 105


2-1235676633
Pavel
2009-02-26 22:30
2009.04.19
Передача значений из функции


2-1236178234
Johnnnn
2009-03-04 17:50
2009.04.19
Как добраться до pas в exe?





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