Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Typlib import (https://www.delphipraxis.net/88741-typlib-import.html)

steppo 20. Mär 2007 12:13


Typlib import
 
Hallo zusammen,

gehe ich recht in der Annahme, dass hier beim Import etwas schief gelaufen ist?

OLE/COM Viewer:

[
odl,
uuid(A80DEA53-B6BA-11D3-B3AC-00104B066E1A),
helpstring("IWMFileIO Interface"),
dual,
oleautomation
]
interface IWMFileIO : IDispatch {
[id(0x00000001), helpstring("method ExportOriginal")]
HRESULT ExportOriginal([in] VARIANT_BOOL fOverwrite);
[id(0x00000002), helpstring("method ImportOriginal")]
HRESULT ImportOriginal([in] VARIANT_BOOL fOverwrite);
[id(0x00000003), propget, helpstring("property aWMStream")]
HRESULT aWMStream([out, retval] IWMStream** ppIWMStream);
[id(0x00000003), propput, helpstring("property aWMStream")]
HRESULT aWMStream([in] IWMStream* ppIWMStream);
[id(0x00000003), propputref, helpstring("property aWMStream")]
HRESULT aWMStream([in] IWMStream* ppIWMStream);
[id(0x00000004), propget, helpstring("property bstrOriginalFileName")]
HRESULT bstrOriginalFileName([out, retval] BSTR* pVal);
[id(0x00000004), propput, helpstring("property bstrOriginalFileName")]
HRESULT bstrOriginalFileName([in] BSTR pVal);
[id(0x00000005), propget, helpstring("property aChunkSize")]
HRESULT aChunkSize([out, retval] long* pVal);
[id(0x00000005), propput, helpstring("property aChunkSize")]
HRESULT aChunkSize([in] long pVal);
[id(0x00000006), propget, hidden, helpstring("property aWMStreamEx")]
HRESULT aWMStreamEx([out, retval] IWMStreamEx** ppIWMStreamEx);
[id(0x00000006), propput, hidden, helpstring("property aWMStreamEx")]
HRESULT aWMStreamEx([in] IWMStreamEx* ppIWMStreamEx);
[id(0x00000006), propputref, hidden, helpstring("property aWMStreamEx")]
HRESULT aWMStreamEx([in] IWMStreamEx* ppIWMStreamEx);
};

Angelegte Unit in Delphi:

Delphi-Quellcode:
// *********************************************************************// 
// Schnittstelle: IWMFileIO
// Flags:    (4416) Dual OleAutomation Dispatchable
// GUID:     {A80DEA53-B6BA-11D3-B3AC-00104B066E1A} 
// *********************************************************************// 
  IWMFileIO = interface(IDispatch)
    ['{A80DEA53-B6BA-11D3-B3AC-00104B066E1A}']
    procedure ExportOriginal(fOverwrite: WordBool); safecall;
    procedure ImportOriginal(fOverwrite: WordBool); safecall;
    function Get_aWMStream: IWMFileStream; safecall;
    procedure Set_aWMStream(const ppIWMStream: IWMFileStream); safecall;
    procedure _Set_aWMStream(const ppIWMStream: IWMFileStream); safecall;
    function Get_bstrOriginalFileName: WideString; safecall;
    procedure Set_bstrOriginalFileName(const pVal: WideString); safecall;
    function Get_aChunkSize: Integer; safecall;
    procedure Set_aChunkSize(pVal: Integer); safecall;
    function Get_aWMStreamEx: IWMStreamEx; safecall;
    procedure Set_aWMStreamEx(const ppIWMStreamEx: IWMStreamEx); safecall;
    procedure _Set_aWMStreamEx(const ppIWMStreamEx: IWMStreamEx); safecall;
    property aWMStream: IWMFileStream read Get_aWMStream write Set_aWMStream;
    property bstrOriginalFileName: WideString read Get_bstrOriginalFileName write Set_bstrOriginalFileName;
    property aChunkSize: Integer read Get_aChunkSize write Set_aChunkSize;
    property aWMStreamEx: IWMStreamEx read Get_aWMStreamEx write Set_aWMStreamEx;
  end;
Wie kann ich dieses Problem beheben?
Gruß Steppo

shmia 20. Mär 2007 12:31

Re: Typlib import
 
Zitat:

Zitat von steppo
gehe ich recht in der Annahme, dass hier beim Import etwas schief gelaufen ist?
Wie kann ich dieses Problem beheben?

Welches Problem ?? Bitte konkret angeben, was du erwartest und was du stattdessen bekommen hast.
Für mich sieht die Übersetzung absolut korrekt aus. (Wobei ein Mensch nicht alle Methoden und Properties in kurzer Zeit kontrollieren kann; das geht nur Stichprobenartig)

steppo 20. Mär 2007 12:36

Re: Typlib import
 
Die Eigenschaft aWMStream sollte eigentlich vom Typ IWMStream und nicht von Typ IWMFileStream sein.

shmia 20. Mär 2007 12:50

Re: Typlib import
 
Zitat:

Zitat von steppo
Die Eigenschaft aWMStream sollte eigentlich vom Typ IWMStream und nicht von Typ IWMFileStream sein.

Ok, das sieht wirklich nicht richtig aus.
Es kommt nun auch auf deine Delphi Version an.
Alles unterhalb von D 5.02 muss man in Bezug auf den TLB Import als fehlerhaft betrachten.
Du könntest die falsch importierte xxx_TLB.pas auch von Hand korrigieren. Dabei sollte man alle korrigierten Zeilen zusätzlich in einer separaten Textdatei aufbewaren, da die Unit ja jederzeit von Delphi überschrieben werden könnte.

steppo 20. Mär 2007 12:54

Re: Typlib import
 
Entschuldige, habe vergessen die Version der Entwicklungsumgebung anzugeben. Ich arbeite mit Delphi 6 Enterprise. Auch ein löschen der TLB und ein erneuter Import brachten das gleiche Ergebnis.

Wie gehe ich nun am besten Vor?

Gruß Steppo

shmia 20. Mär 2007 13:05

Re: Typlib import
 
Zitat:

Zitat von steppo
Entschuldige, habe vergessen die Version der Entwicklungsumgebung anzugeben. Ich arbeite mit Delphi 6 Enterprise.

Das kannst du übbirgens auch in deinem DP Profil hinterlegen.
Zitat:

Zitat von steppo
Wie gehe ich nun am besten Vor?

Zwei Möglichkeiten:
1.) IWMFileStream durch IWMStream in der Unit xxx_TLB.PAS von Hand ersetzen
2.) property aWMStream nicht benützen. Stattdessen nur property aWMStreamEx benützen. So wird das Problem umgangen.

steppo 20. Mär 2007 13:09

Re: Typlib import
 
Herzlichen Dank shmia

Gruß Steppo


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz