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

Вниз

где ошибка при работе с dll   Найти похожие ветки 

 
Dober_m@N ©   (2003-02-24 05:34) [0]

Почему выдаёт ошибку функция при вызове из dll причём сначала всё выводит, а потом ругается типа: class exception EInvalidPointer.... ?

собсно dll ( просто тест на возвращение string"a)
library ct1;

uses
SysUtils,
Classes;

{$R *.res}

function kk(s : string) : string;
begin
result := s;
end;

export kk(s: string) : string;

begin
end.


проект(тоже просто тест):
unit Unit1;

interface

uses
Windows, Forms, Buttons, StdCtrls, Controls, Classes;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;

var
Form1: TForm1;

function kk(s: string):string; external "ct1.dll";

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
MessageBox(handle, pchar(kk("kkkkkk")), "tttt", 0);
end;

end.


 
Amit ©   (2003-02-24 06:52) [1]

Исправление:
uses
SysUtils,
Classes;

{$R *.res}

function kk(s : string) : string;export;
begin
result := s;
end;

exports kk;

begin
end.


проект(тоже просто тест):
unit Unit1;

interface

uses
Windows, Forms, Buttons, StdCtrls, Controls, Classes;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;

var
Form1: TForm1;

function kk(s: string):string; external "ct1.dll";

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
MessageBox(handle, pchar(kk("kkkkkk")), "tttt", 0);
end;


 
Dober_m@N ©   (2003-02-24 08:24) [2]

примерно как и раньше сначала выводит потом ругается ...class EInvalidPointer... ?


 
Егорычев Михаил ©   (2003-02-24 09:31) [3]

В DLL:
library ct1;

uses
SysUtils,
Classes;

{$R *.res}

function kk(s : pchar) : pchar;
begin
result := s;
end;

exports kk;


begin
end.

В проэкте:
var
Form1: TForm1;

function kk(s: string):string; external "ct1.dll";

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
MessageBox(handle, StrPas(kk("kkkkkk")), "tttt", 0);
end;

Может быть я с функцией StrPas ошибся вообщем понял - перевод из
PChar в string;


 
Юрий Зотов ©   (2003-02-24 09:46) [4]

> Dober_m@N

Когда Вы создавали проект DLL, то Delphi вставила в него здоровенный комментарий. Как Вы думаете, для чего она это сделала - чтобы Вы его прочитали, или чтобы Вы его удалили, не читая?

См. ShareMem в справке.


 
VAleksey ©   (2003-02-24 11:01) [5]

Повторюсь, но
там был совершенно бесполезный текст на английском языке про ShareMem. Внук (с)



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

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

Наверх




Память: 0.47 MB
Время: 0.015 c
1-17041
Stream2k
2003-02-22 08:41
2003.03.06
Реестр >>> Помогите плиз!!!!!


14-17398
Юров Владимир
2003-02-19 10:35
2003.03.06
ODBC


1-16996
Shc
2003-02-21 19:31
2003.03.06
Комбинация клавиш на вставку


6-17247
Uncle Archi
2003-01-17 22:07
2003.03.06
Chat


1-17004
mmmh
2003-02-24 20:21
2003.03.06
Сразу два вопроса 1 как отсортировать String grid чтод сначала шл