Главная страница
    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.022 c
4-97920
Diamond Cat
2003-03-09 03:56
2003.06.30
Scrollbar, или спасите люди добрые


1-97677
dimon1979
2003-06-17 15:02
2003.06.30
константы и массивы


7-97896
Furyous
2003-04-16 16:09
2003.06.30
Проверка существования процесса.


1-97614
m_e_t_a_n
2003-06-17 11:39
2003.06.30
HELP PLZ!!!


3-97531
Viktor
2003-06-06 13:09
2003.06.30
TUpdateSQL : как удалить последнюю запись в датасете ?





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