Seite 2 von 2

Verfasst: 07.09.2008 20:15
von scholly
ts-soft hat geschrieben:Auch eine OCX ist eine DLL, genauso wie eine DRV usw., eine DLL muß nicht
mit der Extension DLL enden um eine zu sein :wink:
Wieder was gelernt....
ts-soft hat geschrieben: Die DLL hat ja anscheinend ein COM und ein C Interface, die Anwendung des
C-Interfaces, also als normalle DLL, sollte eigentlich einfacher sein, wenn Du
mit COM und Interfaces nichts gemacht hast.
Nu bin ich aber platt...
Als ich 2005 meine Probleme mit dieser DLL vortrug, haben Du und hallodri^^^^^^edel in Richtung ActiveX, COM und Interfaces und "geht nich normal" geantwortet :o

@Little John:
gelesen hab ich ja schon, aber verstanden so gut wie nix :(

@marco2006:
beides :D
Zum einen möchte ich Info-Tags aus AVIs in meine VideoVerwaltung übernehmen können.
Das klappt mit der MediaInfo.DLL schon ganz gut.
Zum anderen möchte ich aber auch anbieten, INFO-Tags zu ändern oder ergänzen.
Das dauert bei der MediaInfo aber noch unbestimmte Zeit und mit abcAVI klappt das.
Hab ich mir also angesichts der COMate-Threads gedacht:
Neues Spiel... neues Glück :lol:

@Kiffi:
Und wie ich warten kann... ... ...
:doh:
Hach, lang genug gewartet :lol: :lol:
Ma gucken, was ich davon verstehe und was hinter dem Link steckt...

:allright: schonmal

Verfasst: 07.09.2008 22:20
von scholly
nach

Code: Alles auswählen

avi = COMate_CreateObject("abcAVI.ExtendedAVITags")
habe ich ein ShowErrorIfAny() gesetzt:
debugger hat geschrieben:-2147221005
Invalid progID. Check your spelling of the programmatic identifier. Also check that the component / ActiveX control has been registered.
Muß davor nicht irgendwo ein
COMate_RegisterCOMServer()
und/oder
Define.COMateObject abcAVI_object
stehen?

Verfasst: 07.09.2008 22:29
von ts-soft
scholly hat geschrieben:nach

Code: Alles auswählen

avi = COMate_CreateObject("abcAVI.ExtendedAVITags")
Define.COMateObject avi oder ähnlich ist hoffenlich auch vorhanden?
scholly hat geschrieben: habe ich ein ShowErrorIfAny() gesetzt:
Was ist das?
scholly hat geschrieben:
debugger hat geschrieben:-2147221005
Invalid progID. Check your spelling of the programmatic identifier. Also check that the component / ActiveX control has been registered.
Muß davor nicht irgendwo ein
COMate_RegisterCOMServer()
und/oder
Define.COMateObject abcAVI_object
stehen?
Wenn Du das Paket installiert hast, sollte die DLL registriert sein, ansonsten
mußte das Object mit COMate_RegisterCOMServer("dllname") registrieren (Administratorrechte erforderlich, falls Du Vista verwendest
oder eingeschränktes Konto unter XP)

Haste Dir die Hilfe überhaupt mal angesehen? Oder suchste die noch :freak:

// edit
Hab den Code von Kiffi übersehen :oops:

Verfasst: 07.09.2008 22:30
von Kiffi
scholly hat geschrieben:Muß davor nicht irgendwo ein
COMate_RegisterCOMServer()
stimmt. Das muss natürlich der Ordnung halber mit rein.

Ich habe natürlich als gegeben vorausgesetzt, dass das Teil bei Dir schon
längst registriert ist. ;-)
scholly hat geschrieben: und/oder
Define.COMateObject abcAVI_object
stehen?
nee, avi ist Dein COMateObject.

Grüße ... Kiffi

Verfasst: 07.09.2008 22:45
von scholly
Thomas braucht ne Brille... nana nana naana :lol: :lol:

Aber auch wenn ich keine Brille hab/brauch... allein vom Lesen der Hilfe versteh ICH nicht immer sofort alles. :schmoll:
Kiffi hat geschrieben:Ich habe natürlich als gegeben vorausgesetzt, dass das Teil bei Dir schon längst registriert ist. ;-)
:?: Wie registriert man/sich denn eine .dll?
Die liegen doch meist nur faul mit im Programmverzeichnis rum :o

Verfasst: 07.09.2008 22:51
von ts-soft
OCX Demos anschauen hab ich gesagt.
Beide Demos registrieren eine DLL
Das eine OCX auch eine DLL ist hab ich auch gesagt, oder
war das im anderem Thread?

Code: Alles auswählen

If COMate_RegisterCOMServer("name_deiner_dll.endung_welche_immer_sie_hat") = #S_OK
  avi.COMateObject = COMate_CreateObject("wie_auch_immer_es_heisst")
Else
  Debug "kann bla nicht registrieren, stelle sicher das ActiveX gefunden wird"
  End
EndIf 

