Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    48

    [VB.NET] Word Addin Upload File (Aiutooooo!!!!)

    Salve ragazzi, ho realizzato un Addin per microsoft WORD che deve eseguire l'upload del documento sul server di un gestore documentale. L'AddIn è interfacciato con il gestore documentale tramite le sue API. L'upload l'ho implementato in questo modo:

    Codice PHP:
    'Salvo il documento attivo su disco

            applicationObject.ActiveDocument.SaveAs("C:\" & DocName & ".doc")

            Dim FilePath As String
            Dim FileNum As Integer

            FilePath = "C:\" & DocName & "#.doc"

            FileNum = FreeFile()

    Try
            '
    apro in modalità binaria il documento precedentemente salvato
            FileOpen
    (FileNumFilePathOpenMode.BinaryOpenAccess.Read)
                             
            
    Dim TotalFileSize As Long
            Dim TotalBytesWritten 
    As Long
            Dim I 
    As Integer

            TotalFileSize 
    LOF(FileNum)
     
           
    Dim bdata(TotalFileSize-1) As Byte 
            
           
    Try

                While (
    Not EOF(FileNum))

                    
                    
    TotalBytesWritten TotalFileSize

                    
    If TotalBytesWritten 0 Then
                        
    If (TotalBytesWritten UBound(bdata)) Then
                            TotalBytesWritten 
    UBound(bdata) + 1
                        
    Else
                            
    TotalFileSize TotalBytesWritten
                        End 
    If

                        
    FileGet(FileNumbdata)
                        
                        
    'scrivo sul server tramite API
                        objPutStream.Write(bdata, TotalBytesWritten) 

                        TotalBytesWritten = TotalFileSize - TotalBytesWritten
                    End If
                End While

            Catch E As Exception
                             msgbox(E.message)            
                Exit Function
            Finally
                   FileCLose(FileNum)
            End Try 

    Ecco qual è la cosa strana: dopo aver completato l' AddIn l'ho testato su 7 macchine, su 5 ha funzionato benissimo sulle altre 2 la parte di codice qui sopra mi genera questa eccezione ("index 0 is invalid.") e mi dice che l'indice deve essere compreso tra 0 e -1. Dopo mi sono reso conto che sulle due macchine dove non ha funzionato c'è WINDOWS 2000 mentre sulle macchine dove ha funzionato perfettamente c'è XP o Windows 2003 Server.
    Da questo ho capito che potrebbe dipendere dal sistema operativo ma non capisco perchè!

    Non saprei proprio che fare, qualcuno ha qualche idea???????????

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    48
    UP

  3. #3
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    utilizza il debug per trovare almeno la riga dove il programma genera l'eccezione..

    così puoi capire dove sta il problema..

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    48
    Siccome è un'applicazione word non mi fa fare il debug step by step.
    E poi perchè su macchine con altri sistemi operativi funziona benissimo?

    ora ho implementato il tutto in un altro modo:

    Codice PHP:
            Dim bdata() As Byte
            Dim Reader 
    As BinaryReader

           Dim Temp 
    As New FileStream(FilePathFileMode.Open)
            
    Dim lenght As Long

            Reader 
    = New IO.BinaryReader(Temp)
            
    lenght Temp.Length

            ReDim bdata
    (Reader.BaseStream.Length)


            
    Reader.Read(bdata0Reader.BaseStream.Length)
            
    Reader.Close()

            Try
                
                For 
    As Int32 0 To bdata.Length 1
                    
                    objPutStream
    .Write(bdatalenght)
                
                
    Next
            
            
    Catch As Exception
                MsgBox
    (e.Message)
                Exit Function
            Finally
                
    objPutStream.SetComplete()
            
    End Try 
    Nienteeeeeeeee stesso erroreeeeee e come al solito sulle altre macchine va!

  5. #5
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    tutte uguali le versioni di word?

    metti dei log ogni 2 o 3 righe di codice.. così da capire dove si rompe e perchè..

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    48
    Sulle altre macchine funziona dalla versione 2000 in poi di OFFICE! L'unica cosa che cambia da macchina a macchina è il sistema operativo e guardacaso non funziona proprio sulle due macchine dove è installato il windows 2000 indipendentemente dalla versione di office!

    Scusa cosa intendi per mettere dei log? Potresti farmi un esempio?

  7. #7
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    scrivi su un file..

    magari scrivi il testo dell'eccezione, la riga di codice.. insomma qualcosa che ti faccia capire dove si rompe il programma

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    48
    L'eccezione si verifica all'interno del ciclo ed è :

    "Index 0 is invalid.Valid index range is 0 -1"

    Il ciclo viene eseguito una sola volta poi esce! non capisco a quale indice si riferisce

  9. #9
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    prova ad esempio a farti stampare in output(file o msgbox) il valore dell'indice (che se è quello che sembra dovrebbe essere I..)

    è per questo che dovresti scrivere in un file di log i passaggi che fa e il valore delle variabili che usi...

    ad ora tu sai l'eccezione ma non sai chi la genera o perchè..

    ps: la read dovrebbe ritornarti i bite letti.. prova a controllare se legge byte perchè se ritorna 0 il "bdata.Lenght -1" è un -1 e quindi magari il for si arrabbia...

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    48
    L'errore lo genera a questa istruzione!

    objPutStream.Write(bdata, lenght)

    e questo è un oggetto delle API del gestore documentale che fa la scrittura del file su server!

    Secondo me non è questione di ciclo o indice del ciclo, infatti mi sono fatto stampare tutte le variabili ed è tutto ok!

    Ora devo provare ad installare visual studio sulla macchina windows 2000 e provare a compilarlo da li, vediamo che succede!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.