Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.12.12;
Скачать: CL | DM;

Вниз

Ссылки-невозвращенцы из BPL   Найти похожие ветки 

 
mfender   (2010-09-18 07:43) [0]

Странная какая-то беда творится.

{Есть объект, упакованный в паккагу edforms.bpl}
unit formEditAttributesSan;

type
 TfrmEditAttributesSan = class(TForm)
   sDBEdit1: TsDBEdit;
 end;

implementation

initialization
 RegisterClass (TfrmEditAttributesSan);

{Есть код, подгружающий это дело, и призванный получить эту форму, что-то сделать и всё удалить.
Чтобы не убить остатки манной каши в голове, я просто таки скопипастил у Марко Кэнту код после нескольких часов недоумения, подрисовав туда свои значения}

procedure TAttrsSan.InsertEdit(Caption: string);
var
 frmEditAttributesSan: TForm;
 FormClass: TFormClass;
 HandlePack: HModule;
begin
 HandlePack := LoadPackage("edforms.bpl");
 if HandlePack > 0 then
 begin
{Вот до сюдова всё работает. Т.е. HandlePack есть, всё подгрузилось}

   FormClass := TFormClass(GetClass("TfrmEditAttributesSan"));

{А вот тут неясные грабли: FormClass всегда равен nil, и разумеется, дальнейшие движения проходят мимо.}

   if Assigned(FormClass) then
   begin
     frmEditAttributesSan := FormClass.Create(Application);
     try
       if frmEditAttributesSan.ShowModal = mrOk then
         showmessage("Оно тут было");
     finally
       frmEditAttributesSan.Free;
     end;
   end;
   UnloadPackage(HandlePack);
 end
 else
   Showmessage("Package not found");
end;


Срисовал из его (Марко Кэнту) примеров. И что характерно, его-то примеры работают! Моё - не работает, несмотря на то, что не нашёл я ни одного отличия в коде, проведя долгий побуквенный анализ написанного у него и у меня... Застрэлиться что-ли?


 
mfender   (2010-09-18 07:51) [1]

Да, добавлю: FindClass() как водится сообщает об ошибке ---------------------------
Project <.....> raised exception class EClassNotFound with message "Class TfrmEditAttributesSan not found".


 
mfender   (2010-09-18 09:06) [2]

То есть, если я правильно понял, для  того, чтобы это работало, нужно таскать всю пачку BPL вместе с программой, а компилировать exe вместе со всеми этими RTL?


 
Ega23 ©   (2010-09-18 10:07) [3]


> То есть, если я правильно понял, для  того, чтобы это работало,
>  нужно таскать всю пачку BPL вместе с программой, а компилировать
> exe вместе со всеми этими RTL?


Скажи, а нафига тебе отдельная bpl? Что мешает просто в uses подключить и использовать?


 
Игорь Шевченко ©   (2010-09-18 16:39) [4]


> {Вот до сюдова всё работает. Т.е. HandlePack есть, всё подгрузилось}
>
>    FormClass := TFormClass(GetClass("TfrmEditAttributesSan"));
>
>
> {А вот тут неясные грабли: FormClass всегда равен nil, и
> разумеется, дальнейшие движения проходят мимо.}


потому что секция initialization при динамической загрузке пакета не выполнилась.



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

Текущий архив: 2010.12.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
15-1283334671
Andy BitOff
2010-09-01 13:51
2010.12.12
Нужен файл от DMClient а


15-1283257709
bss
2010-08-31 16:28
2010.12.12
Создание интерфейса без сохранения в переменную


2-1284702790
vlgrig1961
2010-09-17 09:53
2010.12.12
SubStr и поле типа long?


15-1283699038
Beginner
2010-09-05 19:03
2010.12.12
JEDI для D2009


15-1283856091
бумбум
2010-09-07 14:41
2010.12.12
Резервное копирование базы MS SQL 2000