Newsgroup: it.comp.lang.visual-basic
Titolo: Split file

Ho necessità di separare un file binario in due parti utilizzando Vb.
Potete consigliarmi quali sono le funzioni che devo studiare per
iniziare?
	Grazie e saluti
		Lore.

 ha scritto nel messaggio
news:39B74DD1...@agip.it...


 Cosa intendi per "separare un file binario in due parti"?
Ho un file di 1.7 Mbyte e devo metterlo su dischetti.
Quindi volevo crearne 2 che stiano entro 1.44 Mbyte del dischetto.
	Lore.

 iniziare?
Prova con questa routine; l'ho estratta da un programmino che avevo scritto
tempo fa a mio uso e consumo, puo' darsi che vada rivisto qualcosa ma il succo
e' quello...
Per ripristinare il file originale puoi usare un "copy /b a+b+c z" oppure
scrivere un altra sub con il procedimento inverso.
-- BEGIN CODE --
Sub SplitFile(ByVal SourceFile As String, ByVal DestDir As String, ByVal NKbyte
As Long)
Dim FBuffer()       As Byte
Dim SourceLen       As Long
Dim SplitLen        As Long
Dim LastSplitLen    As Long
Dim DestFile            As String
Dim DestFileComplete    As String
Dim FileCount As Integer, i As Integer
'determiniamo numero e dimensione dei file generati
On Error GoTo FileError
SourceLen = FileLen(SourceFile)
On Error GoTo 0
SplitLen = NKbyte * 1024
FileCount = SourceLen \ SplitLen
LastSplitLen = SourceLen Mod SplitLen
If FileCount = 0 Then
    If SplitLen > SourceLen Then
        Beep
        MsgBox "la dimensione specificata supera la dimensione originale del
file.", vbExclamation
        Exit Sub
    End If
Else
    If LastSplitLen > 0 Then FileCount = FileCount + 1
    If FileCount > 15 Then
        If MsgBox("ATTENZIONE! Verranno generati " & FileCount & " file." _
          & vbLf & vbLf & "Continuare ugualmente?" _
         , vbQuestion + vbOKCancel) = vbCancel Then Exit Sub
    End If
End If
'Sistemiamo i percorsi e ricaviamo il nome (senza path) del file origine
'per usarlo come base per i file splittati.
If Right$(DestDir, 1) <> "\" Then DestDir = DestDir & "\"
For i = Len(SourceFile) To 1 Step -1
    If Mid$(SourceFile, i, 1) = "\" Then Exit For
Next
DestFile = Right$(SourceFile, Len(SourceFile) - i)
i = 1
On Error GoTo FileError
Open SourceFile For Binary Access Read Lock Read Write As #1
Do While Not EOF(1)
    DestFileComplete = DestDir & DestFile & "." & i
    If i < FileCount Then
        ReDim FBuffer(SplitLen)
    Else
        ReDim FBuffer(LastSplitLen)
    End If
    Get #1, , FBuffer
    Open DestFileComplete For Binary Access Write Lock Read Write As #2
    Put #2, , FBuffer
    Close #2
    DoEvents
    i = i + 1
Loop
Close #1
Exit Sub
FileError:
Select Case Err
Case 53
    MsgBox Error$ & vbLf & "Controllare il nome del file da elaborare.",
vbCritical
Case 61
    MsgBox "Spazio su disco insufficiente.", vbCritical
Case 71
    If MsgBox("Periferica non pronta.", vbCritical + vbRetryCancel) = vbRetry
Then Resume
Case 76
    MsgBox Error$ & vbLf & "Controllare il percorso di destinazione.",
vbCritical
End Select
Close #1
Close #2
End Sub
-- END CODE --
Ciao
--
Luca Dormio
luca....@tin.it
luca....@sig-la.com

 wrote in message
39B7677C...@agip.it...

Sito Comune, scarica il mio progetto spezza.zip, se controlli i sorgenti non
e' difficile modificarlo a tue eventuali esigenze.
Ciao stefano