Hey,
hab ein Problem mit folgendem Code:
/////////////////////////////////////////
Imports System.IO
Public Class Form1
' benötigte Variablen deklarieren
Dim SourceFile As FileInfo
Dim Target As String
Private WithEvents m_Copy As New Button
Private WithEvents m_TargetButton As New Button
Private WithEvents m_SourceButton As New Button
Private WithEvents m_Source As New TextBox
Private WithEvents m_Target As New TextBox
Private WithEvents m_Progressbar As New ProgressBar
Private m_percent As New Label
Private m_Text1 As New Label
Private m_Text2 As New Label
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
' Formular anpassen
With Me
.Text = "Kopieren mit einer Fortschrittanzeige"
.Width = 440
.Height = 155
End With
' benötigte Objekte konfigurieren
With m_Copy
.Text = "Kopieren"
.Top = 25
.Left = 343
End With
With m_SourceButton
.Text = "Auswählen"
.Top = 60
.Left = 343
End With
With m_TargetButton
.Text = "Auswählen"
.Top = 90
.Left = 343
End With
With m_Text1
.Text = "Quelldatei: "
.Top = 62
.Left = 20
.Width = 75
End With
With m_Source
.Text = ""
.Top = 60
.Left = 100
.Width = 220
End With
With m_Text2
.Text = "Zieldatei: "
.Top = 92
.Left = 20
.Width = 75
End With
With m_Target
.Text = ""
.Top = 90
.Left = 100
.Width = 220
End With
With m_percent
m_percent.Text = "0%"
.Left = (m_Progressbar.Width - 20) / 2 + 20
.Top = 10
End With
With m_Progressbar
.Top = 25
.Left = 20
.Width = 300
End With
' Objekte dem Formular hinzufügen
Me.Controls.Add(m_Copy)
Me.Controls.Add(m_Text1)
Me.Controls.Add(m_Text2)
Me.Controls.Add(m_SourceButton)
Me.Controls.Add(m_TargetButton)
Me.Controls.Add(m_Target)
Me.Controls.Add(m_Source)
Me.Controls.Add(m_Progressbar)
Me.Controls.Add(m_percent)
End Sub
Private Sub m_SourceButton_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles m_SourceButton.Click
' Quelldatei auswählen
With New OpenFileDialog
.Title = "Datei auswählen"
If .ShowDialog = Windows.Forms.DialogResult.OK Then
SourceFile = New FileInfo(.FileName)
Else
Exit Sub
End If
End With
'Quellverzeichnis im Textfeld eintragen
m_Source.Text = CStr(SourceFile.FullName)
End Sub
Private Sub m_TargetButton_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles m_TargetButton.Click
' Zielverzeichnis auswählen
With New FolderBrowserDialog
.Description = "Zielort auswählen"
If .ShowDialog = Windows.Forms.DialogResult.OK Then
Target = .SelectedPath
Else
Exit Sub
End If
End With
' Zielpfad im Textfeld eintragen
m_Target.Text = CStr(Target)
End Sub
Private Sub m_Copy_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles m_Copy.Click
' Kopiervorgang starten
Copy(SourceFile, Target)
End Sub
Private Sub Copy(ByVal SourceFile As FileInfo, ByVal Target As String)
' Progressbar anpassen
m_Progressbar.Value = 0
' Es gilt hier zu beachten, dass der Maximumwert ein Integer ist und
' daher die Length-Angabe über dem Bereich des Integer hinaus liegen kann.
' In so einem Fall müsste man den Maximumwert anders definieren
m_Progressbar.Maximum = SourceFile.Length
Try
' Quelle
Dim fsmsource As FileStream
' Zieldatei
Dim fsmtarget As FileStream
' Größe des bei jedem Durchlauf einzulesenden Datenpaketes
Dim buffersize As Int32 = 1024 * 1 ' (30 KByte)
' Enthält nacher die in buffersize angegeben Menge an
' eingelesenen Daten
Dim buffer(buffersize) As Byte
' Ermittelt die tatsächliche eingelesene Menge an Daten
' im Bytearray readbyte
Dim readbyte As Int32
' Quelldatei
fsmsource = New FileStream(SourceFile.FullName, FileMode.Open, _
FileAccess.Read, FileShare.Read)
' Zieldatei
fsmtarget = New FileStream(Target + "\" + SourceFile.Name, _
FileMode.OpenOrCreate, FileAccess.Write)
' Daten nach und nach einlesen und im Zielstream wieder zurückschreiben
While fsmsource.Position 20 MB kopieren möchte, kommt die Fehlermeldung: "die arithmetische operation hat einen überlauf verursacht"
Worin liegt der Fehler?
Über Antworten Danke ich sehr!
Grüße
Chris |