Was ist daran Falsch?

CoderX

Mitglied
Hallo Leute

was is hier dran falsch :

Code:
Private Sub ByteCopy(bytes, quelle, ziel) 
Dim i&, puffer() As Byte 
ReDim puffer(1 To 32768) 
For i = 0 To bytes - 1 Step 32768 
If bytes - i < 32768 Then ReDim puffer(1 To bytes - i) 
Get quelle, , puffer 
Put ziel, , puffer 
Next i 
End Sub 

Private Function OhnePfad$(dateiname) 
Dim p& 
Do 
OhnePfad = Mid$(dateiname, p + 1) 
p = InStr(p + 1, dateiname, "\") 
If p = 0 Then Exit Function 
Loop 
End Function 

Private Function Zieldateiname(quelle) 
Dim p& 
While InStr(p + 1, quelle, ".") <> 0 
p = InStr(p + 1, quelle, ".") 
Wend 
If p = 0 Then 
Zieldateiname = "." 
Else 
Zieldateiname = Left$(quelle, p) 
End If 
End Function 

Private Function DateinameErmitteln() 
On Error Resume Next 
cmdDialog.CancelError = True 
cmdDialog.DialogTitle = "Datei auswählen" 
cmdDialog.Flags = cdl0FNFileMustExist 
cmdDialog.ShopOpen 
On Error GoTo 0 
If Error Then Exit Function 
DateinameErmitteln = cmdDialog.FileName 
End Function 

Private Function DateigrößeErmitteln() 
If Val(textDateigröße.Text) <= 0 Then 
DateigrößeErmitteln = 0 
MsgBox "Bitte gib eine gültige Dateigröße an", vbInformation, "Fehler" 
textDateigröße.SetFocus 
Else 
DateigrößeErmitteln = 1024 * Val(textDateigröße.Text) 
End If 
End Function 

Private Sub buttonKopieren_Click() 
Dim quelle$, max&, ziel$, zieln$, batch$ 
Dim p&, i$, laenge& 
MousePointer = 11 
ziel = Zieldateiname(quelle) 
batch = ziel + "bat" 
Open quelle For Binary As 1 
Open batch For Output As 2 
Print #2, "copy /b"; 
i = 1 
zieln = ziel + Format$(i, "000") 
labelInfo.Caption = "Kopiere Daten nach " & zieln 
Refresh 
If Dir$(zieln) <> "" Then 
Kill zieln 
End If 
Open zieln For Binary As 3 
If laenge - p < max Then 
ByteCopy laenge - p, 1, 3 
Else 
ByteCopy max, 1, 3 
End If 
Close 3 
If i > 1 Then Print #2, " + "; 
Print #2, OhnePfad(zieln); 
i = i + 1 
Next p 
Close 1 
Print #2, " " + OhnePfad(quelle) 
Close 2 
labelInfo.Caption = "" 
MousePointer = 0 
Refresh 
End Sub 
Dim quelle&, max&, laenge& 
max = DateigrößeErmitteln() 
If max <= 0 Then Exit Sub 
quelle = DateinameErmitteln() 
If quelle = "" Then Exit Sub 
laenge = FileLen(quelle) 
If laenge < max Then 
MsgBox "Die ausgefählte Datei ist kleiner als die " + " angegebene Dateigröße. Kein Split erforderlich." 
Exit Sub 
End If 
Dim max& 
max = DateigrößeErmitteln() 
If max <= 0 Then Exit Sub 
End Sub 


Private Sub Timer1_Timer() 
lblTime.Caption = Now 
End Sub
 
Vielleicht verrätst du uns auch wo der Fehler kommt bzw. was der Code machen soll....
Code:
Private Sub ByteCopy(bytes, quelle, ziel) 
 
Nebenbei bemerkt, mit 
Dim i&, puffer() As Byte 
deklarierst du "i" doch als Integerwert (oder nicht?), in der Schleife
gehst du aber sehr warscheinlich über den Integer-Maximalwert hinaus!
ReDim puffer(1 To 32768) 
For i = 0 To bytes - 1 Step 32768 
If bytes - i < 32768 Then ReDim puffer(1 To bytes - i) 
Get quelle, , puffer 
Put ziel, , puffer 
Next i 
End Sub
 
ich wollte nin filesplitter machen

das größere dateien auch auf ne diskette passen

hier bleibt er hängen wenn ich starten will

Code:
Private Sub buttonKopieren_Click()
Dim quelle$, max&, ziel$, zieln$, batch$
Dim p&, i$, laenge&
MousePointer = 11
ziel = Zieldateiname(quelle)
batch = ziel + "bat"
Open quelle For Binary As 1
Open batch For Output As 2
Print #2, "copy /b";
i = 1
zieln = ziel + Format$(i, "000")
labelInfo.Caption = "Kopiere Daten nach " & zieln
Refresh
If Dir$(zieln) <> "" Then
Kill zieln
End If
Open zieln For Binary As 3
If laenge - p < max Then
ByteCopy laenge - p, 1, 3
Else
ByteCopy max, 1, 3
End If
Close 3
If i > 1 Then Print #2, " + ";
Print #2, OhnePfad(zieln);
i = i + 1
Next p
Close 1
Print #2, " " + OhnePfad(quelle)
Close 2

bei "next p" zeigt er nin fehler an
 
Hi CoderX

also wenn das Dein ursprünglicher Code ist, kann er natürlich nicht funktionieren. Die Anweisung Next p setzt voraus, dass Du auch irgendwo mal ein "For p= Start To Ende" gesetzt hast. Und dann sollte das auch funktionieren.

Gruß
Das Orakel
 
"Next ohne For"

das soll wohl fehlen, habs mir aber nochmal angeguckt das muss so gehen

und das mit dem 32768 das is nur dafür gedacht die zahl is extra so groß weil er ja die bat datei schreiben muss
 
Und wenn Du es zig mal nachliest. Wenn die Fehlermeldung "Next ohne For" ist, fehlt Dir wie von mir bereits geschrieben die For Anweisung.

Gruß
Das Orakel
 
ne, jaja lacht mich ruhig aus

kauf mir bald das buch "Visual Basic 6" von Michael Höffner oder wie der heißt

könnt ihr mir net sagen was ich da jezz schreiben muss?

hab echt noch kein plan so richtig von vb
 
Zurück