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

Вниз

Проблемы с dll   Найти похожие ветки 

 
Lex   (2003-08-16 07:22) [0]

Прочитал статью по адресу
http://www.delphimaster.ru/articles/usedll/index.html
Запустил. При нажатии на button1 вылезло окошко. При нажатии на кнопку OK написано программа выполнила недоступную операцию и будет закрыт. Подскажите, почему?


 
Skier ©   (2003-08-16 10:49) [1]

Что запустил ? Код-то покажи...


 
Lex   (2003-08-16 18:53) [2]

DLL:
library mydll;

uses SysUtils, Classes;

function GetSimpleText(LangRus: Boolean): PChar; stdcall;
begin
if LangRus then
Result := PChar("Здравствуй, мир!")
else
Result := PChar("Hello, world!");
end;

exports GetSimpleText;

begin
end.

I-вариант
implementation

function GetSimpleText(LangRus: Boolean): PChar; stdcall; external "MYDLL.DLL";

procedure Button1Click(Sender: TObject);
begin
ShowMessage(StrPas(GetSimpleText(True)));
ShowMessage(StrPas(GetSimpleText(False)));
end;

II-вариант
var
Form1: TForm1;
GetSimpleText: function(LangRus: Boolean): PChar;
LibHandle: THandle;

procedure Button1Click(Sender: TObject);
begin
@GetSimpleText := nil;
LibHandle := LoadLibrary("MYDLL.DLL");
if LibHandle >= 32 then begin
@GetSimpleText := GetProcAddress(LibHandle,"GetSimpleText");
if @GetSimpleText <> nil then
ShowMessage(StrPas(GetSimpleText(True)));
end;
FreeLibrary(LibHandle);
end;

Первый вариант - всё прекрасно, со вторым проблемы.


 
Skier ©   (2003-08-16 19:47) [3]

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


 
Lex   (2003-08-16 21:46) [4]

Спасибо, всё заработало.


 
Юрий Зотов ©   (2003-08-16 22:07) [5]

> Lex (16.08.03 18:53) [2]

Попробуйте подправить GetSimpleText таким образом:

function GetSimpleText(LangRus: Boolean): PChar; stdcall;
var
S: string;
begin
if LangRus then
S := "Здравствуй, мир!"
else
S := "Hello, world!";
Result := PChar(S)
end;

И посмотрите, не возникнет ли при вызове ошибка.



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

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

Наверх




Память: 0.47 MB
Время: 0.017 c
4-1727
tipman
2003-06-28 20:42
2003.09.01
Где взять hProcess для функции WaitForInputIdle


3-1326
BigError
2003-08-07 20:49
2003.09.01
MySQL - вопрос по libmySQL.dll (+)


8-1512
tytus
2003-05-05 18:08
2003.09.01
PlaySound


3-1293
Amid
2003-07-24 16:07
2003.09.01
Что лучше ADO или DBExpress ?


4-1716
-napil
2003-06-27 01:29
2003.09.01
Текст в панель инструментов