Einzelnen Beitrag anzeigen

tommie-lie
(Gast)

n/a Beiträge
 
#5

Re: DLL wird nicht geladen - Warum nicht???

  Alt 19. Aug 2005, 18:41
Zitat von delphifan2004:
Mit dieser Dll klappt das Laden und die Prozedur MsgBox läßt sich aufrufen. Bloß, mit der Zeile iPlg := aProc will ich doch erst mal einen Prozedurzeiger zuweisen.
Dann musst du das anders machen
aProc ist die Funktion selbst, denn sie sit vom Typ TProcInitPlg. Wenn du in einem Delphi-Programm den Namen einer Funktion schreibst, die keinen Parameter benötigt, wird die Methode aufgerufen. Zum Beispiel GetLastError, schreibst du ja auch nicht, wie es eigentlich sinnvoll wäre, GetLastError(). Wenn du also iPlg := aProc hast, wird aProc aufgerufen und der Rückgabewert der Funktion der Variable iPlg zugewiesen. So, wie du deine Variablen deklariert hast, macht das für mich auch Sinn, daß iPlg := aProc die Funktion aProc auch aufruft, erscheint mir also richtig so (nicht nur syntaktisch, sondern auch semantisch).

Zitat von delphifan2004:
Wenn ich die MessageBox aus der Dll mit [Ok] quittiere, erhalte ich anschließend eine EAccessViolation. Warum das nun wieder?
Vermutlich weil die Funktion eine Prozedur ist, die keinen Rückgabewert hat, er aber dennoch ausgelesen und zugewiesen wird (nuja, zumindest wird es versucht ).

Zitat von delphifan2004:
Du sagst, Gerät kann auch eine Datei sein. Im konkreten Fall vermutlich unsere Dll.
Vermute ich auch. Sprint sagte schon, daß er den Fehler bekommt, wenn er Dateien mit LoadLibrary lädt, die keine DLLs sind. Das ist das Verhalten, was ich aus der Fehlermeldung vermuten würde, auch wenn es für mich nicht viel Sinn macht, es sei denn du hast dich beim Klick so verhauen, daß du bei allen Versuchen mit dem Dialog nicht die DLL ausgewählt hast, sondern irgendwas anderes
Hast du denn mal vor dem Laden fName überprüft, zum Beispiel indem du es in einer MessageBox anzeigst?

Zitat von Sprint:
Benutze lieber einen ShareMem Ersatz deiner Wahl. Wie z.B. CMemMan oder FastShareMem. Dann brauchst du die Borland DLL nicht mit dir herum tragen.
Um noch inkompatibler zum Rest der Welt zu werden?
  Mit Zitat antworten Zitat