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

Вниз

Создание и использование DLL   Найти похожие ветки 

 
dolmat   (2005-11-29 10:48) [0]

Пробую запихнуть одну функцию в DLL. Раньше никогда не занимался подобным. Что я делаю не так?
library z_cod;

uses
 SysUtils,
 Classes;

{$R *.RES}

function z_code(s:ShortString):ShortString; stdcall;
var zc:string[1];
zk,zk1:longint;
begin
zk:=strtoint(s);
zk1:=zk mod 11;
if zk1=0 then zc:="5"
else if zk1=10 then zc:="0"
else zc:=inttostr(zk1);
z_code:=zc;
end;

exports

z_code name "z_code";
begin
end.

И использование
unit Unit2;

interface
function z_code(i:ShortString):ShortString; external "z_cod.dll";

implementation

end.

unit Unit1;

interface

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

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

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var s:string[1];
begin
s:=z_code("3121001");
end;
end.

Постоянно возникает Access volidation at adres 00331FE9 in module z_cod.dll


 
begin...end ©   (2005-11-29 10:54) [1]

По меньшей мере, добавьте stdcall в описание функции в EXE или уберите его из описания в DLL.


 
Ega23 ©   (2005-11-29 11:05) [2]


> else zc:=inttostr(zk1);


Здесь вылет?


 
Ega23 ©   (2005-11-29 11:07) [3]

Попробуй так:

function z_code(s:ShortString):ShortString; stdcall;
var
zk,zk1:longint;
begin
Result:=s;
zk:=strtoint(s);
zk1:=zk mod 11;
if zk1=0 then Result:="5"
else if zk1=10 then Result:="0"
end;


 
evvcom ©   (2005-11-29 11:39) [4]


> library z_cod;
>
> uses
>  SysUtils,
>  Classes;

А где здесь ShareMem?


 
Ega23 ©   (2005-11-29 11:40) [5]


> А где здесь ShareMem?


Он же ShortString использует...


 
wal ©   (2005-11-29 11:45) [6]


> А где здесь ShareMem?
А зачем он здесь?


 
dolmat   (2005-11-29 12:46) [7]

begin...end ©   (29.11.05 10:54) [1]
Заработало. Только теперь при выходе из программы "Rantime error 217"
Это чего нужно?


 
Anatoly Podgoretsky ©   (2005-11-29 12:49) [8]

Это уже к этому не относится


 
begin...end ©   (2005-11-29 13:03) [9]

> dolmat   (29.11.05 12:46) [7]

Уберите ShareMem.


 
jack128 ©   (2005-11-29 14:30) [10]

dolmat   (29.11.05 10:48)
function z_code(s:ShortString):ShortString; stdcall;

Модификатором const не избегайте пользоваться.



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

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

Наверх




Память: 0.46 MB
Время: 0.012 c
3-1130580897
Leonid
2005-10-29 14:14
2005.12.18
Как расширить поле DBF-файла ?


14-1132755922
msguns
2005-11-23 17:25
2005.12.18
Как сделать Soft-beholder ?


1-1132817455
SergeyG
2005-11-24 10:30
2005.12.18
вопрос по печати изображения


9-1122218078
Большой Брат
2005-07-24 19:14
2005.12.18
Антилязинг


14-1132670460
passlight
2005-11-22 17:41
2005.12.18
Нашли стрелочника...





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