Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-66601
DenKop
2002-02-05 20:08
2002.02.21
Как отобрзить апостроф в переменной типа String


14-66656
DjG-CORE
2001-10-29 20:03
2002.02.21
Ведётся создание игры Resident Evil на TMT Pascal-е / Delphi.


3-66455
VladimirL
2002-01-28 17:18
2002.02.21
Фильтры и скорость


1-66560
vinni2000
2002-02-05 13:08
2002.02.21
Как переименовать файл


1-66573
Basilio
2002-02-05 16:06
2002.02.21
Динамические массивы





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