Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
8-97756
AlegZanderR
2003-03-18 15:38
2003.06.30
Загрузка JPEG без использования модуля JPEG


3-97544
Term
2003-06-06 16:23
2003.06.30
Кто работал с Halcyon????Компонент для доступа к БД без БДЕ.....


3-97479
rosl
2003-06-05 05:03
2003.06.30
Как очитить в sql определенную строку в запросе


9-97465
zryndin
2002-11-13 11:44
2003.06.30
Нейронные сети в играх...


1-97615
Klez-X
2003-06-19 13:50
2003.06.30
Работа с реестром





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