AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

dll einbinden

Ein Thema von youuu · begonnen am 5. Mär 2009 · letzter Beitrag vom 7. Mär 2009
Antwort Antwort
Seite 2 von 2     12
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: dll einbinden

  Alt 6. Mär 2009, 09:40
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:
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:

MMC_sendCommand(PAnsiChar('SV'+inttostr(iGeschwindigkeit)));
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#12

Re: dll einbinden

  Alt 6. Mär 2009, 21:00
hab es nun hinbekommen. Allerdings wenn ich nun mein Programm beende bekomme ich komischerweise diesen Fehler:

Siehe Anhang
Angehängte Grafiken
Dateityp: bmp fehler_877.bmp (2,85 MB, 12x aufgerufen)
Dateityp: bmp fehler2_150.bmp (2,85 MB, 4x aufgerufen)
Steven
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.853 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: dll einbinden

  Alt 6. Mär 2009, 21:09
Wie sieht dein Code nun aus?
Markus Kinzler
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#14

Re: dll einbinden

  Alt 6. Mär 2009, 21:13
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?
Steven
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#15

Re: dll einbinden

  Alt 6. Mär 2009, 21:16
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.
Steven
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.565 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: dll einbinden

  Alt 6. Mär 2009, 21:18
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#17

Re: dll einbinden

  Alt 6. Mär 2009, 23:55
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#18

Re: dll einbinden

  Alt 7. Mär 2009, 11:06
Zitat von Luckie:
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.
hab es ausversehen vergessen in jpg zu konverten :/ aber upload ging in 10 sek hab 16k leitung da merkt man nicht viel ^^
Steven
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:49 Uhr.
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