![]() |
Re: dll Problem
wie sieht denn der Code aus ? so :
Delphi-Quellcode:
oder wie ???var x : Integer; begin x := Addiere(12,31); Label1.Caption := inttostr(x); end; |
Re: dll Problem
zur Zeit so
Delphi-Quellcode:
unit Einbinden1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm3 = class(TForm) Label1: TLabel; private { Private-Deklarationen } public { Public-Deklarationen } end; var Form3: TForm3; implementation type TSummenFunktion = function(zahl1, zahl2: integer): integer; stdcall; function addieren(zahl1, zahl2: integer): integer; var SummenFunktion: TSummenFunktion; Handle: THandle; begin Handle := LoadLibrary(PChar(ExtractFilePath(ParamStr(0))+'rechnen.dll')); if Handle <> 0 then begin @SummenFunktion := GetProcAddress(Handle, 'addiere'); if @SummenFunktion <> nil then begin result:=SummenFunktion(zahl1, zahl2); end; FreeLibrary(Handle); {$R *.dfm} end; end; end. |
Re: dll Problem
Delphi-Quellcode:
Getippt und nicht getestet.
unit Einbinden1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm3 = class(TForm) Label1: TLabel; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form3: TForm3; implementation {$R *.dfm} type TSummenFunktion = function(zahl1, zahl2: integer): integer; stdcall; function addieren(zahl1, zahl2: integer): integer; var SummenFunktion: TSummenFunktion; Handle: THandle; begin Result := 0; Handle := LoadLibrary(PChar(ExtractFilePath(ParamStr(0))+'rechnen.dll')); if Handle <> 0 then begin @SummenFunktion := GetProcAddress(Handle, 'addiere'); if @SummenFunktion <> nil then begin result:=SummenFunktion(zahl1, zahl2); end; FreeLibrary(Handle); end; end; procedure TForm3.Button1Click(Sender: TObject); begin Label1.Caption := inttostr(addieren(15,2)); end; end. |
Re: dll Problem
er zeigt mir 0 an??, aber sonst funktioniert es
|
Re: dll Problem
Es funktioniert nicht. Wahrscheinlich, weil es keine DLL namens "rechnen.dll" gibt.
Edit: [etwas ![]() |
Re: dll Problem
Du hast warscheinlich vergessen eine Funktion zu erstellen die das auch aufruft !!
mach mal Folgendes : erstelle auf dem Formular einen Button und Klicke den doppelt an dann hast du normal folgenden Code :
Delphi-Quellcode:
und da fügst du dann folgendes ein :
procedure TForm3.Button1Click(Sender: TObject);
begin end;
Delphi-Quellcode:
dann müsste das Ergebnis so aussehen :
Label1.Caption := inttostr(addieren(1,2));
Delphi-Quellcode:
dann starte das Programm und kliche auf den button und dann wirst du sehen das das Label eine 3 anzeigt.
procedure TForm3.Button1Click(Sender: TObject);
begin Label1.Caption := inttostr(addieren(1,2)); end; Gruss Sascha (Habe es bei mir getestet geht !) Was du auch beachten solltest (Habe ich eben getestet) das die dll auch im gleichen verzeichnis ist, wie das Programm. und das der Name stimmt. wen ich die dll lösche bekomme ich auch eine 0 ! Gruss Sascha |
Re: dll Problem
Du musst auch auf Groß- und Kleinschreibung achten.
|
Re: dll Problem
:wall: :wall: :wall: :wall: :wall: :wall: :wall:
ich habe vorhin den Code aus dem Tutorial kopiert, da hies die dll Datei natürlich nicht so wie meins @sascha, danke für die ausführliche Erklährung ;) :wall: :wall: :wall: :wall: :wall: :wall: :wall: jetzt funktioniert es danke an alle :thumb: //edit: ich sollte doch schon ins Bett gehen :) |
Re: dll Problem
Hi!
Zuersteinmal hierzu: Zitat:
Zum Rest.. Dein Quelltext gibt doch gar keinen Aufschluss darüber, was wo mit dem Ergebnis gemacht wird. Wenn Form3 erzeugt wurde und ein Label hat, sollte die Ausgabe funktionieren. Schöner wäre es auch, wenn das Addieren eine Funktion der Klasse TForm3 wäre.. aber das nur nebenbei. Nachtrag: Mieser roter Kasten.. ich poste trotzdem! Nachtrag2: Beim roten Kasten war deine Antwort noch nicht drin... naja, ignoriert mich :) .. ich lasse mir wohl immer viel Zeit beim schreiben und bearbeiten... |
Re: dll Problem
naja, kommt darauf an wie schwerwiegend man einen Bug aufnimmt, es sind eher kleine Codeunterschiede zwischen den einzellnen delphiversionen.
ja, die roten Kasten, da muss man einfach schneller schreiben lernen :-D :-D :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz