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

Вниз

dll   Найти похожие ветки 

 
[Genius]   (2002-02-03 08:15) [0]

У меня такая проблемка - нужно через функцию из длл заполнить два одномерных массива... не знаю как писать длл и как ее функцию вызвать, т.к. ни разу с этим не сталкивался... не подскажите?


 
[Genius]   (2002-02-04 13:11) [1]

Либо никто не знает... либо вопрос задан по-ламерски...


 
Алексей Петров ©   (2002-02-04 13:28) [2]

Второе. О чем спросить-то хотел?


 
MBo ©   (2002-02-04 13:33) [3]

либо N2.
описание создания DLL есть в хелпе, статье Кариха на этом сайте,
в 9 главе Тексейры.

простой пример(стат. компоновка)

library lib1;
procedure makearr(var a,b:array of double;count:integer);stdcall;
var i:integer;
begin
for i:=0 to count-1 do begin
a[i]:=sin(0.1*i);
b[i]:=cos(0.1*i);
end;
end;
exports makearr;
begin
end.


вызов
procedure makearr(var a,b:array of double;count:integer);stdcall;external "lib1";

procedure TForm1.Button1Click(Sender: TObject);
var a,b:array[1..100] of double;
i:integer;
begin
makearr(a,b,100);
for i:=1 to 100 do
memo1.lines.add(floattostr(a[i]))


 
[Genius]   (2002-02-06 15:01) [4]

спасибо, примерно это мне и надо было, только теперь, если программа обращается к длл, то по завершении программы вылазиет окошко - runtime error 217 кажется... что это такое?


 
MBo ©   (2002-02-06 15:05) [5]

с номером не напутал?
217 Control-C EControlC
EControlC is raised when a user presses Ctrl+C to terminate a
console application.


 
Belov ©   (2002-02-06 15:17) [6]

Первым модулем с секции uses DLL и главного приложения надо бы прописать ShareMem
Почитай то что заремировано, когда создаешь проект аки Dll


 
Fellomena   (2002-02-06 15:23) [7]

Всем привет !
Тодже немного не поняла в чём вопрос, но тем неменее пример передачи из главного приложения в dll массива и работы с ним:

library MyDll;

uses
SysUtils,
Classes,
Dialogs;

procedure Show(MyArray: array of integer); stdcall;
begin
ShowMessage(IntToStr(MyArray[0])+ #10#13 + IntToStr(MyArray[3]));
end;

exports
Show;

begin
end.

unit Unit1;

interface

uses
Windows, SysUtils, Forms, Classes, Controls, StdCtrls;

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

var
Form1: TForm1;
HDll: THandle;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
PShow: procedure(MyArray: array of integer); stdcall;
MyAr1: array [0..3] of integer;
begin
HDll:=LoadLibrary(PChar("MyDll.dll"));
@PShow:=GetProcAddress(Hdll, "Show");
MyAr1[0]:=1;
MyAr1[1]:=2;
MyAr1[2]:=3;
MyAr1[3]:=666;
PShow(MyAr1);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FreeLibrary(HDll);
end;

end.





 
[Genius]   (2002-02-06 16:46) [8]

runtime error 217 at 0040280C


 
MBo ©   (2002-02-06 16:48) [9]

код?


 
[Genius]   (2002-02-06 17:27) [10]

... при этом в самом delphi окошко вылазиет - invalid pointer operation.??? а это какие операции?



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

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

Наверх




Память: 0.49 MB
Время: 0.01 c
3-66429
sync
2002-01-25 08:06
2002.02.21
Remote Data Module


4-66709
vector^
2001-12-22 12:37
2002.02.21
Как найти чужое окно.Смотрел FAQ , но ни чего не понял :-(


14-66667
Гаечка
2001-12-20 15:30
2002.02.21
Нужна помощь


6-66630
MARcoDEN
2001-12-01 12:38
2002.02.21
Как узнать IP-адрес


7-66693
Andreika
2001-11-16 02:31
2002.02.21
Как сохранить данные??