Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Fehler bei Import TLB-Datei (https://www.delphipraxis.net/169913-fehler-bei-import-tlb-datei.html)

moonwalk55 21. Aug 2012 09:36

Fehler bei Import TLB-Datei
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Zusammen,

ich habe ein Problem beim Import einer TLB-Datei (lppx2.tlb) von Teklynx Codesoft. Dabei handelt sich es um eine Software zum Erstellen von Etiketten.

Die Datei erscheint unter "Komponente" --> "Komponente importieren" --> "Typbibliothek importieren" als "Tk Labeling Activex 9.0" in der Auswahlliste.

Beim Fertigstellen erscheint immer folgende Fehlermeldung: "Fehler beim Laden der Typbibliothek/DLL. Beim Verweis auf einen benutzerdefinierten Typ ist ein Fehler aufgetreten. Dies kann Folge einer fehlenden oder nicht registrierten Typbibliothek sein."

Unter Details steht folgendes:

"[500600D0]{rtl120.bpl } ComObj.OleError (Line 1270, "ComObj.pas" + 1) + $11
[500600DF]{rtl120.bpl } ComObj.OleCheck (Line 1277, "ComObj.pas" + 0) + $7
[20DCCE0B]{tlib120.bpl } TypeLib.TTypeLibrary.GetRefTypeInfo (Line 8414, "TypeLib.pas" + 11) + $10
[500477AB]{rtl120.bpl } Classes.TList.Grow (Line 3388, "Classes.pas" + 7) + $4
[500475CA]{rtl120.bpl } Classes.TList.Add (Line 3300, "Classes.pas" + 7) + $8
[20DC7B1F]{tlib120.bpl } TypeLib.TTypeInfo.ProcessType (Line 5848, "TypeLib.pas" + 3) + $8
[20DC2022]{tlib120.bpl } TypeLib.TParameter.CreateFromElemDesc (Line 2544, "TypeLib.pas" + 3) + $9
[20DC4CF5]{tlib120.bpl } TypeLib.TFuncMember.CreateFromFuncDesc (Line 4316, "TypeLib.pas" + 87) + $1C
[20DCA8DD]{tlib120.bpl } TypeLib.TInterfaceInfo.ProcessTypeInfo (Line 7216, "TypeLib.pas" + 32) + $12
[20DCD184]{tlib120.bpl } TypeLib.TTypeLibrary.ProcessTypeInfos (Line 8482, "TypeLib.pas" + 44) + $F
[20DCC6AA]{tlib120.bpl } TypeLib.TTypeLibrary.CreateFromTypeLib (Line 8196, "TypeLib.pas" + 61) + $9
[20DCC156]{tlib120.bpl } TypeLib.TTypeLibrary.Create (Line 8090, "TypeLib.pas" + 21) + $14
[50C6F90E]{comcore120.bpl} OCXGen.CreateUnit (Line 76, "OcxGen.pas" + 4) + $D
[5000CD59]{rtl120.bpl } System.TInterfacedObject._AddRef (Line 21759, "System.pas" + 1) + $3
[50F304C4]{delphicompro120.bpl} DelphiTraits.TDelphiImportComponentTrait.ImportTLB (Line 94, "DelphiTraits.pas" + 4) + $18
[50C7C727]{comcore120.bpl} ImportComponentWizard.TImportComponentWizard.Finis h (Line 441, "ImportComponentWizard.pas" + 93) + $22
[20787D29]{coreide120.bpl} Wizard.TWizard.Show (Line 713, "Wizard.pas" + 30) + $8
[50C80D8B]{comcore120.bpl} ComStdReg.TComMenus.DoImportComponentExecute (Line 123, "ComStdReg.pas" + 4) + $5
[500584EB]{rtl120.bpl } Classes.TBasicAction.Execute (Line 12201, "Classes.pas" + 3) + $7
[501DCF79]{vcl120.bpl } ActnList.TContainedAction.Execute (Line 448, "ActnList.pas" + 8) + $2C
[501DDD5C]{vcl120.bpl } ActnList.TCustomAction.Execute (Line 1094, "ActnList.pas" + 7) + $8
[500583AF]{rtl120.bpl } Classes.TBasicActionLink.Execute (Line 12130, "Classes.pas" + 2) + $7
[210E9635]{vclactnband120.bpl} ActnMenus.TCustomActionMenuBar.ExecAction (Line 1064, "ActnMenus.pas" + 6) + $D
[210EAAEB]{vclactnband120.bpl} ActnMenus.TCustomActionMenuBar.TrackMenu (Line 1746, "ActnMenus.pas" + 15) + $15
[210EE044]{vclactnband120.bpl} ActnMenus.TCustomActionMainMenuBar.TrackMenu (Line 3472, "ActnMenus.pas" + 3) + $3
[210E91FD]{vclactnband120.bpl} ActnMenus.TCustomActionMenuBar.CMItemClicked (Line 943, "ActnMenus.pas" + 3) + $4
[501C565A]{vcl120.bpl } Controls.TControl.WndProc (Line 6642, "Controls.pas" + 91) + $6
[501C5280]{vcl120.bpl } Controls.TControl.Perform (Line 6420, "Controls.pas" + 10) + $8
[501C94FA]{vcl120.bpl } Controls.GetControlAtPos (Line 9088, "Controls.pas" + 4) + $76
[501C9677]{vcl120.bpl } Controls.TWinControl.IsControlMouseMsg (Line 9135, "Controls.pas" + 15) + $15
[501C9BD9]{vcl120.bpl } Controls.TWinControl.WndProc (Line 9297, "Controls.pas" + 97) + $1D
[501C9CE7]{vcl120.bpl } Controls.TWinControl.WndProc (Line 9336, "Controls.pas" + 136) + $6
[210EABDA]{vclactnband120.bpl} ActnMenus.TCustomActionMenuBar.WndProc (Line 1781, "ActnMenus.pas" + 25) + $4
[501C9400]{vcl120.bpl } Controls.TWinControl.MainWndProc (Line 9065, "Controls.pas" + 3) + $6
[500591DC]{rtl120.bpl } Classes.StdWndProc (Line 12703, "Classes.pas" + 8) + $0
[501C03E2]{vcl120.bpl } Controls.FindControl (Line 2999, "Controls.pas" + 6) + $9
[501EEABD]{vcl120.bpl } Forms.TApplication.ProcessMessage (Line 9660, "Forms.pas" + 30) + $1
[501EEB02]{vcl120.bpl } Forms.TApplication.HandleMessage (Line 9690, "Forms.pas" + 1) + $4
[501EEE2D]{vcl120.bpl } Forms.TApplication.Run (Line 9827, "Forms.pas" + 26) + $3
[004259E6]{bds.exe } bds.bds (Line 198, "" + 8) + $FFFB"


Die komplette Fehlermeldung als Bild hängt an.

Laut Hersteller Teklynx funktioniert die Bibliothek unter Visual Studio und VBS einwandfrei.

Das Problem scheint auch nicht direkt an der Delphi Version zu hängen, denn mit Delphi 2009 und Delphi XE2 bekomme ich die gleichen Fehlermeldungen.

Zum Programm gehört noch eine weitere Datei, "Tk Labeling Basic" (lppxLT.tlb). Diese lässt sich hingegen ohne Probleme importieren.

Hat Jemand von Euch eine Idee woran es liegen kann? Kann es sein, dass die TLB-Datei eine .NET ActiveX Datei ist, die man per "Interop" anbinden muss?

Die beiden Dateien hänge ich mal an.

Danke im Voraus.

taveuni 21. Aug 2012 12:36

AW: Fehler bei Import TLB-Datei
 
Zitat:

Zitat von moonwalk55 (Beitrag 1179000)
Folge einer fehlenden oder nicht registrierten Typbibliothek sein

Hast Du das Ocx/ActiveX registriert/installiert?

Edit:
Muss ja wohl da in der Liste.
Hast Du mal versucht anstelle Typbibliothek importieren - .NET-Assembly importieren?
Allerdings müsstest Du dann natürlich auch eine entsprechende DLL haben.

moonwalk55 22. Aug 2012 09:35

AW: Fehler bei Import TLB-Datei
 
Die TLB-Datei wird ja bei der Installation von Codesoft registriert.

Ich habe auch die TLB-Datei nochmals per Hand mit der "regtlibv12.exe" aus dem .NET-Framework registriert (C:\Windows\Microsoft.NET\Framework\v4.0.30319\reg tlibv12.exe), siehe Anleitung hier:

http://digital.ni.com/public.nsf/all...2566F700615B7A

Das hat an der Situation auch nichts geändert.

Den Versuch eine .NET-Assembly zu importieren habe ich auch unternommen, aber da weiss ich nicht, welche der DLL-Dateien auszuwählen ist.

Lt. Teklynx muss im Projekt einfach die TLB-Datei referenziert werden, aber in Delphi kann ich die ja nicht einfach dem Projekt anfügen.

moonwalk55 22. Aug 2012 12:52

AW: Fehler bei Import TLB-Datei
 
Zwischenzeitlich habe ich noch "TRegSvr.exe" von Delphi probiert. Aber das teilt mir auch nur mit, dass die Datei schon registriert ist.

Dann habe ich den manuellen Import probiert, den Chris Benson in seinem Blog beschreibt, Aufruf der "TLibImp.exe" aus dem Bin-Verzeichnis von Delphi.

"tlibimp.exe -P+ -Ha- -Hr- -Hs- -R- -DG:\1 "G:\Program Files (x86)\Teklynx\CODESOFT 10\Lppx2.tlb"
Embarcadero TLIBIMP Version 12.16581
Copyright(c) 1995-2010 Embarcadero Technologies, Inc.

G:\Program Files (x86)\Teklynx\CODESOFT 10\Lppx2.tlb wird geöffnet
Fehler beim Laden der Typbibliothek/DLL.

Beim Verweis auf einen benutzerdefinierten Typ ist ein Fehler aufgetreten. Dies
kann Folge einer fehlenden oder nicht registrierten Typbibliothek sein"

Damit erhalte ich aber auch nur einen Fehler.

Wie kann ich denn feststellen, welche Dll's von der TLB-Datei referenziert werden, um die Registrierung der Dll's zu prüfen?

taveuni 22. Aug 2012 12:57

AW: Fehler bei Import TLB-Datei
 
Gibt es denn ein Testprogramm welches dieses ActiveX benutzt?
Falls ja dieses starten und mit dem ProcessExplorer die genutzten DLL's anzeigen lassen.

shmia 22. Aug 2012 13:27

AW: Fehler bei Import TLB-Datei
 
Zitat:

Zitat von moonwalk55 (Beitrag 1179349)
Beim Verweis auf einen benutzerdefinierten Typ ist ein Fehler aufgetreten. Dies kann Folge einer fehlenden oder nicht registrierten Typbibliothek sein"

Punkt 1.
Eine Typbibliothek kann ja andere Typbibliotheken importieren und dessen Datentypen verwenden.
Sollte beim Einlesen einer TLB diese importierten TLBs nicht gefunden werden, dann gibt's natürlich ein Problem.

Du könntest ja mal die TLB hier hochladen, dann kann ich Dir (mit Hilfe von OLEView) sagen, welche anderen TLBs importiert werden.

Punkt 2.
In TLBs gibt es benutzerdefinierte Datentypen (User Defined Type).
UDTs sind erst später hinzugekommen und werden von Delphi (zumindest in älteren Versionen) IMHO nicht unterstützt.
Allerdings scheint deine Delphi-Version zumindest zu wissen, dass hier ein UDT vorliegt.

moonwalk55 22. Aug 2012 14:03

AW: Fehler bei Import TLB-Datei
 
Ein Testprogramm für den Aufruf gibt es nicht, da Teklynx nach eigenen Aussagen nicht damit arbeitet. Selber konnte ich noch nichts schreiben, da ich ja die TLB nicht importieren kann.

Das Programm Codesoft selbst habe ich mal mit dem ProcessExplorer untersucht. Hier wird aber keine DLL gestartet, sondern nur ein anderer Prozess ("Lppa.exe"), der aber auch keine Dll's lädt.

Die Original-TLB liegt meinem ersten Posting als Zip-Datei bei.

shmia 22. Aug 2012 16:16

AW: Fehler bei Import TLB-Datei
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also ich kann die Lppx2.tlb mit meinen Delphi5 auch nicht öffnen; gleicher Fehler wie bei dir.
LppxLT.tlb lässt sich öffnen.

Im Anhang habe ich die TLB im für Menschen lesbaren IDL-Format angehängt.
Mit diesen Informationen kannst du notfalls auch ohne die TLB zu importieren mit der ActiveX-DLL/Anwendung arbeiten.
Natürlich hast du dann keine Codevervollständigung in der IDE. :cry:

moonwalk55 22. Aug 2012 17:07

AW: Fehler bei Import TLB-Datei
 
Danke erst einmal für die Datei und die Mühe.

Wie binde ich so eine IDL-Datei ein? Das habe ich noch nie gemacht.

Muss ich mir dann selbst eine Wrapper-Unit bauen, die sonst Delphi für mich macht?

Hast Du evtl. ein kleines Beispiel für mich?

moonwalk55 22. Aug 2012 18:55

AW: Fehler bei Import TLB-Datei
 
Liste der Anhänge anzeigen (Anzahl: 1)
Der Teklynx Support hat sich noch einmal gemeldet und mir den Hinweis gegeben, dass die "Lppx2.tlb" die Datei "TkxRFtag.tlb" referenziert. Wenn ich die zuerst importiere, dann kann ich auch die zweite Datei erfolgreich importieren. :)

