Форум: "Основная";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];
Внизгде ошибка при работе с 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c