Hi Insider,
das geht über den Binary-Mode, d.h. Du öffnest die Datei mit Open ... For Binary und liest eine bestimmte Anzahl Bytes, die Du dann in eine neue Datei speicherst.
Das ganze mal als praktisches Beispiel:
<code><font color=green>' Datei splitten</font>
<font color=#000099>Public</font> <font color=#000099>Function</font> _
File_Split(<font color=#000099>ByVal</font> sFileToSplit <font _
color=#000099>As</font> <font color=#000099>String</font>, _
<font color=#000099>ByVal</font> sPath <font color=#000099>As</font> <font _
color=#000099>String</font>, <font color=#000099>ByVal</font> lMaxSize <font _
color=#000099>As</font> <font color=#000099>Long</font>) <font _
color=#000099>As</font> <font color=#000099>Boolean</font>
<font color=#000099>Dim</font> F <font color=#000099>As</font> <font _
color=#000099>Integer</font>
<font color=#000099>Dim</font> N <font color=#000099>As</font> <font _
color=#000099>Integer</font>
<font color=#000099>Dim</font> iFile <font color=#000099>As</font> <font _
color=#000099>Integer</font>
<font color=#000099>Dim</font> sFile <font color=#000099>As</font> <font _
color=#000099>String</font>
<font color=#000099>Dim</font> lBytesRead <font color=#000099>As</font> <font _
color=#000099>Long</font>
<font color=#000099>Dim</font> lBytesTotal <font color=#000099>As</font> _
<font color=#000099>Long</font>
<font color=#000099>Dim</font> lBytesToRead <font color=#000099>As</font> _
<font color=#000099>Long</font>
<font color=#000099>Dim</font> lBytesWritten <font color=#000099>As</font> _
<font color=#000099>Long</font>
<font color=#000099>Dim</font> bNewFile <font color=#000099>As</font> <font _
color=#000099>Boolean</font>
<font color=#000099>Dim</font> sInhalt <font color=#000099>As</font> <font _
color=#000099>String</font>
<font color=green>' maximale Größe, die auf einen Schlag gelesen wird</font>
<font color=#000099>Const</font> lBytesBlock <font color=#000099>As</font> _
<font color=#000099>Long</font> = 32767
<font color=green>' Orginaldatei im Binärmodus öffnen</font>
F = FreeFile: <font color=#000099>Open</font> sFileToSplit <font _
color=#000099>For</font> <font color=#000099>Binary</font> <font _
color=#000099>As</font> #F
<font color=green>' Neuer Dateinamen</font>
<font color=green>' dateiname.000, dateiname.001 usw.</font>
sFile = sFileToSplit
<font color=#000099>If</font> InStr(sFile, "\") > 0 <font _
color=#000099>Then</font> _
sFile = Mid$(sFile, InStrRev(sFile, "\") + 1)
<font color=#000099>If</font> InStr(sFile, ".") > 0 <font _
color=#000099>Then</font> _
sFile = Left$(sFile, InStrRev(sFile, ".") - 1)
<font color=green>' Pfadangabe auf abschließenden Backslash prüfen</font>
<font color=#000099>If</font> Right$(sPath, 1) <> "\" <font _
color=#000099>Then</font> sPath = sPath & "\"
<font color=green>' Größe der Originaldatei ermitteln</font>
lBytesTotal = LOF(F)
<font color=green>' Datei einlesen:</font>
<font color=green>' solange gelesen Bytes < Gesamtgröße</font>
bNewFile = <font color=#000099>True</font>: iFile = -1
<font color=#000099>Do</font> <font color=#000099>While</font> lBytesRead < _
lBytesTotal
<font color=green>' Anzahl zu lesender Bytes</font>
lBytesToRead = lBytesBlock
<font color=green>' Falls weniger Bytes zu lesen sind (Dateiende)</font>
<font color=#000099>If</font> lBytesRead + lBytesToRead > lBytesTotal <font _
color=#000099>Then</font>
lBytesToRead = lBytesTotal - lBytesRead
<font color=#000099>End</font> <font color=#000099>If</font>
<font color=green>' Prüfen, ob maximale Teilgröße erreicht wird</font>
<font color=#000099>If</font> lBytesWritten + lBytesToRead > lMaxSize <font _
color=#000099>Then</font>
lBytesToRead = lMaxSize - lBytesWritten
<font color=#000099>End</font> <font color=#000099>If</font>
<font color=#000099>If</font> <font color=#000099>Not</font> bNewFile <font _
color=#000099>Then</font> bNewFile = (lBytesToRead = 0)
<font color=green>' neue Datei öffnen</font>
<font color=#000099>If</font> bNewFile <font color=#000099>Then</font>
<font color=green>' ggf. vorige Datei scließen</font>
iFile = iFile + 1
<font color=#000099>If</font> N > 0 <font color=#000099>Then</font> <font _
color=#000099>Close</font> #N
N = FreeFile
<font color=#000099>Open</font> sPath & sFile & "." & Format$(iFile, _
"000") _
<font color=#000099>For</font> <font color=#000099>Output</font> <font _
color=#000099>As</font> #N
lBytesWritten = 0
bNewFile = <font color=#000099>False</font>
<font color=#000099>End</font> <font color=#000099>If</font>
<font color=green>' Inhalt lesen + speichern</font>
<font color=#000099>If</font> lBytesToRead > 0 <font _
color=#000099>Then</font>
sInhalt = Space$(lBytesToRead)
<font color=#000099>Get</font> #F, , sInhalt
<font color=#000099>Print</font> #N, sInhalt;
<font color=green>' Anzahl gelesener + geschriebener Bytes</font>
<font color=green>' aktualisieren</font>
lBytesRead = lBytesRead + lBytesToRead
lBytesWritten = lBytesWritten + lBytesToRead
<font color=#000099>End</font> <font color=#000099>If</font>
<font color=#000099>Loop</font>
<font color=green>' alle Dateien schließen</font>
<font color=#000099>If</font> F > 0 <font color=#000099>Then</font> <font _
color=#000099>Close</font> #F
<font color=#000099>If</font> N > 0 <font color=#000099>Then</font> <font _
color=#000099>Close</font> #N
<font color=#000099>End</font> <font color=#000099>Function</font></code> Aufruf der Funktion::
File_Split "Originaldatei.exe", "d: emp\", 1440000 Cu
Dieter |