Форум: "Начинающим";
Текущий архив: 2010.12.12;
Скачать: [xml.tar.bz2];
ВнизСсылки-невозвращенцы из 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c