Verfasst: 07.09.2008 23:16
von scholly
ts-soft hat geschrieben:OCX Demos anschauen hab ich gesagt.
Beide Demos registrieren eine DLL
Das eine OCX auch eine DLL ist hab ich auch gesagt, oder
war das im anderem Thread?
Angemeckert hattest Du aber die Hilfe :!:
ts-soft hat geschrieben:Haste Dir die Hilfe überhaupt mal angesehen? Oder suchste die noch :freak:
Nexten Samstach is Flohmarkt, da guck ich dann präventiv mal nach ner Glaskugel :lol:

Code: Alles auswählen

If COMate_RegisterCOMServer("name_deiner_dll.endung_welche_immer_sie_hat") = #S_OK
  avi.COMateObject = COMate_CreateObject("wie_auch_immer_es_heisst")
Else
  Debug "kann bla nicht registrieren, stelle sicher das ActiveX gefunden wird"
  End
EndIf 
Danke

Als nächstes muß ich jetzt wohl dem Variant is not an array auf die Schliche kommen....

Verfasst: 05.10.2008 00:45
von scholly
meinereiner hat geschrieben:Als nächstes muß ich jetzt wohl dem Variant is not an array auf die Schliche kommen....
Tja, nachdem ich die letzten Wochen verstärkt mit der MerdiaInfo.dll gespielt habe, habe ich die letzten 2 Tage versucht, irgendwas mit der abcAVI.dll zu erreichen.
Umsonst :(
Ich hab Kiffis Code zwar mannigfaltig erweitert/umgebaut, aber Hinter den Grund für die Fehlermeldung komm ich einfach nich.
Mein letzter Stand:

Code: Alles auswählen

EnableExplicit
XIncludeFile  "comate.pbi"

Debug "--------------------------"

#PE_Parse_Ok              = $00000000;abcAVI_TLB.pas
#PE_Errors_Ignored        = $00000001;abcAVI_TLB.pas
#PE_Open_Error            = $00000002;abcAVI_TLB.pas
#PE_Read_Error            = $00000003;abcAVI_TLB.pas
#PE_Not_RIFF_Error        = $00000004;abcAVI_TLB.pas
#PE_Wrong_Size_Error      = $00000005;abcAVI_TLB.pas
#PE_Not_AVI_Error         = $00000006;abcAVI_TLB.pas
#PE_Wrong_Structure_Error = $00000007;abcAVI_TLB.pas
#PE_Close_Error           = $00000008;abcAVI_TLB.pas
#PE_Write_Error           = $00000009;abcAVI_TLB.pas
#PE_Seek_Error            = $0000000A;abcAVI_TLB.pas
#PE_Memory_Error          = $0000000B;abcAVI_TLB.pas

#PM_Lite_Mode             = 0        ;abcAVI_TLB.pas
#PM_Ignore_Errors         = 1        ;abcAVI_TLB.pas

#IDI_Video_Stream         = 2        ;abcAVI_TLB.pas
#IDI_INFO_Tags            = $00000000;abcAVI_TLB.pas

#IDT_INAM                 = $00000000;abcAVI_TLB.pas

Define avi.COMateObject

Define AVI_Info.VARIANT

Procedure ShowErrorIfAny(controlpoint.s)
  If COMate_GetLastErrorCode() <> #S_OK
    Debug "--------------------------"
    Debug "Kontrollpunkt                    = "+controlpoint
    Debug "COMate_GetLastErrorCode()        = "+Str(COMate_GetLastErrorCode())
    Debug "COMate_GetLastErrorDescription() = "+COMate_GetLastErrorDescription()
  EndIf
EndProcedure

If COMate_RegisterCOMServer("abcAVI.dll") = #S_OK
  avi = COMate_CreateObject("abcAVI.ExtendedAVITags")
  Debug "avi.COMateObject = "+Str(avi)
Else
  Debug "cannot register abcAVI.dll"
  End
EndIf

If avi
  
  ;function  ReadAVITags( File_Name: OleVariant; 
  ;                       Parse_Mode: CParse_Mode; 
  ;                       Max_Entries: SYSINT;  
  ;                       out AVI_Info: OleVariant): 
  ;                       HResult; safecall;

  File_name.s   = "NASAKSN-AreYouAnExplorer_tags-abcRIFF.avi" ;
  Parse_mode.s  = Str(#PM_Ignore_Errors | #PM_Lite_Mode)
  info.s        = Str(@AVI_Info)
 
  avi\Invoke("ReadAVITags('" + File_name + "', " + Parse_mode + ", 1024, " + info + " As Long ByRef)")
  ShowErrorIfAny("eins")
  
  ;function  GetInfo( AVI_Info: OleVariant; 
  ;                   Type_ID: CInfo_Type_ID;  
  ;                   Info_ID: SYSINT): 
  ;                   OleVariant; safecall;
  
  Type_ID.s = Str(#IDI_INFO_Tags)
  Info_ID.s = Str(#IDT_INAM)
    
  *ptr.VARIANT = avi\GetVariantProperty("GetInfo(" + info + ", " + Type_ID + ", " + Info_ID + ")")
  ShowErrorIfAny("zwei"); here appears error -2147352567/"Variant is not an array"

  avi\Release()
 
EndIf
Gibts irgendjemand, der mir weiterhelfen kann und möchte?