AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VB60.dll => Einlesen in Delphi

Ein Thema von uka · begonnen am 13. Jan 2003 · letzter Beitrag vom 13. Jan 2003
Antwort Antwort
Seite 1 von 2  1 2      
uka

Registriert seit: 13. Jan 2003
7 Beiträge
 
Delphi 3 Standard
 
#1

VB60.dll => Einlesen in Delphi

  Alt 13. Jan 2003, 12:13
Hallo,
brauch mal dringend Eure Hilfe.
Ein Hersteller, dessen Namen ich nicht gerade nennen möchte , liefert uns eine ActiveX-DLL die er in VB6.0 geschrieben hat. Wir sind mit unserem Produckt dringend auf diese Daten angewiesen und möchten mit unserer Delphi3.0 Applikation drauf zu greifen.

Bislang habe ich gehofft über folgenden Code:
==================================================
function ErmittleGUX:integer;
safecall external 'D:\gox57\GUX_VB.dll' name 'ErmittleGUX()';

procedure TForm1.Button1Click(Sender: TObject);
var
t:integer;
begin
t:=ErmittleGUX;
edit1.text:= inttostr(t)

end;
============================================
Statt safecall habe ich auch schon stdcall versucht, jedoch ohne Erfolg.
Statt dessen kommt immmer Prozedureeinsprung wurde nicht gefunden zurück?
=========================================
VB-seitig soll die DLL wohl so aussehen:

Public Function ErmittleGUX() As Integer
ErmittleGUX=[Zahlenwert]
end Function
Diese Funktion ist Bestandteil einer Klasse cls_TX.

Wer kann mir hier helfen, das wir irgendwie diese Funktion aufrufen können und die Wert für unser Delphi Programm bekommen.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 13. Jan 2003, 12:22
Moin uka,

erst einmal herzlich willkommen.

Probier's doch mal so:

function ErmittleGUX:integer; stdcall; external 'D:\gox57\GUX_VB.dllname 'ErmittleGUX'; als Name muss immer der Name angegeben werden, unter dem die Funktion exportiert wird (falls sie unter einem Namen exportiert wird).
Dabei muss die Gross-/Kleinschreibung exakt eingehalten werden.
Die Klammern sagen ja nur aus, dass die Funktion keine Parameter erfordert, und haben im Funktionsnamen nichts zu suchen.

Ist der eigene Funktionsname genauso geschrieben, wie der exportierte Name, kann man auf die Angabe von name verzichten.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
uka

Registriert seit: 13. Jan 2003
7 Beiträge
 
Delphi 3 Standard
 
#3
  Alt 13. Jan 2003, 12:44
Hallo Chris,
danke erstmal für die schnelle Antwort. Habs auch gleich versucht mit allen Varianten.Aber es bleibt erfolglos. Das liegt bestimmt daran, das VB keine so richtigen DLL's erstellt. Jedenfalls findet Delphi die einsprungmarke nicht. Registiert ist die DLL zwar und unter Word(VBA) kann man damit auch arbeiten, ab Delphi nicht.
Wir haben vom Hersteller eine Testdll bekommen, wenn du willst kannst sie bekommen.
Gruß Udo

