Форум: "Основная";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];
ВнизВызов формы из 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c