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

Вниз

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

 
c0pYc@t   (2002-07-11 10:05) [0]

Пытаюсь разобраться с DLL.
Когда просто привязываешь DLL к проге все ОК!
Но при динамическом подключении вроде тоже все в порядке, но при освобождении памяти от DLL -ERROR "Программа выполнила недопустимую опер и буд закр"
Помогите кто может вчем дело?

Код DLL
library mydll;

uses SysUtils, Classes;

{Определяем функцию как stdcall}
function GetSimpleText(LangRus: Boolean): PChar; stdcall;
begin
{В зависимости от LangRus возвращаем русскую (True) либо английскую (False) фразу}
if LangRus then
Result := PChar("Здравствуй, мир!")
else
Result := PChar("Hello, world!");
end;

{Директива exports указывает, какие функции будут экспортированы этой DLL}
exports GetSimpleText;
begin
end.


Код Project

unit unitdll2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
GetSimpleText: function(LangRus: Boolean): PChar;
LibHandle: THandle;

implementation

{$R *.dfm}

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


 
Digitman ©   (2002-07-11 10:55) [1]

var
...
GetSimpleText: function(LangRus: Boolean): PChar; stdcall


 
c0pYc@t   (2002-07-11 13:15) [2]

Digitman спасибо за помощь



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

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

Наверх




Память: 0.47 MB
Время: 0.012 c
8-70830
Yaro
2002-03-10 09:05
2002.07.22
GDI+ и антиалайзинг


14-70880
shodan
2002-06-24 23:01
2002.07.22
Компоненты


1-70790
Zavdim
2002-07-09 12:25
2002.07.22
Играем звуки непрерывно


3-70611
officeman
2002-06-30 17:41
2002.07.22
(bdase) что за логин и пароль ???


3-70590
dimanew
2002-06-27 09:24
2002.07.22
Подскажите как в IB создать генератор, котоый при добавлении