Главная страница
    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
14-1134186110
Alexe_y
2005-12-10 06:41
2006.01.01
Vb.net и delphi


2-1134487118
TBeginner
2005-12-13 18:18
2006.01.01
Найти далее в TFindDialog


3-1131727185
suharew
2005-11-11 19:39
2006.01.01
как узанть есть ли тигер у таблицы??


4-1128249749
Энтри
2005-10-02 14:42
2006.01.01
wm_setcursor


4-1130416515
kay
2005-10-27 16:35
2006.01.01
Хочу сделать Balloon tip, но не знаю как получить координаты...





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