Mi stupirei del contrario! Questa roba è semplicemente l'intestazione delle tue bitmap serializzate...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.................'...
Scusa, mi spieghi cosa dovrebbe fare esattamente questo codice?
E questo codice? È il delirio!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()
Ora non ho sottomano .NET (sono sulla mia macchina Linux), ma provo a buttarti giù del codice corretto: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
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 Subcodice:'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

Rispondi quotando