Ich hänge Sie auch mal an.

Jetzt muss ich noch probieren, ob der Zugriff auch funktioniert.

beppe1964 9. Mär 2015 21:33

AW: Fehler bei Import TLB-Datei
 
Entschuldigung, wenn Störung, ich habe das gleiche Problem mit der Bibliothek lppx2 und delphi XE7, können Sie mich um die Einzelheiten des Verfahrens zeigen

Vielen Danke

Beppe

ps: entschuldigen Sie fur mein deutsch, aber ich Italienisch bin.

haentschman 10. Mär 2015 10:37

AW: Fehler bei Import TLB-Datei
 
Hi beppe...

Welcome here. :dp:

Look at #10. This solves your problem?

beppe1964 10. Mär 2015 11:21

AW: Fehler bei Import TLB-Datei
 
hi haentschman,

i imported first tkxrftag.tlb and go ok ,

then when i import lppx2.tlb still this error :

An error occured while referencing a user defined type. this may caused by a missing or unregistered type library

i am sure i miss something , or may be there is a error in codesoft 2014

thanks

Beppe

beppe1964 14. Mär 2015 11:40

AW: Fehler bei Import TLB-Datei
 
Hi all,

solved using old delphi 7,

xe7 do not work well with search directory in the wizard,

thank to all for reply

