Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [VBScript] Scrivere file immagine

    Ciao a tutti!

    Ho creato un ActiveX in VB6 che in output mette a disposizione un array di byte. In VB riesco a scrivere questo array su un file in questo modo:
    Dim appo() As Byte

    Set mthTest = New ClassSADP 'instanzio l'activeX
    Dim var As Variant

    mthTest.Start 'visualizzo l'activeX

    ReDim appo(UBound(mthTest.Dito_10)) 'ritorna un array di byte contente un'immagine
    appo = mthTest.Dito_10

    Open "c:\Prova.wsq" For Binary As #1
    Put #1, , appo

    Questo funziona, il problema ora è che devo fare la stessa cosa ma in VBSCRIPT! Ho fatto una bozza:
    <script language="vbscript">
    Dim appo
    Dim OggFile, origine, OggTextStream

    ClassSA.Start
    Array(appo)
    ReDim appo(UBound(ClassSA.Dito_1))

    origine="c:\textstream.txt"
    Set fso = CreateObject("Scripting.FileSystemObject")
    fso.CreateTextFile (origine)
    Set OggFile = fso.GetFile (origine)
    Set OggTextStream = OggFile.OpenAsTextStream(2)
    OggTextStream.WriteLine appo
    OggTextStream.close
    </script>
    Lo script mi crea un file di 0 byte....qualcuno potrebbe gentilmente aiutarmi? Grazie.
    Vuoi sbattezzarti? Guarda QUI

  2. #2
    Ho capito che devo utilizzare l'oggetto ADODB.stream per scrivere un file in modalità binaria dunque ho cambiato il codice:

    <script language="vbscript">

    Dim appo

    Dim BinaryStream

    Const adTypeBinary = 1
    Const adSaveCreateOverWrite = 2


    ClassSA.Start
    Array(appo)
    ReDim appo(UBound(ClassSA.Dito_1))


    set BinaryStream = CreateObject("ADODB.Stream")

    BinaryStream.Type = adTypeBinary

    BinaryStream.Open
    BinaryStream.Write appo

    BinaryStream.SaveToFile "c:\Immagine.bmp", adSaveCreateOverWrite

    </script>
    Questo codice produce un errore qui:
    set BinaryStream = CreateObject("ADODB.Stream")

    Mi dice che non riesce a creare l'oggetto ADODB.Stream
    Mi hanno detto che và dichiarata la libreria da dove proviene (dovrebbe essere adovbs.inc...) ma non funziona!!!
    Su su un aiutino, credo di essere vicino alla soluzione...

    Vorrei sottolineare che questo script risiede all'interno di una pagina HTML, non di una pagina ASP!
    Vuoi sbattezzarti? Guarda QUI

  3. #3
    Mi stò rispondendo da solo ma magari servirà a qualcuno. Ho scoperto che nel registro avevo una chiave che impediva a Internet Explorer di creare oggetti di tipo ADODB.Stream
    La chiave in questione è:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{00000566-0000-0010-8000-00AA006D2EA4}


    l'info l'ho trovata qui :
    http://support.microsoft.com/kb/870669


    Ora però non riesco a scrivere l'array di byte su file....


    <script language="vbscript">

    Dim appo

    ClassSA.IsVisibleFinger = "1111111111"
    ClassSA.Start

    Array(appo)

    ReDim appo(UBound(ClassSA.Dito_1))

    SaveBinaryData "c:\IMG.BMP",appo

    Function SaveBinaryData(FileName, ByteArray)
    Const adTypeBinary = 1
    Const adSaveCreateOverWrite = 2

    'Create Stream object
    Dim BinaryStream
    Set BinaryStream = CreateObject("ADODB.Stream")

    'Specify stream type - we want To save binary data.
    BinaryStream.Type = adTypeBinary

    'Open the stream And write binary data To the object
    BinaryStream.Open
    BinaryStream.Write ByteArray <----- ERRORE!

    'Save binary data To disk
    BinaryStream.SaveToFile FileName, adSaveCreateOverWrite
    End Function
    </script>
    ...che palle...
    Vuoi sbattezzarti? Guarda QUI

  4. #4
    OK, ho risolto....a voi la soluzione dell'arcano. Se avete correzioni FORMALI siete i ben venuti.

    <script language="vbscript">


    ClassSA.Start

    SaveBinaryDataTextStream "c:\IMG.BMP",ClassSA.Immagine 'quest'ultima restituisce un array di byte..

    Function SaveBinaryDataTextStream(FileName, ByteArray)
    'Create FileSystemObject object
    Dim FS: Set FS = CreateObject("Scripting.FileSystemObject")

    'Create text stream object
    Dim TextStream
    Set TextStream = FS.CreateTextFile(FileName)

    'Convert binary data To text And write them To the file
    TextStream.Write BinaryToString (ByteArray)
    End Function

    Function BinaryToString(Bina)
    Dim I, S
    For I = 1 To LenB(Bina)
    S = S & Chr(AscB(MidB(Bina, I, 1)))
    Next
    BinaryToString = S
    End Function

    </script>
    Saluti
    Vuoi sbattezzarti? Guarda QUI

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.