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

Вниз

Работа с 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.009 c
8-1122776349
pOLyMOrpH
2005-07-31 06:19
2006.01.01
градиент на TPanel


8-1122279928
melena
2005-07-25 12:25
2006.01.01
частота пульсации


14-1133966671
Ксардас
2005-12-07 17:44
2006.01.01
Задачи по программированию


2-1134645406
dapher
2005-12-15 14:16
2006.01.01
Конструкторы


14-1134215248
Dilly
2005-12-10 14:47
2006.01.01
Книга по делфи





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