Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Virtual Basic Dll in Delphi aufrufen? (https://www.delphipraxis.net/128529-virtual-basic-dll-delphi-aufrufen.html)

gandime 31. Jan 2009 16:47


Virtual Basic Dll in Delphi aufrufen?
 
Hi,
ich möchte in Delphi eine in VB geschriebene Dll aufrufen, welche ich so mache:
Delphi-Quellcode:
function TForm1.LoadDll(Name:PChar;Plugin:String):PChar;
type
  TDLLFunc = procedure;
var
  DLLHandle:THandle;
  Ret:PChar;
  func:TDllFunc;
begin
  Ret := '';
  DLLHandle:=LoadLibrary(PChar(ExtractFilePath(paramstr(0))+Plugin+'.dll'));
  if DLLHandle >= 32 then
  begin
    @func := GetProcAddress(DLLHandle,Name);
    if Assigned (func) then
      func;
  end;
  result:=Ret;
end;
So siehtz jetzt nur testweise die VB Dll aus:
Delphi-Quellcode:
Public Function start()
MsgBox "dll"
End Function
*
Public Sub start2()
MsgBox "dll"
End Sub
Was ist der Fehler?
Ich vermute den Fehler im VB-Code da ich Delphi Dll´s damit ohne Probleme laden kann!
Vlt kennt sich ja wer nen bissel mit VB aus und kann mir dabei helfen.

omata 31. Jan 2009 16:52

Re: Virtual Basic Dll in Delphi aufrufen?
 
Zitat:

Zitat von gandime
Was ist der Fehler?

Die Frage must du beantworten. Was geht denn nicht? Was ist der Fehler?

gandime 31. Jan 2009 16:55

Re: Virtual Basic Dll in Delphi aufrufen?
 
die funktion der VB Dll wird nicht geladen/ausgeführt
ups^^ hatte ich vergessen zu sagen

omata 31. Jan 2009 17:03

Re: Virtual Basic Dll in Delphi aufrufen?
 
Schau doch mal hier.

gandime 31. Jan 2009 17:45

Re: Virtual Basic Dll in Delphi aufrufen?
 
so die dll is jetzt verändert:
Delphi-Quellcode:
Public Function start() As String
MsgBox "dll"
start = "moin"
End Function
*
Public Sub start2()
MsgBox "pdll"
End Sub
*
Function DLLMain(ByVal a As Long, ByVal b As Long, ByVal c As Long) As Long
*** DLLMain = 1
End Function
*
Sub Main()
*** ' Dummy
End Sub

Und die Export.def:

LIBARY Project1
EXPORTS
*start
*start2
aber läuft immer noch nicht mit folgender Funktion:
Delphi-Quellcode:
function TForm1.GetPluginInfo (Name : PChar; Plugin : String) : PChar;
type
  TDLLFunc = function:String;
var
  DLLHandle:THandle;
  Ret:PChar;
  func:TDllFunc;
begin
  Ret := '';
  DLLHandle:=LoadLibrary(PChar(ExtractFilePath(paramstr(0))+Plugin+'.dll'));
  if DLLHandle >= 32 then
  begin
    @func := GetProcAddress(DLLHandle,Name);
    if Assigned (func) then// hier assigned(func)=false
      Ret:=pchar(func);
  end;
  result:=Ret;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  showmessage(GetPluginInfo('start','a'));
end;
TDLLFunc = function:pchar; läuft auch nicht.

omata 31. Jan 2009 17:49

Re: Virtual Basic Dll in Delphi aufrufen?
 
Hast du die Funktionen die du benutzen möchtest auch exportiert?

gandime 31. Jan 2009 17:50

Re: Virtual Basic Dll in Delphi aufrufen?
 
angeblich hat er das gemacht:
Export.def:

LIBARY Project1
EXPORTS
start
start2

hatte gerade noch meinen oberen beitrag editiert

omata 31. Jan 2009 18:00

Re: Virtual Basic Dll in Delphi aufrufen?
 
Hast du das auch mal Schritt für Schritt über den Debugger analysiert? Welchen Wert hat DLLHandle? Und wo kommt da die 32 her? Sobald DLLHandle <> 0 ist, ist die Dll geladen.

gandime 31. Jan 2009 18:08

Re: Virtual Basic Dll in Delphi aufrufen?
 
DLLHandle=285212672 den wert 32 hatte ich hier im Forum gefunden.
Ich bin mir ja fast sicher das es an der VB Dll liegt.
Wärst du vlt so nett und würdest mir eine test Dll mit Source uppen?

omata 31. Jan 2009 18:13

Re: Virtual Basic Dll in Delphi aufrufen?
 
Mein angegebener Link enthält doch ein Beispiel Projekt


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:47 Uhr.
Seite 1 von 3  1 23      

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