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

Вниз

Проблема с DLL   Найти похожие ветки 

 
Sanyok   (2003-03-04 19:03) [0]

Здравствуйте!

Хочу подгрузить тулбар из dll-ки.

В dll-ке пишу:


function getPanel : TFrToolBar;
var Res : TFrToolBar;
but : TFrTBButton;
begin
Res := TFrToolBar.Create (nil);
but := TFrTBButton.Create(Res);
Result := Res;
end;

exports getPanel;



В вызывающей программе:


type
TForm2 = class(TForm)
Button1: TButton;
frDock1: TfrDock;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
_tb : TFRToolBar;
_btn : TFRTBButton;
...

procedure TForm2.Button1Click(Sender: TObject);
type TF = function : TFrToolBar;
var lh : THandle;
fun : TF;
begin
lh := LoadLibrary ("../dll/project1.dll");
try
if lh = 0 then raise Exception.Create("Unable to load DLL");
@fun := GetProcAddress(lh, "getPanel");
if not (@fun=nil)
then
begin
try
_tb := fun;
_tb.Parent := form2;
_tb.Top := 10;
_tb.Left := 10;
_tb.AddToDock (frDock1);
except
on E:Exception do ShowMessage (E.Message)
end;

end
else RaiseLastWin32Error;
finally
FreeLibrary(lh);
end;

end;



Выдает ошибку:
Cann"t assign a TFont to a TFont
и дальше много-много акцесс виолейшнов...

В чем проблема? Что я не учел?


 
petr_v_a   (2003-03-04 19:13) [1]

Build c runtime пакетами.
Иначе у EXE и DLL разные таблицы RTTI и TFont DLL действительно формально не равен TFont EXE


 
Sanyok   (2003-03-04 20:07) [2]

Не получается, то же самое выдает...

Вечером еще попробую на другом компе, конечно...


 
Yagoda   (2003-03-04 22:39) [3]

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

function smd(Msg: PChar): integer;stdcall;external "DLLProject.DLL"
...
...
...
procedure TMainForm.Button2Click(Sender: TObject);
begin
smd(PChar("asdasd")); // Вот тут вылетает
end;
procedure TMainForm.Button1Click(Sender: TObject);
var
A: array[0..79] of Char;
begin
StrPCopy(A, Edit1.Text);
smd(PChar("sad")); // А вот тут все работает
Label1.Caption:=IntToStr(GetLenText(A));
end;


И где логика ???


 
oomneeq   (2003-03-04 22:57) [4]

smd - это вот это:

function ShowMyDialog(Application:TComponent,Msg: PChar): Boolean;
begin
Form1 := TForm1.Create(Application);
Form1.Label1.Caption := StrPas(Msg);
Result :=Form1.ShowModal;
Form1.Free;
end;

?

Тогда вместо Form1.Free напиши FreeAndNil(Form1);
С аппликэйшном непонятка, ты в ДЛЛ его передаешь?

А поповоду логики, то похоже потенциальная ошибка (использование указателя на несуществующий/уже убитый объект) есть в обоих вариантах, просто в одном из них "проносит".


 
Sanyok   (2003-03-05 11:18) [5]

>petr_v_a © (04.03.03 19:13)

Не работает, выдает то же самое....

Так что, тулбар из дллки подгрузить вообще невозможно? Посоветуйте что-нибудь, как можно сделать так, чтобы тулбары в приложении лежали в отдельных файлах, которые можно было бы менять по ходу работы?


 
Sanyok   (2003-03-05 18:03) [6]

up !


 
Sanyok   (2003-03-05 20:56) [7]

Ну что, вообще никто ничего подобного не делал? И никто ничего подобного не знает что-ли????


 
Sanyok   (2003-03-05 20:58) [8]

Ну что, вообще никто ничего подобного не делал? И никто ничего подобного не знает что-ли????


 
Sanyok   (2003-03-06 08:58) [9]

Подскажите пожалуйста нормальный форум, на котором есть ХОРОШИЕ специалисты по делфи, потому что тут вообще похоже никого не осталось...


 
REA   (2003-03-06 10:15) [10]

В DLL не будет работать. В BPL будет. Задавай конкретнее вопросы. Поищи форум - я сам недавно с этим возился.



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

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

Наверх





Память: 0.47 MB
Время: 0.014 c
1-54022
idz
2003-03-06 21:46
2003.03.17
Рисование на TImage


6-54146
alexro
2003-01-29 11:42
2003.03.17
Текущий юзер на компе в домене


14-54312
Supreme 2
2003-02-28 01:06
2003.03.17
Что мне ответить девушке


3-53855
Destroyer
2003-02-27 06:39
2003.03.17
Обновление Query


4-54360
UNIVERSAL
2003-01-17 16:01
2003.03.17
Как правильно в ДЕЛФИ описать процедуру CBT хука?





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