Thema Datum  Von Nutzer Rating
Antwort
Rot Fortschrittsanzeige mit Prozessbalken
08.05.2010 15:15:40 Chris
NotSolved

Ansicht des Beitrags:
Von:
Chris
Datum:
08.05.2010 15:15:40
Views:
1589
Rating: Antwort:
  Ja
Thema:
Fortschrittsanzeige mit Prozessbalken
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

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Fortschrittsanzeige mit Prozessbalken
08.05.2010 15:15:40 Chris
NotSolved