Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-17351
msoftware
2003-02-18 11:17
2003.03.06
Очень маленький и глупый вопрос


1-17113
Dunkan
2003-02-22 11:23
2003.03.06
как узнать время в мили секундах?


3-16889
Наташа
2003-02-13 13:55
2003.03.06
Импорт из Excel


3-16879
Aristarh
2003-02-17 14:35
2003.03.06
Как из делфей открыть базу mde Access?


14-17385
lds
2003-02-16 20:52
2003.03.06
WinLIRC





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