Beppe

moonwalk55 22. Mär 2015 14:29

AW: Fehler bei Import TLB-Datei
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hello beppe1964,

yes I think it is a problem with import of the LabelManger TLB.

In the XE2 version of Delphi I had luck and the imort was succefull.

I give you my Component project, that a currently use with XE6. You can change it and install it.

Give me a short answer, if it's work.

I tested it with Codesoft 9 and 2012.

With best regards,

moonwalk55

Bernhard Geyer 22. Mär 2015 14:37

AW: Fehler bei Import TLB-Datei
 
In newer Delphi-Version the *.tlb isn't the relevant file any more. You now have a *.ridl-File that contains the relevant information (http://docwiki.embarcadero.com/RADSt...7/en/RIDL_File)

bytecook 5. Jan 2016 13:15

AW: Fehler bei Import TLB-Datei
 
Falls jemand Codesoft 2014 in Verbindung mit der ActiveX Basic Library verwenden möchte - (betrifft CS Pro respektive Enterprise), dann muss man die .TLB wie folgt hinzufügen:

Step 01: Menuleiste :: Komponente -> Komponente importieren -> Typbibliothek importieren aufrufen

Step 02: dort TK Labeling Basic auswählen und auf weiter clicken

Step 03: Auf der Folgeseite Komponenten-Wrapper generieren anclicken, Palettenseite ggf auf Codesoft abändern und auf weuter clicken

