Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   dll einbinden (https://www.delphipraxis.net/130274-dll-einbinden.html)

BAMatze 6. Mär 2009 09:40

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:
function MMC_COM_open(portnumber,baudrate:integer):integer;
Um diese in meinem Programm einzubinden habe ich sie wie folgt deklariert:

Delphi-Quellcode:
const ExtLib = 'MMC.DLL'
..
function MMC_COM_open(portnumber,baudrate:integer):integer;
            stdcall external ExtLib;
In deiner Unit kannst du sie dann ganz normal verwenden:

Delphi-Quellcode:
...
procedure Beispiel;
var iWert: integer;
begin
  // tue etwas
  iWert := function MMC_COM_open(1,9600);
  // tue weiteres
end;
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:

Delphi-Quellcode:
MMC_sendCommand(PAnsiChar('SV'+inttostr(iGeschwindigkeit)));

youuu 6. Mär 2009 21:00

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 :)

mkinzler 6. Mär 2009 21:09

Re: dll einbinden
 
Wie sieht dein Code nun aus?

youuu 6. Mär 2009 21:13

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?

youuu 6. Mär 2009 21:16

Re: dll einbinden
 
Zitat:

Zitat von mkinzler
Wie sieht dein Code nun aus?

genauso wie davor ich habe nur eine kleineigkeit entdeckt die den Fehler auslöste und zwar:

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:

function NFak(Val: Integer): INT64; external DLL; stdcall;
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.

jaenicke 6. Mär 2009 21:18

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.

Luckie 6. Mär 2009 23:55

Re: dll einbinden
 
Zitat:

Zitat von youuu
Siehe Anhang :)

Ähm, du hast fast zwei drei MB große Dteien angehangen. Spätestens beim Upload hätte dir auffallen sollen, dass dies Bitmap nicht unbedingt das optimale Format ist. :roll:

youuu 7. Mär 2009 11:06

Re: dll einbinden
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von youuu
Siehe Anhang :)

Ähm, du hast fast zwei drei MB große Dteien angehangen. Spätestens beim Upload hätte dir auffallen sollen, dass dies Bitmap nicht unbedingt das optimale Format ist. :roll:

hab es ausversehen vergessen in jpg zu konverten :/ aber upload ging in 10 sek hab 16k leitung da merkt man nicht viel ^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:32 Uhr.
Seite 2 von 2     12   

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