Autor Beitrag
Lemon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 96

Win XP
D5 Standart
BeitragVerfasst: Mi 10.12.03 13:53 
hallo,

kann man die prozeduren einer bestimmten unit auch in einer dll ansprechen????
z.b. prozedur 'laufen' aus 'unit1.pas' soll in der dll 'progs.dll' verwendet werden oder anspechbar sein.

vielen dank schon mal im vorraus.
ErnestoChe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 528

Win 2000 pro, CRUX 2.0
Delphi 6 Pers, Open K3
BeitragVerfasst: Mi 10.12.03 14:48 
Hi,

möchtest du eine Dll schreiben und Funktionen aus einer Unit in deinem Dll-Projekt verwenden? Dann kannst du die Unit einfach deinem Dll-Projekt hinzufügen, wie bei einer normalen Applikation auch. Über Projekt -> Dem Projekt hinzufügen.

Hier gibts ein Dll-Tutorial. Schau's dir am besten mal an.

MFG

- Ernesto -
himitsu
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 40



BeitragVerfasst: Mi 10.12.03 15:06 
Entweder du bindest die entsprechende Unit in eine DLL mit ein:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
Library progs;

Uses SysUtils,
  Classes,
  Unit1;

{$R *.res}

Procedure irgendwas;
  {nach oder beim laden der DLL}
  Begin
    laufen(Parameter);
  End;

Begin
End.


Oder wenn diese Prozedur im Programm und nicht in der DLL ist, übergibst du der DLL das Handle dieser Prozedur:
(ACHTUNG: das ist jetzt nur ein Bespiel - es muß noch etwas angepasst werden)
Im Programm:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
Procedure InitDLL(Z: Pointer); external 'progs.dll';

Procedure laufen(Parameterdefinition);
  Begin  
    ...
  End;

Procedure irgendwas;
  Begin
    InitDLL(@laufen);
  End;


In der DLL:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
Library progs;

Var laufen: Procedure(Parameterdefinition);

Procedure InitDLL(Z: Pointer);
  Begin
    @DLLFunktion := Z;
  End;

Procedure irgendwasanderes;
  Begin
    laufen(parameter);
  End;

Begin
End.

Ob man die aufgerufene Prozedur (laufen) auch dazu bringen kann irgendetwas im Programm zu machen glaube ich zwar nicht ganz, jeden falls ist es etwas schwerer anzustellen.

_________________
warum einfach wenn's auch kompliziert geht
schreib wie du willst und halt dich an keine standards
Lemon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 96

Win XP
D5 Standart
BeitragVerfasst: Mi 10.12.03 16:15 
habe die units jetzt so eingebunden;

...
Uses SysUtils,
Classes,
Unit2 in '..\..\Unit2.pas' {Form2},
Unit3 in '..\..\Unit3.pas' {Form3};
...

leider bekomme ich die fehlermeldung, dass ein undefinierter bezeichner gefunden wurde, wenn ich z.B auf die prozedur 'vor' zugreife.
warum????