Entwickler-Ecke
Sonstiges (Delphi) - Übersetzung von VB nach Delphi
Fortunator_1 - Fr 20.07.07 11:08
Titel: Übersetzung von VB nach Delphi
Hi Leute, ich hab ein kleines Problem.
wir setzen viele Produkte einer großen deutschen Automatisierungsfirma ein, welche
auch Programmbeispiele zur Ansteuerung ihrer Produkte mitliefert, aber leider nur in VB und V-C++.
Wir Programmieren aber in Delphi, also muss ich diese Programme, oder teile davon nach Delphi übersetzen.
An folgenden VB-Code beiße ich mir z.Zeit die Zähne aus . . .
Quelltext
1: 2: 3:
| Set objFileNode = GetObject("MC://domain/HD/mpf.dir/" Set objIMCFile = objFileNode Call objIMCFile.Create ("*.mpf", txtMPF & ".mpf", MC_CREATE_NORMAL,sourceFile) |
Daraus habe ich folgenden Delphi - Code erzeugt :
Quelltext
1: 2: 3:
| objFileNode := IMCObjectDefault(GetObject('MC://domain/HD/mpf.dir/')); objImcFile := IMCFile(objFileNode); objImcFile.Create('*.mpf',txtMPF + '.mpf',MC_CREATE_NORMAL,sourceFile); |
Meiner Meinung nach ist meine Fehler die Übersetzung der Virtual Basic Funktion "GetObject".
Ich benutze dafür in Delphi folgende Funktion :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| function GetObject(Name : String): IDispatch; var Moniker : IMoniker; Eaten : Integer; BindContext : IBindCtx; Dispatch : IDispatch; begin OleCheck(CreateBindCtx(0, BindContext)); OleCheck(MkParseDisplayName(BindContext, PWideChar(WideString(Name)), Eaten, Moniker)); OleCheck(Moniker.BindToObject(BindContext, NIL, IDispatch, Dispatch)); Result := Dispatch; end; |
Beim Ausführen bekomme ich in der 2. Zeile der Funktion "GetObject" nach einiger Zeit einen "EOleSysError".
Ist vielleicht die Delphi - Entsprechung der VB-Funktion "GetObject" falsch ? Mit welcher Delphi Funktion kann man
das sonst übersetzen ?
Vielen Dank bereits im Vorraus für Eure Hilfe. . .
Bernd
Moderiert von
Christian S.: Code- und Delphi-Tags hinzugefügt
BenBE - Sa 21.07.07 14:37
Hast Du schon einmal die Nutzung der Delphi-Function CreateOleObject versucht?
Bin bei OLE nicht eingearbeitet, aber unter Delphi ist mir das mit CreateOleObject \ GetOLEObject geläufiger.
Fortunator_1 - Mo 23.07.07 10:37
Hi BenBe,
CreateOleObject habe ich schon probiert :
objFileNode := IMCObjectDefault(CreateOleObject( 'MC://domain/HD/mpf.dir/'));
Allerdings wird hier diese Zeile gar nicht ausgeführt, es geschieht sogleich ein Fehler EOleSysError -
Ungültige Klassenzeichenfolge.
Mit GetObject wird der Datenhaltungsserver (dhserver.exe) gestartet, wie in der Dokumentation beschrieben,
ein EOleSysError tritt nach kurzer Zeit (20 sec) trotzdem auf.
ene - Mo 23.07.07 10:56
Hi,
mit GetObject wird eine Instanz verwendet und nicht erstellt. Dafür braucht man CreateObject und eigentlich nimmt man immer ein GetObject OnError CreateObject Konstrukt, damit die Anwendung startet. Ist die Anwendung denn gestartet?
Fortunator_1 - Fr 03.08.07 16:17
Hi,
ich will aber doch ein Object auf 'MC://domain/HD/mpf.dir/', also auf einen String erzeugen.
Das GetObject von Delphi verlangt aber einen Parameter vom Typ HGDIOBJ und hat außerdem etwas mit
Grafikobjekten zu tun.
Gruß Bernd
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!