AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Eine Funktion der DLL erzeugt einen Fehler beim Schließen
Thema durchsuchen
Ansicht
Themen-Optionen

Eine Funktion der DLL erzeugt einen Fehler beim Schließen

Ein Thema von BAMatze · begonnen am 17. Jul 2009 · letzter Beitrag vom 22. Jul 2009
 
BAMatze

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

Eine Funktion der DLL erzeugt einen Fehler beim Schließen

  Alt 17. Jul 2009, 14:26
Hallo an alle DP´ler und guten Tag,

Also hab nochmal eine Frage zu dynamisch geladenen Funktionen aus einer DLL. Muss dazu sagen, habe diese Funktionen alle schon statisch eingebunden und sie funktionierten einwandfrei. Jetzt bekomme ich bei einer Funktion immer einen Fehler ausgegeben.

Aber erstmal schnell die genauen Daten:

Delphi-Quellcode:
// Aus der Dokumentation der DLL (nur die verwendeten Funktionen aufgeführt)
{function MMC_COM_open(portnumber,baudrate:integer):integer;
            stdcall external ExtLib;
function MMC_COM_close:integer;
            stdcall external ExtLib; //
function MMC_sendCommand(pCmd:pChar):integer;
            stdcall external ExtLib; //
function MST_moving:integer;
            stdcall external ExtLib; //
function MMC_setDevice(newaxis:integer):integer;
            stdcall external ExtLib; // }



// Typdeklaration für die aus der dynamisch eingebundenen MMC.DLL zu ladenen
// Funktionen.
type TMMC_COM_open = function(portnumber,bautrate: integer):integer; stdcall;
type TMMC_close = function: integer; stdcall;
type TMMC_sendCommand = function(pCmd: pChar): integer; stdcall;
type TMST_moving = function: integer; stdcall;
type TMMC_setDevice = function(NewAxis: integer): integer; stdcall;

// Variablendeklaration der aus der dynamisch eingebundenen MMC.DLL zu ladenen
// Funktionen
var MMC_COM_open: TMMC_COM_open;
    MMC_close: TMMC_close;
    MMC_sendCommand: TMMC_sendCommand;
    MST_moving: TMST_moving;
    MMC_setDevice: TMMC_setDevice;

// im Implementierungsteil

function TV_Tische.DLLFunktionen_laden: boolean;
begin
  Protokoll.Protokolleingang('Verschiebetisch', 'DLL-Fkt laden');
  try
    if DLL_Handle <> 0 then //es wird überprüft, ob die DLL vorhanden ist und dann ein Handle zugewiesen
      begin
        // Es wurde festgestellt, dass nicht alle Funktionen, die in der DLL vorhanden
        // sind wirklich für die Umsetzung des Programmes benötigt werden. Deswegen
        // werden hier nur die wirklich verwendeten Funktionen eingebunden, um auch die
        // Resourcen für das Programm zu beschränken
        @MMC_COM_open := GetProcAddress(DLL_Handle, 'MMC_COM_open');
        @MMC_close := GetProcAddress(DLL_Handle, 'MMC_close');
        @MMC_sendCommand := GetProcAddress(DLL_Handle, 'MMC_sendCommand');
        @MST_moving := GetProcAddress(DLL_Handle, 'MST_moving');
        @MMC_setDevice := GetProcAddress(DLL_Handle, 'MMC_setDevice');
        result := true;
      end
    else
      begin
        Fehlermeldung(103);
        result := false;
      end
  except
    Fehlermeldung(104);
    result := false;
  end;
  Protokoll.Protokollausgang('Verschiebetisch', 'DLL-Fkt laden');
end;

destructor TV_Tische.Destroy;
begin
  Bremsen(1);
  MMC_close; //<-- hier taucht ein Fehler auf in Adresse 0000000
  Bewegungsueberwachung.free;
  TischDLL.Free;
  Protokoll.Protokollausgang('Verschiebetisch', 'Destroy');
  inherited Destroy;
end;
Beim Beenden der MainForm wird mir ein Fehler gemeldet, der in der MMC_close-Funktion auftritt. Allerdings kann ich mir nocht nicht erklären, woher dieser Fehler kommt, da sämtliche anderen Funktionen ohne Probleme ausgeführt werden. Die Verwendung der statischen Funktionen funktionierte ohne Probleme. Sieht jemand eventuell, was bei der Funktion falsch läuft?

Vielen Dank
BAMatze
2. Account Sero
  Mit Zitat antworten Zitat
 


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:20 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 by Thomas Breitkreuz