Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi DLLs (https://www.delphipraxis.net/70957-dlls.html)

ByStones2 7. Jun 2006 10:53


DLLs
 
Hi,

ich will mich gerade auf das Thema DLL stürzen, doch es will nicht so wie ich will.
Darum frage ich euch, hat jemand ein Programm wo eine DLL eingebunden wird.
Man saoll nur eine showmessage ausgeben, doch die function/procedure steht in der DLL.
Falls ihr soetwas habt wäre ich echt dankbar wenn ihr das hochladen könntet.
Ich hab mir schon das Tutorial von Assarbad durchgelesen, doch ich versteh nur Bahnhof !!!

ByStones

Bernhard Geyer 7. Jun 2006 11:10

Re: DLLs
 
Schau dir mal das Tutorial bei dsdt an.

ByStones2 7. Jun 2006 11:24

Re: DLLs
 
Zitat:

Zitat von Bernhard Geyer
Schau dir mal das Tutorial bei dsdt an.

ich habs mir mal durchgelesen und hab auch aales gemacht:
Delphi-Quellcode:
[Error] Unit1.pas(13): E2065 Unsatisfied forward or external declaration: 'TForm1.addiere'
[Fatal Error] mathe.dpr(5): F2063 Could not compile used unit 'Unit1.pas'
Mein Code:
Delphi-Quellcode:
unit Unit1;

interface


uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    function addiere(zahl1, zahl2: integer): integer; stdcall;
  private
    { Private declarations }
  public
    { Public declarations }
  end;


var
  Form1: TForm1;

implementation

{$R *.dfm}

function addiere(zahl1, zahl2: integer): integer; stdcall;
external 'rechnen.dll';

end.
Mein DLL:
Delphi-Quellcode:
library rechnen;

{ Important note about DLL memory management: ShareMem must be the
  first unit in your library's USES clause AND your project's (select
  Project-View Source) USES clause if your DLL exports any procedures or
  functions that pass strings as parameters or function results. This
  applies to all strings passed to and from your DLL--even those that
  are nested in records and classes. ShareMem is the interface unit to
  the BORLNDMM.DLL shared memory manager, which must be deployed along
  with your DLL. To avoid using BORLNDMM.DLL, pass string information
  using PChar or ShortString parameters. }

uses
  SysUtils,
  Classes;

{$R *.res}


function addiere(zahl1, zahl2: integer): integer; stdcall;
begin
  result := zahl1+zahl2;
end;

exports
  addiere;

begin

end.
ich hab keine Ahnung wo der Fehler liegt !!!

Luckie 7. Jun 2006 11:27

Re: DLLs
 
Oder hier: http://www.michael-puff.de/dirindex....orte/Assarbad/ Ist eventuell etwas ausführlicher.

Daniel G 7. Jun 2006 11:29

Re: DLLs
 
nimm mal die Funktion aus dem "TForm1" - Abschnitt heraus und setze das hier:

Delphi-Quellcode:
function addiere(zahl1, zahl2: integer): integer; stdcall;
external 'rechnen.dll';
vor den implementation - Abschnitt. Geht's dann?

ByStones2 7. Jun 2006 11:29

Re: DLLs
 
Zitat:

Zitat von Luckie
Oder hier: http://www.michael-puff.de/dirindex....orte/Assarbad/ Ist eventuell etwas ausführlicher.

hab ich schon gelesen !!!
Jetzt geht's !!! Es geht !!!!
:dancer: :dancer: :dancer: :dancer2: :dancer2: :party: :party: :party: :hi: :hi: :cheers: :cheers:

Danke Daniel G !!!!!!!!!!!! :thumb: :thumb: :thumb:

NicoDE 7. Jun 2006 11:30

Re: DLLs
 
Zitat:

Zitat von ByStones2
Unsatisfied forward or external declaration: 'TForm1.addiere'

Entferne die Funktion 'addiere' aus dem Interface von TForm1.

ByStones2 7. Jun 2006 11:36

Re: DLLs
 
Es wäre schon wenn ihr mir noch sagen könntet wie man das
ganze mit einer procedure macht !!!
Danke schon mal wieder im vorraus !!!

NicoDE 7. Jun 2006 11:43

Re: DLLs
 
Zitat:

Zitat von ByStones2
Es wäre schon wenn ihr mir noch sagen könntet wie man das
ganze mit einer procedure macht

Eine Prozedur ist nichts anderes als eine Funktion ohne Rückgabewert.
Insofern stellt sich (zumindest mir) die Frage: was willst du genau machen?

ByStones2 7. Jun 2006 11:45

Re: DLLs
 
Zitat:

Zitat von NicoDE
Zitat:

Zitat von ByStones2
Es wäre schon wenn ihr mir noch sagen könntet wie man das
ganze mit einer procedure macht

Eine Prozedur ist nichts anderes als eine Funktion ohne Rückgabewert.
Insofern stellt sich (zumindest mir) die Frage: was willst du genau machen?

Delphi-Quellcode:
procedure show; stdcall;
begin
showmessage('hi');
end;
Delphi-Quellcode:
procedure show; stdcall;
external 'rechnen.dll';

procedure TForm1.Button1Click(Sender: TObject);
begin
show;
Form1.Caption := inttostr(addiere(5,5));
end;
da pssiert einfach nichts, keine Fehlermeldung, nichts


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:03 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz