Daten Splitten und Später wieder zusammenfügen
Daten Splitten und Später wieder zusammenfügen
Diese Fragen wollte ich eigentlich schon früher stellen:
1. Wie kann ich Dateien jeweils in 1 MB Packete teilen und Später wieder zusammenfügen?
2. Wie kann ich wenn ich eine Datei von einem PC auf den anderen übertrage und die Übertragung dann unterbrochen wurde den Download von der Datei fortsetzen? (Es sollte später eine Funktionsfähige Datei herrauskommen)
Edit: Ich wäre über Codes dankbar.
Gruss, Joel
1. Wie kann ich Dateien jeweils in 1 MB Packete teilen und Später wieder zusammenfügen?
2. Wie kann ich wenn ich eine Datei von einem PC auf den anderen übertrage und die Übertragung dann unterbrochen wurde den Download von der Datei fortsetzen? (Es sollte später eine Funktionsfähige Datei herrauskommen)
Edit: Ich wäre über Codes dankbar.
Gruss, Joel
----------------------------------------------------------
PB 5.20 Beta 10 | Windows 7
PB 5.20 Beta 10 | Windows 7
hjsplit 
Nimm erstmal eine Text-Datei.
Ich würd dir ja meinen Code geben, aber der ist schmutzig
Du machst folgendes:
Zur Probe:
TextDatei schreiben und jede Zeile einzeln übertragen.
Sagen wir zehn Zeilen.
Und jede Datei bekommt eine Prüfsumme.
Nun schickst du die Dateien einzeln rüber und kannst für jede wieder schauen, ob die Prüfsumme gleich ist. Die musste natürlich auch übertragen.
Und wenn ja, dann lädst du wieder alle Zeilen aus den einzelnen Dateien und machst daraus eine.
... bei Exe und DATEN-Daten ist es etwas schwieriger.
Einige Dateien haben auch das EOF-Zeichen in sich selbst, bevor sie zu Ende sind. Ich würde immer so lange auslesen, bis eine Zählvariable gleich der Länge in Byte ist. (wenn du jedes Byte einzeln liest)
Verstanden oder Fragen?
---------------------------------------------
Pfad musste dir selbst einstellen.
Nun haste schon mal deine Dateien. Wie du die Prüfsummen der Dateien bestimmst ist dir überlassen.
Kannst zum Beispiel alle Byte-Werte addieren und das Ergebnis als letztes Byte der Datei anfügen.
Beim Überprüfen schauste dann, ob alle bis auf das letzte Byte addiert den Wert des letzten ergeben. (eine ganz ganz einfache Methode nur zum Verständnis)
Wenn es der Fall ist, fügst du alle bis auf das letzte Byte zusammen.
Sollte das Ergebnis nicht stimmen, musst du wieder einen Request starten und nach genau dieser Datei (dem Paket) fragen.
Achso: Textdatei, wenn du dich fragst, wieso nur 30 Byte

Nimm erstmal eine Text-Datei.
Ich würd dir ja meinen Code geben, aber der ist schmutzig

Du machst folgendes:
Zur Probe:
TextDatei schreiben und jede Zeile einzeln übertragen.
Sagen wir zehn Zeilen.
Und jede Datei bekommt eine Prüfsumme.
Nun schickst du die Dateien einzeln rüber und kannst für jede wieder schauen, ob die Prüfsumme gleich ist. Die musste natürlich auch übertragen.
Und wenn ja, dann lädst du wieder alle Zeilen aus den einzelnen Dateien und machst daraus eine.
... bei Exe und DATEN-Daten ist es etwas schwieriger.
Einige Dateien haben auch das EOF-Zeichen in sich selbst, bevor sie zu Ende sind. Ich würde immer so lange auslesen, bis eine Zählvariable gleich der Länge in Byte ist. (wenn du jedes Byte einzeln liest)
Verstanden oder Fragen?

---------------------------------------------
Pfad musste dir selbst einstellen.
Code: Alles auswählen
S.s="c:\F\PureBasic\2007\text.txt"
P.s=GetPathPart(S)+"_#SPLIT\"
Size= FileSize(S)
; Alle 30 Byte Splitten
CreateDirectory(P)
If OpenFile(0,S)
For x=1 To Size/30
Debug x
CreateFile(1,P+RSet(Str(x),8,"0")+".txt")
For i=1 To 30
WriteByte(1,ReadByte(0)) ; nicht die günstigste Methode
Next
CloseFile(1)
Next
CloseFile(0)
EndIf
Kannst zum Beispiel alle Byte-Werte addieren und das Ergebnis als letztes Byte der Datei anfügen.
Beim Überprüfen schauste dann, ob alle bis auf das letzte Byte addiert den Wert des letzten ergeben. (eine ganz ganz einfache Methode nur zum Verständnis)
Wenn es der Fall ist, fügst du alle bis auf das letzte Byte zusammen.
Sollte das Ergebnis nicht stimmen, musst du wieder einen Request starten und nach genau dieser Datei (dem Paket) fragen.
Achso: Textdatei, wenn du dich fragst, wieso nur 30 Byte
Zeile 1
Dings 2
Hosen runter 3
Gleich kommt die 4. Zeile
Mal schauen
Testdatei
Nichts besonderes
Nur so, etwas Text
Wo sind wir nun?
Keine Ahnung
Gut, Ende Banane

Kinder an die Macht http://scratch.mit.edu/
Dein Code ist schon recht gut, ich wollte aber Videodateien Splitten (Und vielleicht auch noch andere)Xaby hat geschrieben:Code: Alles auswählen
S.s="c:\F\PureBasic\2007\text.txt" P.s=GetPathPart(S)+"_#SPLIT" Size= FileSize(S) ; Alle 30 Byte Splitten CreateDirectory(P) If OpenFile(0,S) For x=1 To Size/30 Debug x CreateFile(1,P+RSet(Str(x),8,"0")+".txt") For i=1 To 30 WriteByte(1,ReadByte(0)) ; nicht die günstigste Methode Next CloseFile(1) Next CloseFile(0) EndIf
Ich habe mir das so vorgestellt das der Code die Videos in 2 MB Teile Splittet und es sollte halt auch bei Videos gehen.
Gruss, Joel
----------------------------------------------------------
PB 5.20 Beta 10 | Windows 7
PB 5.20 Beta 10 | Windows 7
Jaja...Xaby hat geschrieben:Ich würd dir ja meinen Code geben, aber der ist schmutzig


PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
Ich hätte nicht gedacht, dass ich mal Code veröffentliche, der hier im Forum Zuspruch findet.
zu AND51
Schau mal, welcher Lieblingsthread gesperrt worden ist
Gruß, Folker
zu AND51
Schau mal, welcher Lieblingsthread gesperrt worden ist

Gruß, Folker

Kinder an die Macht http://scratch.mit.edu/
Ist ein Guter Link aber dass Zusammenfügen klappt nochnicht: Egal was ich veränder. Es kommt immerwieder eine neue Fehlermeldung.
Edit: Und wie sag ichb dem Code dass er nicht nur eine datei und die andere Zusammenfügen soll sondern allle in dem Ordner _#SPLIT und erst die mit der Zahl 1 und dann so weiter bis es keine weitere Zahl mehr gibt!!!
Code: Alles auswählen
OpenFile(0, DestinationFile$)
*mem = AllocateMemory(PacketSize)
For i = 1 To PacketCount
OpenFile(i,"c:\Pack" + Str(i) + ".pck")
ReadData(i, *mem, PacketSize)
CloseFile(i)
WriteData(0,*mem,PacketSize)
Next
If restsize > 0
OpenFile(PacketCount+1,"c:\Pack" + Str(PacketCount+1) + ".pck")
ReadData(PacketCount+1, *mem, PacketSize)
CloseFile(PacketCount+1)
WriteData(0,*mem,Restsize)
EndIf
FreeMemory(*mem)
CloseFile(0)
----------------------------------------------------------
PB 5.20 Beta 10 | Windows 7
PB 5.20 Beta 10 | Windows 7