Форум: "Основная";
Текущий архив: 2002.02.21;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c