Newsgroup: it.comp.lang.visual-basic
Titolo: Errore 458

"La variabile utilizza un tipo di automazione non supportato in VB"
L'errore mi viene dato alla riga Get #FileIN, , TotByte
Ed io ho scritto:Dim TotByte
Sto utilizzando... emmm meglio dire sto cercando di utilizzare
Open ...For Binary per la copia di un file aperto
Allora ho controllato MSDN .... aiha iaiii ....iiiii ! Che papiro ! Mi son
perso tra i meandri della guida !
Troppe cose che non conosco e non riesco a districarmi.
Mi sembra di aver capito che il problema sia relativo al numero di byte
letti per volta nel ciclo for next di lettura-scrittura
che ho fatto.
Qualcuno in tre-quattro (beh forse è una pretesa eccessiva, anche qualcuna
in più) parole
mi dice qualcosa e come devo impostare quella variabile ?
Grazie
--
Gulp  -  Forse mi sono perso qualcosa !

 Open ...For Binary per la copia di un file aperto
Dim TotByte As String
Prima del Get:
TotByte=String(1000,0)    '1000 o quello che vuoi
Testa subito dopo l'EOF, se vero TotByte avrà una lunghezza inferiore...

 inferiore...
Vedi anche qui:
http://makeashorterlink.com/?H1E112EC6

 
http://makeashorterlink.com/?H1E112EC6
mi ha rimesso in crisi.
Quel listato copia solo file di testo ? Tutto viene trattato come stringa ?
E poi, qui non ho capito:
If EOF(canale_file_originale) Then Exit Do     <--------vedi sotto
        Get #canale_file_originale, , dati_buffer_originale
        If EOF(canale_file_originale) Then        <---- non era uscito ?
              .................
Ho anche provato a copiare pari pari il codice e ad usarlo, ma deve essere
coperto da Copyright  :-))
mi da errore 5 qui:
riga = Left(riga, fine_riga - 1)


 riga = Left(riga, fine_riga - 1)
'Gulp, hai letto tutto il topic?
'In ogni caso, ... un po' di adattamento...
'Quanto segue è esattamente quello di cui hai bisogno.
'Se non ti sei divertito ad arrivarci da solo ... beh, te la sei voluta.
Private Sub Form_Activate()
    Do
        file_originale = InputBox("Percorso e nome del file ORIGINALE")
        If file_originale = "" Then GoTo esce
        If Dir(file_originale) <> "" Then Exit Do
        Call MsgBox("Il file" & vbCrLf & file_originale & vbCrLf & "non
esiste!", vbOKOnly + vbExclamation)
    Loop
    file_destinazione = InputBox("Percorso e nome del file di DESTINAZIONE",
, file_originale & "_COPIA")
    If file_destinazione = "" Then GoTo esce
    lunghezza_buffer = 5000
    Dim dati_buffer_originale As String
    canale_file_originale = FreeFile
    Open file_originale For Binary Shared As #canale_file_originale
    lunghezza_file_originale = LOF(canale_file_originale)
    If Dir(file_destinazione) <> "" Then Kill file_destinazione
    canale_file_destinazione = FreeFile
    Open file_destinazione For Binary Shared As #canale_file_destinazione
    bytes_letti = 0
    Do
        If EOF(canale_file_originale) Then Exit Do
        dati_buffer_originale = String(lunghezza_buffer, 0)
        Get #canale_file_originale, , dati_buffer_originale
        If EOF(canale_file_originale) Then
            dati_buffer_originale = Left(dati_buffer_originale,
lunghezza_file_originale - bytes_letti)
        End If
        bytes_letti = bytes_letti + Len(dati_buffer_originale)
        Put #canale_file_destinazione, , dati_buffer_originale
        Me.Caption = "Letti/Scritti " & bytes_letti & " di " &
lunghezza_file_originale
    Loop
    Close canale_file_originale
    Close canale_file_destinazione
    MsgBox "Fine procedura"
esce:
    Unload Me
End Sub

 riga = Left(riga, fine_riga - 1)
Scommettiamo? <eg>
Dal codice di quel post:
        fine_riga = InStr(riga, vbNewLine)
        If fine_riga = 0 Then
            MsgBox "Non trovo vbNewLine - Prova ad aumentare
lunghezza_buffer!"
            Stop
        End If
Come vedi, se fine_riga=0 (e non può essere <0), tutto si ferma allo Stop
Quindi la riga che segue non può dare errore.


         If EOF(canale_file_originale) Then        <---- non era uscito ?
.................
Tutto, o quasi, è sempre possibile (e non sto scherzando):
pippo=1
Do
    If pippo=2 Then Exit do
    pippo=2
    If pippo=2 Then
        MsgBox "No, non era uscito."
    End If
Loop

         End If
Effettivamente....a me il msgbox non serviva e la cosa mi ha portato a
sfalciare anche if fine_riga:
perdonami.  :-(
Ho realizzato una sorta di ACDSee che "scorre" su file immagine e file
audio, una utility che dovrebbe facilitarmi la copia di un file trovato in
un' altra dir.
Del codice che mi hai passato non ho cambiato nulla se non "i nomi" :
Dim dati_buffer_originale As String
Dim canale_FileIN, canale_FileOUT, lunghezza_FileIN, bytes_letti
Dim FileIN, FileOUT
Const lunghezza_buffer = 5000
  FileIN = imgfile  'nome preso cliccando in una FileListBox
  FileOUT = CmD.Filename   'si tratta del file da finestra Save As
(CommonDialog)
Ho provato a copiare il file tada.vaw (Microsoft) e mi risulta un file di 1
Kb che all'apertura con Media Player naturalmente da errore di formato.


 Loop
Non ho molta dimestichezza con cicli che nonsia il semplice For Next.
Questa che scrivi non la sapevo ! Beh... come tante altre cose.


 voluta.
Non è che non ho provato ! E' che dopo un pomeriggio di addattamenti,
controlli vari e tentativi  ... si entra in "coma " e allora il divertimento
sfuma...
Tutti penso avranno qualche volta preso qualche spezzone di codice.
Anche quando mi passano la "pappa", mi preoccupo poi di capire dove non ero
riuscito...non mi accontento del Copia-Incolla.
Scusami se ho dato questa impressione.


 di formato.
Con il codice che ho messo nel post sopra va?
... senza boria, è chiaramente una domanda retorica ...
Consiglio, lo stesso di ieri:
Prova prima a far funzionare una routine generica.
Quando va, applicala al tuo ambiente.
Se non va più, la colpa non è della routine...

 Questa che scrivi non la sapevo !
No, evidentemente non mi sono spiegato.
Voleva essere una pseudo-dimostrazione delle istruzioni che ti avevano
lasciato perplesso.
Se le osservi "in parallelo", comprenderai che il Get ("gemella" di pippo=2)
può produrre un EOF che un attimo prima non c'era...

 Se non va più, la colpa non è della routine...
Sarà opportuno ! Se avessi fatto così imgfile non mi avrebbe rotto le
scatole per un intero pomeriggio. :-|
Mi dispiace di averti fatto perdere tempo.
Ti ringrazio dell' aiuto
