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

Вниз

Работа с DLL   Найти похожие ветки 

 
SamProf ©   (2005-12-05 11:34) [0]

Мастера, такая проблема! Я создаю dllку:

library GraphicDLL;

uses
 SysUtils,
 Classes,
 SamGraphicU in "SamGraphicU.pas" {SamGraphicF};

{$R *.res}

procedure RunGraphic(L:TList;b:P40b;num:integer);
begin
showmessage(inttostr(num));
_RunGraphic(l,b,num);
end;

exports
RunGraphic;

begin
end.



И в проге пишу такой код:

unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;
type
  P40b=^T40b;
T40b=array [1..40] of byte;
TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
 public
 end;

var
 Form1: TForm1;
procedure RunGraphic(L:TList;b:P40b;num:integer);   stdcall; external "GraphicDLL.dll" name "RunGraphic";

implementation

uses SamGraphicU;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  _l:TList;
  p:^TTSIItem;
  _b,_b1:P40b;
  i,n,na:Integer;
begin
n:=20000;
na:=20;
_L:=TList.Create;
for i:=1 to na do
begin
new(p);
p^.name:=chr(ord("A")+i);;
fillchar(p^.Range,sizeof(t40b),0);
p^.Range[1]:=i;
p^.Range[2]:=0;
_l.Add(p);

end;
GetMem(_b,sizeof(t40b)*n);
_b1:=_b;
for i:=1 to n do
begin
fillchar(_b^,sizeof(t40b),0);
_b^[1]:=i mod $FF;
_b^[2]:=(i div $FF)mod $FF;
inc(_b);
end;

//==================================================
RunGraphic(_l,_b1,n);
while _l.Count>0 do
      begin
      p:=_l.Items[0];
      Dispose(p);
      _l.Delete(0);
      end;
_l.Free;
close;
end;

end.



В итоге в DLL ке параметр num всегда=255.
В чём прапара? Спасибо!


 
begin...end ©   (2005-12-05 11:43) [1]

А можно хотя бы соглашения о вызове одинаковые указать? Для начала.


 
SamProf ©   (2005-12-05 11:51) [2]

не понял!!!!


 
Ega23 ©   (2005-12-05 11:53) [3]

Вот почему у тебя в одном месте StdCall стоит, а в другом - нет?


 
Amoeba ©   (2005-12-05 14:59) [4]

Или убери StdCall нафиг (что в данном случее правильно), или добавь его в DLL. Главное - одинаковые соглашения о вызовах в DLL и модуле импорта.



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

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

Наверх




Память: 0.47 MB
Время: 0.039 c
2-1134479787
Dysan
2005-12-13 16:16
2006.01.01
SQL.Append Драйвер не поддерживает данной функции?


2-1133787508
Officeman
2005-12-05 15:58
2006.01.01
Бинарный вид. Представление textfile-а


14-1134044465
syte_ser78
2005-12-08 15:21
2006.01.01
Вопрос по Апачу


1-1133506673
denmin
2005-12-02 09:57
2006.01.01
Как запустить этот долбанный Rave на выполнение?


8-1122298305
Renegat
2005-07-25 17:31
2006.01.01
Конрастность черно-белых изоб.