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

Вниз

Вызов формы из dll   Найти похожие ветки 

 
_Alex_ ©   (2003-06-18 17:02) [0]

Вызываю форму из dll, передаю ей значение,
чтоб на label отобразить, пишет что то непонятное
procedure ShowMForm; stdcall;
begin
{Создаем экземпляр Form1 формы TForm1}
Form1 := TForm1.Create(Application);
{В Label1 выводим сообщение Msg}
Form1.Label1.Caption := DateToStr(Time);
{Возвращаем True если нажата OK (ModalResult = mrOk)}
Form1.Free;
end;
из программы
type
ShowMForm = procedure;
....
var
sf: ShowMForm;
........
{"Чистим" адрес функции от "грязи"}
@SF := nil;
{Пытаемся загрузить библиотеку}
LibHandle := LoadLibrary("project1.dll");
{Если все OK}
if LibHandle >= 32 then
begin
{...то пытаемся получить адрес функции в библиотеке}
@SF := GetProcAddress(LibHandle,"SF");
{Если и здесь все OK}
if @SF <> nil then
{...то вызываем эту функцию и показываем результат}
SF;
end;
{И не забываем освободить память и выгрузить DLL}
FreeLibrary(LibHandle);
что я не так делаю?


 
Игорь Шевченко ©   (2003-06-18 17:27) [1]

Где пишет и что непонятное ?


 
_Alex_ ©   (2003-06-18 18:40) [2]

Извините не точно вопрос задал, сам запутался,
и вас хотел запутать :).
В общем просто хочу вызвать форму.
{библиотека}
library ModF;
uses
Windows, SysUtils,
Messages, Classes, Graphics, Controls, Forms, Dialogs,
Unit1 in "Unit1.pas" {Form1};
procedure ShowMForm; stdcall;
begin
Form1 := TForm1.Create(Application);
Form1.Label1.Caption := DateToStr(Time);
Form1.Free;
end;
function GetPluginName: PChar; stdcall;
begin
Result:=Pchar("Плугин №1.");
end;
exports
ShowMForm,
GetPluginName;
begin
end.

////
type
ShowMForm = procedure;
.....
var
sf: ShowMForm;
GetPluginName: function: PChar;
.....
procedure TForm1.Button1Click(Sender: TObject);
var
b: boolean;
begin
//
{"Чистим" адрес функции от "грязи"}
@SF := nil;
{Пытаемся загрузить библиотеку}
LibHandle := LoadLibrary("project1.dll");
{Если все OK}
if LibHandle >= 32 then
begin
{...то пытаемся получить адрес функции в библиотеке}
@SF := GetProcAddress(LibHandle,"SF");
{Если и здесь все OK}
if @SF <> nil then
{...то вызываем эту функцию и показываем результат}
SF;
end;
{И не забываем освободить память и выгрузить DLL}
FreeLibrary(LibHandle);
end;


 
VMcL ©   (2003-06-18 19:31) [3]

{библиотека}
library ModF;
uses
Windows, SysUtils,
Messages, Classes, Graphics, Controls, Forms, Dialogs,
Unit1 in "Unit1.pas" {Form1};
procedure ShowMForm; stdcall;
begin
Form1 := TForm1.Create(Application);
Form1.Label1.Caption := DateToStr(Time);
Form1.Free;
end;
function GetPluginName: PChar; stdcall;
begin
Result:= PChar("Плугин №1."); // это неправильно
end;
exports
ShowMForm,
GetPluginName;
begin
end.

////
type
ShowMForm = procedure;
.....
var
sf: ShowMForm;
GetPluginName: function: PChar;
.....
procedure TForm1.Button1Click(Sender: TObject);
var
b: boolean;
begin
//
{"Чистим" адрес функции от "грязи"}
@SF := nil;
{Пытаемся загрузить библиотеку}
LibHandle := LoadLibrary("project1.dll");
{Если все OK}
if LibHandle >= 32 then
begin
{...то пытаемся получить адрес функции в библиотеке}
@SF := GetProcAddress(LibHandle, "SF"); //а не ShowMForm?
{Если и здесь все OK}
if @SF <> nil then
{...то вызываем эту функцию и показываем результат}
SF;
end;
{И не забываем освободить память и выгрузить DLL}
FreeLibrary(LibHandle);
end;


 
VMcL ©   (2003-06-18 19:32) [4]

type
ShowMForm = procedure stdcall;


 
_Alex_ ©   (2003-06-18 21:31) [5]

procedure TForm1.Button1Click(Sender: TObject);
var
b: boolean;
begin
//
{"Чистим" адрес функции от "грязи"}
@SF := nil;
{Пытаемся загрузить библиотеку}
LibHandle := LoadLibrary("project1.dll");
{Если все OK}
if LibHandle >= 32 then
begin
{...то пытаемся получить адрес функции в библиотеке}
@SF := GetProcAddress(LibHandle,"SF"); //а не ShowMForm?
{Если и здесь все OK}
if @SF <> nil then
{...то вызываем эту функцию и показываем результат}
SF;
end;
{И не забываем освободить память и выгрузить DLL}
FreeLibrary(LibHandle);
end;

исправил все, не показывает


 
_Alex_ ©   (2003-06-18 21:34) [6]

@SF := GetProcAddress(LibHandle,"ShowMForm"); //а не ShowMForm?исправил, никакого эффекта


 
VMcL ©   (2003-06-19 17:16) [7]

>_Alex_ © (18.06.03 21:34)

Приведи полный отформатированный код и нормально опиши проблему - ругается: где, как и т. д.



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

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

Наверх




Память: 0.49 MB
Время: 0.027 c
11-97564
Alexei Dragoner
2002-07-25 17:16
2003.06.30
А можно создавать/убирать statusbar налету?


1-97719
DDDeN
2003-06-17 16:07
2003.06.30
Добавление строки в TLabel


14-97814
Sergey13
2003-06-11 08:52
2003.06.30
Вопрос к женатым и с детьми.


3-97518
gep
2003-06-06 06:24
2003.06.30
Firebird+fib_plus с чего начать


1-97665
Андре
2003-06-17 11:07
2003.06.30
Delphi to Word