Aktualisiert: 18.05.2007
Newest
  Tipps & Tricks
1.) Anpassung Controls an ein Formular (VB6)
2.) Kopier-Wiederaufnahme (VB6)
3.) Uhrzeit - alle Kürzel (VB6)
4.) Eigene IP-Addresse auslesen (VB6)
5.) Felder - Arrays (allgemeines, deklarieren) (VB.NET)
  Tutorials
1.) Prüfziffernverfahren österreichischer Sozialversic (VB6)
2.) Kommunikation zwischen Formularen bzw. Modulen (VB.NET)
3.) Musikdatein mittels API abspielen (VB6)
4.) Inputbox mit zusätzlichem Button (VB6)
5.) Access & MySQL | Teil 2/2 (VB6)
  Neueste Kommentare
  (letzten 50)
Thomas(21.02.2007 - 14:03)
Dag Johans..(16.11.2006 - 03:44)
Sebi2020(20.10.2006 - 21:43)
Suchen


Grundlagen  (20) | Grafik  (9) | Dateisystem  (9) | Multimedia  (3) | Datenbank  (5)
Drucker  (7) | System  (12) | Internet  (2) | Controls  (16) | Sonstiges  (12)
 95 Tipps & Tricks in der Datenbank 
 Dateisysteme > Kopier-Wiederaufnahme     Kommentar schreiben/ansehen  |  von VFensterB 
Kopier-Wiederaufnahme

Erstellen Sie ein Projekt mit der Form frmCopy, Beschreibung in Klammern:
drei Textboxen: txtFileIn ("Quelle"), txtFileOut ("Ziel"), txtPaket ("Packet-Größe")
drei Commandbuttons: cmdCopy ("Kopieren"), cmdEnd ("Ende"), cmdCancel ("Absturz")

Fügen Sie folgenden Code in dir Form ein:
Option Explicit


Private Declare Sub FatalAppExit Lib "kernel32.dll" Alias "FatalAppExitA" ( _
ByVal uAction As Long, _
ByVal lpMessageText As String)

Private Sub EndAll() 'siehe dazugehöriger Tipp
Dim frm As Form

For Each frm In VB.Forms
Unload frm
Set frm = Nothing
Next frm

End Sub

Private Sub SecCopyFile(Optional StartPos As Currency)
Dim FF1 As Integer, FF2 As Integer, FF3 As Integer
Dim strChars As String
Dim intPaket As Long
Dim i As Currency

intPaket = Val(txtPaket.Text)

'### Speichern des Status
SaveSetting App.Title, "Recovery", "Status", "1"
SaveSetting App.Title, "Recovery", "FileIn", txtFileIn.Text
SaveSetting App.Title, "Recovery", "FileOut", txtFileOut.Text
SaveSetting App.Title, "Recovery", "PaketSize", txtPaket.Text
'### Dateien öffnen
FF1 = FreeFile
Open txtFileIn.Text For Binary Access Read As #FF1
FF2 = FreeFile
Open txtFileOut.Text For Binary Access Write As #FF2
'### Daten schreiben
For i = 1 To LOF(FF1) Step intPaket 'Pakete einlesen
If i = 1 And StartPos > 0 Then i = StartPos 'Forsetzen?
Me.Caption = i & " / " & LOF(FF1) & " Bytes kopiert" 'optional
SaveSetting App.Title, "Recovery", "Position", i
If (LOF(FF1) - intPaket) < (LOF(FF2)) Then 'Wenn kein ganzes Paket mehr zum Auslesen
strChars = Space(LOF(FF1) - LOF(FF2)) 'auf restliche Zeichen beschränken
Else
strChars = Space(intPaket) 'sonst Paketgröße einlesen
End If
Get #FF1, i, strChars 'Auslesen aus Quelldatei
Put #FF2, i, strChars 'Schreiben in Zieldatei
DoEvents
Next i
Me.Caption = LOF(FF2) & " / " & LOF(FF1) & " Bytes kopiert" 'optional
Close #FF3, #FF2, #FF1
SaveSetting App.Title, "Recovery", "Status", "0"

End Sub

Private Sub cmdCancel_Click()
FatalAppExit 0&, "Laufendender Kopiervorgang wirksam unterbrochen"

End Sub

Private Sub cmdCopy_Click()
SecCopyFile

End Sub

Private Sub cmdEnd_Click()
EndAll

End Sub

Private Sub Form_Load()
If GetSetting(App.Title, "Recovery", "Status") = "1" Then 'Wenn abgestürzt...
If MsgBox("Letzten Transfer fortsetzen?", vbYesNo + vbQuestion) = vbNo Then
'Transfer fortsetzen

SaveSetting App.Title, "Recovery", "Status", "0"
Exit Sub
End If
Me.Show
'### Alten Status ins Programm übertragen
txtFileIn.Text = GetSetting(App.Title, "Recovery", "FileIn")
txtFileOut.Text = GetSetting(App.Title, "Recovery", "FileOut")
txtPaket.Text = GetSetting(App.Title, "Recovery", "PaketSize")
SecCopyFile CCur(GetSetting(App.Title, "Recovery", "Position"))
Else
txtPaket.Text = "10240"
End If

End Sub

Private Sub txtFileIn_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, _
Shift As Integer, X As Single, Y As Single)

On Error Resume Next
If (Data.Files.Count > 0) And _
(Dir(Data.Files(1)) <> "") Then 'Auf gültige Datei prüfen

txtFileIn.Text = Data.Files(1) 'und einfügen
End If

End Sub

Die Quelldatei wird in Packeten eingelesen und in die Zieldatei geschrieben. Die Packetgröße kann mit txtPaket angegeben werden. Beim Start des Kopiervorgangs werden die Einstellungen gespeichert, bei jedem Schreiben eines Paketes der Fortschritt. Am Ende wird der Status als "fertig" ("0") gesichert.
Sollte beim Starten des Programmes der Status "nicht beendet" ("1") sein, wird das Kopieren mit den gesicherten Einstellungen fortgesetzt.
dazugefügt am: 21.07.2004 | bereits betrachtet: 15576 mal   


 6 Kommentare      TOP  
Name:  
Email:  
Kommentar:  
   
 6.)  MiB  schrieb am 12.10.2005
Nichts gegen dich, aber erstens habe ich das nicht geschrieben, zweitens steht am Anfang was man alles braucht. Ja ja, lesen ist eben sehr wichtig.
 5.)  Tommy  schrieb am 08.10.2005
du hast nicht geschrieben was man braucht ein festen text oder ne text box wo man später rein schreiben kann also ziemlich dumm
 4.)  MiB  schrieb am 07.10.2005
Was hat denn nicht geklappt?
 3.)  Tommy  schrieb am 01.10.2005
Also da klappt echt garnichts habe alles ausprobiert und nichts klappt
 2.)  VFensterB  schrieb am 14.08.2004
Danke für den Hinweis, ein Übertragungsfehler. Fragen und Hinweise bitte im Forum posten, danke.
 1.)  aja  schrieb am 14.08.2004
Was ist denn das: [> Fast ganz unten im if()
Empfehlen Sie diese Seite | zu Favoriten hinzufügen  Copyright 2004 by visualbasic.at