clsT5.Gibwert =>Rückgabewert Integer
Angehängte Dateien
Dateityp: dll test5.dll (20,0 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4
  Alt 13. Jan 2003, 13:01
Welche Funktion soll die Test5.dll exportieren?
Ich sehe hier im Dependency Walker nur:
- DllCanUnloadNow
- DllGetClassObject
- DllRegisterServer
- DllUnregisterServer
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 13. Jan 2003, 13:07
Moin Udo,

ich hab' mir das alles nochmal durchgelesen.

Wenn ich mich nicht sehr irre handelt es sich ja nicht um eine Funktion, sondern um eine Methode.

Soweit ich weiss können Klassen aber in Delphi nicht importiert werden.

[EDIT]
Wenn die DLL über Register/UnregisterServer verfügt, dann kann könnte es ja durchaus sein, dass sie COM Objekte zur Verfügung stellt.
Registrieren der DLL mit Regsvr32 <DLLNAME>, deregistrieren mit Regsvr32 /u <DLLNAME>.
Jetzt könnte es möglich sein, über Komponente\ActviX die Typelibrary als Unit zu importieren (und somit zu nutzen)
[/EDIT]
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
uka

Registriert seit: 13. Jan 2003
7 Beiträge
 
Delphi 3 Standard
 
#6
  Alt 13. Jan 2003, 13:56
Hallo Chris , hallo Luckie ,
erstmal danke für eure Hilfe.
Ich habe erstmal die erstellte DLL registriert. => Das war erfolgreich.
Beim Einlesen über Komponeten/ActiveX fand ich die DLL nicht. Ich glaub da kann man nur auf ocx zugreifen und das ist die dll ja nicht. Richtig ist, das die DLL eine Klasse(clsT5) hat mit der einen Methode "Gibwert". Allerdings das Zugreifen bleibt das Problem.

[Luckie]
Was ist das für ein Programm, Dependency Walker ?
Ich kenne das nicht. Kann man damit DLL's auslesen? Vielleicht gibt es damit eine Lösung. DLLGETClassObject klingt zwar sehr nach MS, könnte mit aber vielleicht helfen. Ein Programm, mit dem man die DLL-Schnittstellen auslesen kann und die Deklarationen vorschlägt wäre optimal.

Langsam glaub ich, das es nicht möglich ist, von Delphi 3 auf VB6 zuzugreifen.

Danke und Gruß Udo
  Mit Zitat antworten Zitat
Udontknow

Registriert seit: 17. Jun 2002
223 Beiträge
 
#7
  Alt 13. Jan 2003, 13:58
Zitat:
Wenn die DLL über Register/UnregisterServer verfügt, dann kann könnte es ja durchaus sein, dass sie COM Objekte zur Verfügung stellt.
Das ist anzunehmen, wenn es sich um eine Active-X-DLL (siehe erstes Posting) handelt...

Dementsprechend kann man dann nach der Registrierung per regsvr32 über "Komponente\ActiveX importieren" die Interfaces bzw. Klassen importieren und benutzen.

Cu,
Udontknow
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#8
  Alt 13. Jan 2003, 14:06
Zitat von uka:
Beim Einlesen über Komponeten/ActiveX fand ich die DLL nicht. Ich glaub da kann man nur auf ocx zugreifen und das ist die dll ja nicht.
OCX Dateien sind auch nur DLLs mit einer anderen Endung. Wenn Du Dein ActiveX nicht in der Liste findest, einfach mal auf den Browse/Durchsuchen Button unterhalb der Liste der installierten ActiveX klicken, Deine registrierte DLL auswählen und anschliessend sollte der Import auch funktionieren. So mache ich das mit anderen Dateitypen (zb. CA4), welche auf ActiveX Basis arbeiten.
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
uka

Registriert seit: 13. Jan 2003
7 Beiträge
 
Delphi 3 Standard
 
#9
  Alt 13. Jan 2003, 14:45
Hallo Sakura,
danke für den Tip, ich hatte schon versucht über den Menüpunkt (Hinzufügen) die DLL in die Liste zu bekommen. Ich weiß auch, dass man nicht nur ocx, sondern auch dll registrieren kann. Fakt ist, diese geht halt nicht, warum weiß ich nicht? Du hast dir ja mal die DLL herunterladen und versuchen sie unter einer anderen Delphiversion zu registrieren, dann habe ich zumindest eine Aussage, dass es nur an der Version liegt.
Gruß Udo
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#10
  Alt 13. Jan 2003, 14:57
Vielleicht hilft es Dir ja, anbei ist der Source des Imports.
Angehängte Dateien
Dateityp: pas test5_TLB.pas (5,5 KB, 8x aufgerufen)
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:42 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