![]() |
Re: dll einbinden
Hast du denn jetzt schon eine Lösung?
Schreibe mal, wie ich das mache: Also ich habe mehrere DLL´s für Perepherie-Geräte. Da wird mir z.B. eine Funktion gegeben in der Dokumentation für das Perepherie-Gerät, die lautet:
Delphi-Quellcode:
Um diese in meinem Programm einzubinden habe ich sie wie folgt deklariert:
function MMC_COM_open(portnumber,baudrate:integer):integer;
Delphi-Quellcode:
In deiner Unit kannst du sie dann ganz normal verwenden:
const ExtLib = 'MMC.DLL'
.. function MMC_COM_open(portnumber,baudrate:integer):integer; stdcall external ExtLib;
Delphi-Quellcode:
gleiche Vorgehensweise nimmst du, wenn es sich nicht um Übergabewerte handelt, die den Typ Integer haben. Wenn du strings übergeben musst, kann es sein, dass du diese in PAnsiChar umcasten musst. Hier noch ein Bsp., wie ich eine Function einer DLL benutze, bei der ich dieses Umcasten verwenden muss:
...
procedure Beispiel; var iWert: integer; begin // tue etwas iWert := function MMC_COM_open(1,9600); // tue weiteres end;
Delphi-Quellcode:
MMC_sendCommand(PAnsiChar('SV'+inttostr(iGeschwindigkeit)));
|
Re: dll einbinden
Liste der Anhänge anzeigen (Anzahl: 2)
hab es nun hinbekommen. Allerdings wenn ich nun mein Programm beende bekomme ich komischerweise diesen Fehler:
Siehe Anhang :) |
Re: dll einbinden
Wie sieht dein Code nun aus?
|
Re: dll einbinden
hmm Problem scheint behoben, ich habe aus der DLL in uses einfach ShareMem gelöscht und habe es somit nur noch im Hauptprogramm stehen, seit dem tritt der Fehler nicht mehr auf.
War es ein Fehler ShareMem in die DLL zuschreiben? |
Re: dll einbinden
Zitat:
DLL
Delphi-Quellcode:
function NFak(Val: Integer): INT64; stdcall; begin if Val < 0 then raise Exception.Create('Val muss größer/gleich 0 sein.'); if Val = 0 then Val := 1; Result := 1; repeat Begin Result := Result * Val; Dec(Val) End; until Val <= 1; end; Programm
Delphi-Quellcode:
stdcall stand nicht an der gleichen Stelle wie in der DLL dies hat wohl den Fehler verursacht, als ich es geändert habe ging es.function NFak(Val: Integer): INT64; external DLL; stdcall; |
Re: dll einbinden
Die Dateianhänge als Bitmap zu speichern ist keine gute Idee, wie wäre es mit .png oder meinetwegen auch .jpg? So sind die fast 3 MiB groß...
Wenn du mit Strings als Parameter oder Rückgabewert arbeitest, dann musst du gezwungenermaßen in DLL und Projekt (nicht Unit!) an erster Stelle ShareMem stehen haben. |
Re: dll einbinden
Zitat:
|
Re: dll einbinden
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:32 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