Avatar billede tbm_iceman Nybegynder
15. september 2004 - 12:53 Der er 21 kommentarer og
1 løsning

VB6.0 + COM - Unsupported variant type

Jeg har et COM object hvor jeg gerne vil hente en Int64 variabel ud fra.
Men det understøtter VB6 ikke.
Er der nogen vej til at omgå det?

Taget fra Object Browseren på COM objectet:
--------
Property FilePosition As <Unsupported variant type>
    read-only
    Member of G6FTPServer.IClient
Avatar billede sjh Nybegynder
28. september 2004 - 02:01 #1
har du prøvet med: FilePosition As Currency
Avatar billede tbm_iceman Nybegynder
28. september 2004 - 02:04 #2
Nej ikke endnu... Men vil da teste det øjeblikkeligt...
Avatar billede tbm_iceman Nybegynder
28. september 2004 - 02:27 #3
Virker ikke...
Avatar billede sjh Nybegynder
28. september 2004 - 14:02 #4
havd med Dim FilePosition As Variant eller ingen ting Dim FilePosition ' As Variant
Avatar billede tbm_iceman Nybegynder
28. september 2004 - 14:07 #5
Virker heller ikke. I debug mode er det i denne linieden fejler:

testUploaded = Clients.Item(i).Uploaded <-- Får fejlen: "Automation Type not supported in VB6.0"

------------
Private Sub Form_Load()
       
        Dim Manager As G6FTPServer.Manager
        Dim Clients As G6FTPServer.IClientList
        Dim sDomain As String
        Dim testUploaded As Variant
        Dim sUsername As String
        Dim i As Integer

        sDomain = "IceMan"

        Set Manager = CreateObject("G6FTPServer.Manager")
        Set Clients = Manager.Domains.Item(sDomain).ClientList

        If Clients.Count > 0 Then
            For i = 0 To Clients.Count - 1
                sUsername = Clients.Item(i).Username
                testUploaded = Clients.Item(i).Uploaded
                MsgBox ("Username: " + sUsername + " Upload:" + DblUploaded)
            Next
        Else
            MsgBox ("Fejl!")
        End If
End Sub
--------------------
Avatar billede sjh Nybegynder
28. september 2004 - 14:12 #6
og du er sikker på at den ikke bare skal starte med 1 ->  For i = 1 To Clients.Count - 1
Avatar billede tbm_iceman Nybegynder
28. september 2004 - 14:15 #7
ja...
Har lavet det samme script i VBS og C# hvor det virker.
Detsuden burde man få en error det hedder noget med NullReffrence istedet hvis det var det der er galt.
Avatar billede sjh Nybegynder
28. september 2004 - 14:19 #8
Prøv sådan : MsgBox VarType(Clients.Item(i).Uploaded) så kan du se hvad type det er..


vbEmpty            0 Empty (uninitialized)
vbNull             1 Null (no valid data)
vbInteger         2 Integer
vbLong             3 Long integer
vbSingle         4 Single-precision floating-point number
vbDouble         5 Double-precision floating-point number
vbCurrency         6 Currency value
vbDate             7 Date value
vbString         8 String
vbObject         9 Object
vbError         10 Error value
vbBoolean         11 Boolean value
vbVariant         12 Variant (used only witharrays of variants)
vbDataObject         13 A data access object
vbDecimal         14 Decimal value
vbByte             17 Byte value
vbUserDefinedType     36 Variants that contain user-defined types
vbArray         8192 Array
Avatar billede sjh Nybegynder
28. september 2004 - 14:35 #9
hvis du ser her : http://www.g6ftpserver.com/forum/index.php?showtopic=480 så skriver de også... Sorry, VB doesn't support !
Avatar billede tbm_iceman Nybegynder
28. september 2004 - 14:38 #10
Ja det ved jeg godt... det er jo derfor jeg spørger om der er en måde at omgå det?
Avatar billede sjh Nybegynder
28. september 2004 - 14:42 #11
Ja.. så skal du nok lave noget i C# som kan konverter LargeInt (integer on 64bits) til Long eller Double eller Currency
Avatar billede sjh Nybegynder
28. september 2004 - 14:43 #12
Det kunne være i form af en lille DLL
Avatar billede tbm_iceman Nybegynder
28. september 2004 - 14:44 #13
ja kunne man jo men så hvergang jeg skal bruge noget i Int64 skal jeg lave en frontend af COM objected.
Avatar billede sjh Nybegynder
28. september 2004 - 14:45 #14
eller måske skulle du bare lave den til en string.. jeg går ikke udfra at du skal retuner den igen.
Avatar billede tbm_iceman Nybegynder
28. september 2004 - 14:45 #15
skal jeg ikke. Men kan slet ikke requeste den.
Avatar billede sjh Nybegynder
28. september 2004 - 14:52 #16
måske kunne du gøre sådan..

Private Declare Function VbToInt64 Lib "vbInt64.dll" (ByVal dwInput As Any) As Currency

altså lav en dll i c# som fx. hedder "vbInt64.dll" som konverter det..

så kan du vel bruge den sådan:

testUploaded = VbToInt64(Clients.Item(i).Uploaded)
Avatar billede tbm_iceman Nybegynder
28. september 2004 - 14:53 #17
nej, det kan jeg ikke. For den fejler hvergang VB prøver at requeste det interface fra COM objected.
Avatar billede sjh Nybegynder
28. september 2004 - 14:55 #18
så tror jeg ikke der er noget at gøre.. desværre..
Avatar billede sjh Nybegynder
28. september 2004 - 14:56 #19
ellers skal du lade vær med at bruge den.. men så er der måske ikke nogle ide i det :D
Avatar billede sjh Nybegynder
28. september 2004 - 15:11 #20
Du kunne også prøve LSet metoden : http://eksperten.dk/spm/301638
Avatar billede tbm_iceman Nybegynder
28. september 2004 - 15:54 #21
Det vil jeg lige kigge på.
Avatar billede tbm_iceman Nybegynder
20. september 2010 - 21:28 #22
Lukker spm.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester