Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];

Вниз

Создание и использование 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.012 c
3-1130749811
alex_1234
2005-10-31 12:10
2005.12.18
D6,ZEOS,MySQL: не работает :-(


6-1126499179
Pazitron_Brain
2005-09-12 08:26
2005.12.18
Чем можно заменить?


14-1132841832
oldman
2005-11-24 17:17
2005.12.18
Локомотив победил!!! (анализы футболов прошу не постить!)


3-1130768443
Term
2005-10-31 17:20
2005.12.18
Как выбрать только дубли


3-1130774808
Piter
2005-10-31 19:06
2005.12.18
TIBDatabase - потокобезопасен?





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