Step 04: Am besten Opt 3 wählen <in neues Package installieren> und auf weiter clicken

Step 05: Name und Beschreibung des Package angeben, danach auf fertigstellen clicken und das Paket installieren

Habe bereits die meisten Befehle überprüft, funktioniert, wie es soll...


Hoffe das hilft weiter :)

Gruß,

Peter

Johannes G. 23. Jul 2021 10:37

AW: Fehler bei Import TLB-Datei
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

ich habe ein ähnliches Problem beim Laden der TLB sldworks.tlb (Aufruf von Solid Works über Delphi-Programm).
Bild der Fehlermeldung im Anhang.
Unter "Komponente registrieren" werden eine Menge registrierte Dateien von Solid Works angezeigt, nur eben die gewünschte sldworks.tlb nicht.
Mein Versuch die sldworks.tlb mit RegAsm zu registrieren ist auch fehlgeschlagen mit der Meldung "konnte nicht geladen werden, da es sich nicht um eine gültige .NET-Assembly handelt."

Vielleicht kann mir jemand weiterhelfen und hat sogar Erfahrung mit der Fernsteuerung von SolidWorks?
Zur Info: ich verwende Delphi 10.2 Tokyo und SolidWorks 2021.

Vielen Dank im Voraus,
lg Johannes

