• Welcome to Theos PowerBasic Museum 2017.

Com interface with .NET assembly

Started by Edwin Knoppert, September 25, 2009, 02:35:47 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Edwin Knoppert

These libraries need to be registered with regasm.exe and not regsvr.
DLLRegister and unregister are not present.
I can load this dll via the progid but not via NEWCOM LIB ....
Is there a 'maybe' here to get that working somehow?

Prog, class and interface guid are present in the tlb file.


' Generated by: PowerBASIC COM Browser v.2.00.0070
' Date & Time : 25-9-2009 at 13:58
' ------------------------------------------------
' Library Name: DictionarySheet
' Library File: V:\Programming\dotnet\DictionarySheet\App_Code\DictionarySheet.tlb
' Description :
' GUID : {A83262AE-19D5-30C2-8206-A05A54111B5F}
' LCID : 0
' Version : 1.0

' Version Dependent ProgID's
$PROGID_DictionarySheet_DictionarySheet = "DictionarySheet"

' Class Indentifiers
$CLSID_DictionarySheet_DictionarySheet = Guid$("{9E5E5FB2-219D-4EE7-AB27-E4DBED8E123E}")

' Interface Indentifiers
$IID_DictionarySheet_DBCOM_Interface = Guid$("{694C1820-04B6-4988-928F-FD858B95C880}")

' Interface Name  : DBCOM_Interface
' Class Name      : DictionarySheet
' ClassID         : $CLSID_DictionarySheet_DictionarySheet
Interface DBCOM_Interface $IID_DictionarySheet_DBCOM_Interface
    Inherit IDispatch

    Method AddItem <1> (ByVal Row As Long, ByVal Col As Long, ByVal value As Variant) As Integer
    Method Clear <2> ()
End Interface


José Roca

 
Don't know. Maybe it creates dependencies and/or additional registry entries.

Edwin Knoppert

Will you help me a little speeding up things?
I had this example in .NET which adds items in just 2 seconds(!)

( http://www.hellobasic.com/cgi-bin/forum/YaBB.pl?board=vd;action=display;num=1253876907 )

I am now trying to do this like:

    Local nRow As Long
    Local nCol As Long
    Local vKey As Variant
    Local vData As Variant
    Local d As IDictionary
    d = NewCom CLSID $CLSID_Dictionary   
   
    For nRow = 1 To 1000000
   
        For nCol = 1 To 10
   
            vKey = Format$( nRow ) & ", " & Format$( nCol )
            vData = "gggggg"
            d.Add (vKey, vData)
           
        Next
    Next   
   
    vdata = Empty
    vdata = d.Item( vKey )
    MsgBox Variant$( vdata )


It's absurd slow, it takes minutes.
(6 minutes and still running actually :) )

If you need something what compiles, let me know.

José Roca

 
I don't see any way of speeding it. Calling a method using late binding and variants ten million times obviously takes a long time. Don't know what .NET does to do it in only 2 seconds,

Patrice Terrier

Avoid string concatenation, try using BUILD$

...

Patrice Terrier
GDImage (advanced graphic addon)
http://www.zapsolution.com

Edwin Knoppert

>Calling a method using late binding
No, it is using an interface definition, thus early binding..
These parameters however are variants.

>Don't know what .NET does to do it in only 2 seconds
My collegue uses this dictionary part in .NET often, I was truly suprised about it's speed.
Been busy for some time but i don't see a way to gain real speed, i'll try the build$ as well but i read that scripting.dictionary is slower than some js variant, don't know where to access this one however.

I did some testing, still with my com overhead it is fatser than the scripting fella.
12 seconds vs 101.
Both are poor.

Edwin Knoppert

Oh now i see, the topic is about using .NET but my latest code was using scripting, the code is compileable.
I may have confused you.