Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Dll in VB6 nutzen (https://www.delphipraxis.net/78400-delphi-dll-vb6-nutzen.html)

Maa83 4. Okt 2006 13:48


Delphi Dll in VB6 nutzen
 
Hallo,

ich habe ich Delphi6 eine Dll erstellt. Dieses ist ein Automationsobjekt.
In der Dll steckt zusätzlich (bzw. als Hauptbestandteil) eine Formklasse (TForm). Diese Dll möchte ich nun in VB6 verwenden. D.h. wenn ich in VB auf einen Button drücke soll die Dll initialisiert werden. Danach soll über eine Methode die auch public ist die Formklasse aufgerufen und angezeigt werden. Kann mir irgendjemand helfen wie ich das bewerkstellige?

Ich scheitere bereits an der Initialisierung der Dll.

Set MyVariable = CreateObject("DllName.Klasse")

An diesem Aufruf scheitere ich bereits mit der Fehlermeldung:

"Laufzeitfehler 429: Objekterstellung durch ActiveX-Komponente nicht möglich."


Vielen Dank für eure Mühen
Martin

EWeiss 5. Okt 2006 10:11

Re: Delphi Dll in VB6 nutzen
 
Zitat:

Zitat von Maa83
Hallo,

ich habe ich Delphi6 eine Dll erstellt. Dieses ist ein Automationsobjekt.
In der Dll steckt zusätzlich (bzw. als Hauptbestandteil) eine Formklasse (TForm). Diese Dll möchte ich nun in VB6 verwenden. D.h. wenn ich in VB auf einen Button drücke soll die Dll initialisiert werden. Danach soll über eine Methode die auch public ist die Formklasse aufgerufen und angezeigt werden. Kann mir irgendjemand helfen wie ich das bewerkstellige?

Ich scheitere bereits an der Initialisierung der Dll.

Set MyVariable = CreateObject("DllName.Klasse")

An diesem Aufruf scheitere ich bereits mit der Fehlermeldung:

"Laufzeitfehler 429: Objekterstellung durch ActiveX-Komponente nicht möglich."


Vielen Dank für eure Mühen
Martin

Sehr spärlich deine Frage nix an code ?
Dann könnte ich vielleicht helfen.

Garantiert kannst du keine Delphi DLL über CreateObject initialisieren.
Das kannst getrost vergessen.
Delphi DLL's können nicht als AktiveX angesprochen werden. Sind nicht kompatibel.

Gruß

EWeiss 5. Okt 2006 10:38

Re: Delphi Dll in VB6 nutzen
 
Na egal..

Hier mal das kleinste Beispiel was ich auf die schnelle zurecht geflickt habe.

Delphi
Delphi-Quellcode:
library DWithVB;


uses
  SysUtils,
  Classes,
  Dialogs;

{$R *.RES}

FUNCTION DllTest():Integer;StdCall;
var Hobby: string;
 begin
  Hobby := InputBox('Hallo VBler du befindest dich nun in Delphi','Was ist dein Hobby?','');
  If Length(Hobby) = 0 then
  Begin
    Result := 0;
    Exit;
    End
  Else
   Begin
    Result := 1;
    ShowMessage('Hallo dein Hobby ist ' + Hobby);
   End;
end;

  EXPORTS
  DllTest;
 
begin

end.

Visual Basik
Code:
Private Declare Function DllTest Lib "DWithVB.dll" () As Integer

Private Sub Command1_Click()

Dim TResult As Long
   
    TResult = DllTest
   
End Sub

Private Sub Command2_Click()
   
    Unload Form1
    End
   
End Sub

shmia 5. Okt 2006 13:14

Re: Delphi Dll in VB6 nutzen
 
Hast du die DLL auf dem Zielrechner mit RegSvr32.exe registriert??
Wenn der Zielrechner dein Entwicklungsrechner ist, dann reicht in der Delphi IDE:
Start -> ActiveX Server eintragen

EWeiss 5. Okt 2006 15:54

Re: Delphi Dll in VB6 nutzen
 
Zitat:

Zitat von shmia
Hast du die DLL auf dem Zielrechner mit RegSvr32.exe registriert??
Wenn der Zielrechner dein Entwicklungsrechner ist, dann reicht in der Delphi IDE:
Start -> ActiveX Server eintragen

Ich habe bisher noch keine Delphi.dll als ActiveX in VB einbinden können.
Mußt mir mal zeigen wie das geht ;)

gruß

Maa83 6. Okt 2006 07:18

Re: Delphi Dll in VB6 nutzen
 
erst mal Danke für die vielen Antworten :)

ich habs nun hin bekommen.

Ganz normal mit CreateObject... keine Ahnung wieso das nicht gleich geklappt hat.

Set MyDll = CreateObject("AVDllCom.StartKlasse")

und natürlich unter Projekt-Verweise mit eingebunden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 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