Per ogni file che crea il programma ci mette prima questo testo
codice:
......................QSystem.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a......System.Drawing.Bitmap.....Data.................'...
Mi stupirei del contrario! Questa roba è semplicemente l'intestazione delle tue bitmap serializzate...
Scusa, mi spieghi cosa dovrebbe fare esattamente questo codice?
codice:
Dim fmt As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter 'Cosa c'entra la serializzazione?!
Dim bmp As Bitmap 'e le bitmap?!!
For Each item As String In ListBox1.Items
bmp = CType(Bitmap.FromFile(item), Bitmap) Queste due righe poi non le capisco assolutamente...
fmt.Serialize(sw, bmp)
Next
sw.Close()
E questo codice? È il delirio!
codice:
Private Sub btn_add_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_add.Click
If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim S() As String = OpenFileDialog1.FileNames 'un array che contiene i nomi dei file scelti
Dim File As String
Dim sr As New IO.FileStream(OpenFileDialog1.FileName, IO.FileMode.Open) Perché apri adesso lo stream in lettura?
Dim fmt As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter E questo adesso cosa c'entra?
For Each File In S
ListBox1.Items.Add(File)
Next
sr.Close()
End If
End Sub
Ora non ho sottomano .NET (sono sulla mia macchina Linux), ma provo a buttarti giù del codice corretto:
codice:
'La sub btn_add_Click si salva quasi completamente
Private Sub btn_add_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_add.Click
If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim S() As String = OpenFileDialog1.FileNames 'un array che contiene i nomi dei file scelti
Dim File As String
For Each File In S
ListBox1.Items.Add(File)
Next
End If
End Sub
codice:
'La sub btn_create_Click invece va riscritta quasi in blocco.
Private Sub btn_create_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_create.Click
If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim sw As FileStream
Dim sr As FileStream
Dim buffer(32767) As Byte 'Dimensioni aumentabili o diminuibili a piacere
Dim bytecount As Integer
Try
sw=New FileStream(SaveFileDialog1.FileName, FileMode.Create)
Catch ex As Exception
MessageBox.Show("Impossibile creare il file di destinazione.")
Exit Sub
End Try
For Each item As String In ListBox1.Items
Try
sr=new FileStream(item, IO.FileMode.Open)
Catch ex As Exception
MessageBox.Show("Impossibile aprire il file sorgente.")
Continue For 'Salta al file successivo
End Try
Do
sr.Read(buffer,0,buffer.Length)
If bytecount = 0 Then Exit Do 'Lo so, è brutto.
sr.Write(buffer,0,buffer.Length)
Loop
sr.Close()
Next
sw.Close()
End If
End Sub