mmw 23. Jul 2021 17:45

AW: Fehler bei Import TLB-Datei
 
Hallo,

laut Online- Hilfe liegen die Datei(en) hier -

disk:\install_dir\sldworks.tlb

disk:\install_dir\swconst.tlb

EDIT: dürfte so nicht funktionieren.

In der Delphi -IDE Such bzw. Bibliothekspfad entstprechend setzen.

und mit 'uses' einbinden.

habe im Moment kein Solidworks installiert.

Hier noch ein einfaches Bespiel in VBA

http://solidworks.cad.de/apitut_kap04.htm#Einleitung
Gruß

Johannes G. 9. Aug 2021 08:34

AW: Fehler bei Import TLB-Datei
 
Zitat:

Zitat von mmw (Beitrag 1492722)
Hallo,

laut Online- Hilfe liegen die Datei(en) hier -

disk:\install_dir\sldworks.tlb

disk:\install_dir\swconst.tlb

EDIT: dürfte so nicht funktionieren.

In der Delphi -IDE Such bzw. Bibliothekspfad entstprechend setzen.

und mit 'uses' einbinden.

habe im Moment kein Solidworks installiert.

Hier noch ein einfaches Bespiel in VBA

http://solidworks.cad.de/apitut_kap04.htm#Einleitung
Gruß


Hallo mmw,

Danke für das Beispiel.
Der Ordner in dem die sldworks.tlb liegt ist mir bekannt. Ich muss doch zuerst die Typenbibliothek importieren, bevor ich diese mittels 'uses' einbinden bzw. verwenden kann, oder liege ich hier falsch??
Jedenfalls hat es mir leider nichts gebracht den Ordner zum Such- bzw. Bibliothekspfad hinzuzufügen...

Wie oben schon beschrieben, bekomme ich eben eine Fehlermeldung beim Laden der Typenbibliothek, bzw. wird diese tlb auch nicht bei den registrierten tlb´s angezeigt...

lg Johannes

shebang 9. Aug 2021 12:13

AW: Fehler bei Import TLB-Datei
 
Zitat:

Zitat von Johannes G. (Beitrag 1493428)
Ich muss doch zuerst die Typenbibliothek importieren, bevor ich diese mittels 'uses' einbinden bzw. verwenden kann, oder liege ich hier falsch??

Komponente bzw. Typbibliothek importieren erzeugt doch eine TLB-Datei. Wenn du die TLB-Datei schon hast, sollte es ausreichen diese zum Projekt hinzuzufügen.

mmw 9. Aug 2021 12:29

AW: Fehler bei Import TLB-Datei
 
Hallo,

wenn alles richtig Installiert ist. müsste es in registrierte Typbiblotheken angezeigt werden. Über Typbibliothek importen wird dann die *._tlb erzeugt.

Vielleicht hier noch eine Hilfe

https://help.solidworks.com/2019/eng...d_Overview.htm

http://docwiki.embarcadero.com/RADSt...ypbibliotheken

Gruß

Johannes G. 20. Aug 2021 07:07

AW: Fehler bei Import TLB-Datei
 
Hallo zusammen,

Vielen Dank für euere Antworten. Entschuldigt die verspätete Rückmeldung, ich hatte Urlaub und kann mich sonst auch nur nebensächlich mit diesem Thema auseinandersetzen...

also unter
'uses' sldworks.tlb einbinden funktioniert nicht (wird nicht erkannt). Suchpfade sind entsprechend gesetzt...


ich konnte die Datei sldworks.tlb mit Delphi öffnen und irgendwie ist mir es gelungen die Datei unter sldworks_tlb.pas abzuspeichern, was sonst ja über "Komponente importieren..." gemacht wird. Das war allerdings vor meinem Urlaub und ich weiß nicht mehr wie ich das geschafft habe :roll:
Jedenfalls kann ich die Datei sldworks_tlb.pas unter 'uses' einbinden und verwenden :thumb:

Gruß
Johannes


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