"Daten-Zusammenfasser" bauen? [GELÖST]
Übersicht

CO2ehemals "SirMO"Betreff: "Daten-Zusammenfasser" bauen? [GELÖST] |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
HalliHallo,
Ich komme mal wieder mit einem Problem zu euch, und zwar: Kann man über eine (selbstgeschriebene/von BB vorgegebene) Funktion Dateien zusammenfassen? also nicht archivieren, sondern z.b.: 5 Dateien ( 1 x Bild1.png 1 x Bild2.png 1 x Stats.txt 1 x Position.txt 1 x other.txt) zu einer machen (save1.zsp), welche man nun mit BB öffnet und dann z.b. über: Code: [AUSKLAPPEN] Zeile1 = ReadLine("save1.zsp\Bild1.png") genau das erste Bild aus der Datei öffnen kann? Ich brauche das, weil ich zum beispiel bei meinem Projekt "Z.O.M.B.I.E" verschiedenste Dateien speichern will, die dann aber nicht "ungeordnet" im "save"-Ordner landen sollen...
Ich weiß schon, dass man für sowas 7zip (oder wie das heißt) nehmen kann, möchte aber lieber eine Programm-Interne Funktion dafür schreiben... Achja, bisher bin ich soweit gekommen: Code: [AUSKLAPPEN] SummerizeData("wichtige daten.txt", "datei\data1.data")
SummerizeData("wichtige daten2.txt", "datei\data1.data") Print "Fertig" WaitKey() End Function SummerizeData(file$, file2$) Local lesen = OpenFile(file$) Local SummerizedFile = WriteFile(file2$) Repeat WriteLine SummerizedFile, ReadLine(lesen) Until Eof(lesen) CloseFile SummerizedFile CloseFile lesen End Function Leider macht er wie ihm geheißen und löscht den Inhalt der datei die zuerst geschrieben wurde und setzt dafür den Inhalt der zweiten datei ein, bsp.: wichtige daten.txt Code: [AUSKLAPPEN] 1
2 3 4 wichtige daten2.txt Code: [AUSKLAPPEN] 5
6 67 67 7 datei\data1.data Code: [AUSKLAPPEN] 6
67 67 7 Was noch zu beheben wäre: 1. data1.data müsste das enthalten Code: [AUSKLAPPEN] 1
2 3 4 6 67 67 7 2. Bilder und andere Dateien müssten auch noch zusammengefasst werden, ich habe da so an ReadByte gedacht, aber dann bekommt er bei jpg-dateien nen MAV... 3. Nach dem Zusammenfassen müssen die dateien natürlich auch wieder geöffnet und gelesen werden... Bin echt ratlos ![]() Wäre für jede Hilfe Dankbar, mfG, SirMO |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
- Zuletzt bearbeitet von CO2 am Fr, Okt 29, 2010 13:54, insgesamt einmal bearbeitet
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also von Blitz3D aus gehts net, mach es mal so dass du dir die Dateien einfach alle in eine Datei speicherst, und zwar so (dass soll in der Datei stehen)
Code: [AUSKLAPPEN] Dateiname1 [Bytes von Datei1]
DateiName 2 [Bytes von Datei2] Dann, wenn du es Brauchst, musst du die Dateien Temporär entpacken (also wieder in einzellne Dateien schreiben), Laden und wieder entfernen... Sonst musst du mal nach einem guten Packen für Blitz suchen, ich glaub da gab es einen, aber der name fällt mir grad nicht ein .... Wo du sogar deine Dateien komprimieren konntest... mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: Dann, wenn du es Brauchst, musst du die Dateien Temporär entpacken (also wieder in einzellne Dateien schreiben), Laden und wieder entfernen...
Also quasi mit "WriteFile" und so, oder wie? Thx |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
schau dir nochmal den Unterschied von OpenFile![]() ![]() ![]() Die Funktionen von Blitz können leider nur von der Festplatte lesen. Du musst also deine Datei kurz entpacken und nach dem Lesen(ReadFile, LoadImage, etc) wieder löschen. |
||
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok,
Aber wenn ich jetzt davon ausgehe, Bilder ebenfalls zu speichern - z.b. ein jpg - Bild - was enthält denn das? Also Bytes, Strings, Ints, Shorts, stc.? Ich habe nämlich bei einem .jpg-Bild versucht Bytes zu lesen, da gab es nen MAV .bmp sagt ja schon der Name (-> BITmap) - apropos kann man Bits mit BB lesen oder gehen nur Bytes als kleinste "Einheit" Und nochmal mit dem Temporären entpacken - brauche ich dafür nicht ein prog wie 7zip? Und wenn nicht, kann mir jmd von euch einen klitzekleinen Denkanstoss geben? z.b. wie man die dateien temporär öffnet (mit readbyte, readstring, etc. ?) thx |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Computer speichern 0en und 1en. Ob so eine Folge als Integer, Float oder String interpretiert werden soll, muss im Dateiformat/vom Programmierer festgelegt werden. Wenn du nur mit Bytes arbeitest, solltest du keine Probleme bekommen.
Bits kannst du nicht direkt lesen, aber sicher könntest du die ansteuern. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe jetzt folgendes zusammengeschustert:
Code: [AUSKLAPPEN] Apptitle "Skynet v.0.0.1" ;dem ganzen einen namen geben :wink: :D
SummerizeData("wichtige daten.txt", "datei\datei.data", 1) ;1. file (wichtige daten.txt) SummerizeData("wichtige daten2.txt", "datei\datei.data", 2) ;2. file (wichtige daten2.txt) Print "Fertig" WaitKey() End Function SummerizeData(file$, dataname$, startmarke) Local JumpTo = 0 ;wird später gebraucht Local lesen = ReadFile(dataname$) ;Zusammengefasste Datei überprüfen If lesen > 0 Then ;wenn sie existiert, dann überprüfen wieviele bytes übersprungen werden müssen Repeat ReadByte lesen JumpTo = JumpTo + 1 Until Eof(lesen) EndIf SeekFile lesen, JumpTo ;entsprechend springen Local SummerizedFile = OpenFile(file) ;2. datei öffnen WriteByte lesen, startmarke ;start-, sowie WriteByte lesen, JumpTo ;endmarke eintragen Repeat WriteByte lesen, ReadByte(SummerizedFile) ;daten reinschreiben Until Eof(SummerizedFile) CloseFile SummerizedFile CloseFile lesen ;beide dateien schließen End Function So, dabei bekomm ich erstmal nen MAV... Aber wenn ihr es testen wollt: wichtige daten.txt (damit ihr es testen könnt): Code: [AUSKLAPPEN] 1
2 3 4 4 5 65 45 4 32 2 23 3 43 wichtige daten2.txt Code: [AUSKLAPPEN] 3
4 455 5 So, ich habe jetzt mal ein bisschen weitergearbeitet und zum lesen folgende Funktion entworfen: Code: [AUSKLAPPEN] Function ReadSummerizedData(dataname$, startmarke)
Local lesen = OpenFile(dataname$) Local suchestartmarke$ Local zeilen$ While suchestartmarke <> startmarke suchestartmarke$ = ReadLine$(lesen) Wend zeilen$ = ReadLine$(lesen) Dim gelesen(zeilen) For x = 0 To zeilen gelesen(x) = ReadByte(lesen) Next CloseFile lesen Return gelesen End Function Jetzt meldet er "arraya not found in main programm!", wenn ich das array aber ins mainprog packe, weiß ich ja nicht wie viele stellen ich brauche... Bin absolut ratlos - was beide funktionen angeht. |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Array not found kommt daher, das das Array im Main-Programm nicht definiert ist. Schreib dort einfach Dim gelesen(0) und schon hast Du ein Problem weniger. Weiter versuchst Du datei.data zu lesen in der Function, die aber noch gar nicht erstellt wurde. Darauf bleibt "lesen" natürlich 0, was bei SeekFile nicht überprüft wird -> Peng. | ||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ahh, jetzt lichtet sich der nebel so langsam ![]() ich habe den Code überarbeitet: Zusammenfassungsfunktion: Code: [AUSKLAPPEN] Function SummerizeData(file$, dataname$, startmarke$ = file$) ;<-- Wie geht das nochmal mit dem Wert der nicht zwingend eingetragen werden muss?
Local JumpTo = 0 ;wird später gebraucht Local lesen = ReadFile(dataname$) ;Zusammengefasste Datei überprüfen If lesen > 0 Then ;wenn sie existiert, dann überprüfen wieviele bytes übersprungen werden müssen Repeat ReadByte lesen JumpTo = JumpTo + 1 Until Eof(lesen) Else lesen = WriteFile(dataname$) EndIf SeekFile lesen, JumpTo ;entsprechend springen Local SummerizedFile = OpenFile(file) ;2. datei öffnen WriteByte lesen, startmarke ;start-, sowie WriteByte lesen, JumpTo ;endmarke eintragen Repeat WriteByte lesen, ReadByte(SummerizedFile) ;daten reinschreiben Until Eof(SummerizedFile) CloseFile SummerizedFile CloseFile lesen ;beide dateien schließen End Function Les-Funktion: Code: [AUSKLAPPEN] Function ReadSummerizedData(dataname$, startmarke$)
Local lesen = OpenFile(dataname$) ;Zusammengefasste Datei öffnen Local suchestartmarke$ ;später Local zeilen ;später If lesen > 0 Then ;Wenn die datei gefunden wurde While suchestartmarke$ <> startmarke$ ;Suche die angegebene Startmarke suchestartmarke$ = ReadLine$(lesen) Wend Else ;wenn die datei nicht gefunden wurde RuntimeError "File not found" ;Error ausgeben EndIf zeilen = Int(ReadLine$(lesen)) ;Anzahl der bytes lesen (JumpTo aus der Summerize-Funktion) ;gelesen(zeilen) ;Array erhöhen For x = 0 To zeilen gelesen(x) = ReadByte(lesen) ;Daten lesen bis das die angegebene anzahl an bytes erreicht wurde Next CloseFile lesen ;File wieder Schließen End Function Code der beide Funktionen einschließt: Code: [AUSKLAPPEN] Dim gelesen(0)
Print "Zusammenfassen: " SummerizeData("wichtige daten.txt", "datei.data") DebugLog "File 1 ok!" Print "Datei 1 Zusammengefasst" SummerizeData("wichtige daten2.txt", "datei.data") DebugLog "File 2 ok!" Print "Datei 2 Zusammengefasst" SummerizeData("svz.jpeg", "datei.data") DebugLog "File 3 ok!" Print "Datei 3 Zusammengefasst" SummerizeData("optionen.txt", "datei.data") DebugLog "File 4 ok!" Print "Datei 4 Zusammengefasst" Print "" Print "Wieder auseinander: " Print "" Print "Datei 1: " + ReadSummerizedData("datei.data", "wichtige daten.txt") Print "" WaitKey() End Und wie geht das, wenn der Wert einer Varable nicht unbedingt eingetragen werden muss? Also z.b.: bei der "Graphics"-Funktion, da müssen "[depth]" und "[mode]" nicht eingetragen werden? Und jetzt wieder das alte problem mit dem überschreiben... thx schonmal im vorraus ;D |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
- Zuletzt bearbeitet von CO2 am Do, Sep 30, 2010 14:24, insgesamt einmal bearbeitet
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hay.
Du brauchst nicht jedes byte extra auslesen. Benutze dazu ReadBytes und Banken. Ich habe mal im Codearchiv ein Beispiel gemacht wie sowas functionieren könnte. Vieleicht kannst du es gebraucen. ![]() https://www.blitzforum.de/foru...hp?t=35802 |
||
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Thx, werd mir den Code mal anschauen ;D | ||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, ich erkläre mal, wie ich dich verstanden habe:
Du willst deinem Programm nicht per Code sagen müssen welche Bilder es laden soll, sondern das ganze automatisieren? Wenn dem so ist, dann hätte ich hier was für dich, ohne jetzt Werbung machen zu wollen. Ist zwar in BMax geschrieben aber ich denke, dass du keine Probleme haben wirst das in B3D umzuschreiben. Das einzige was du machen musst, wenn du das implementiert hast, ist künftig entsprechende Dateien vorher anständig zu benennen und zwei Funktionen aufzurufen. Lg, M0rgenstern |
||
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Doch, doch, ich möchte meinem Programm schon sagen, welches Bild es laden soll, es soll nur mehrere unterschiedliche Dateien zu einer Zusammengefassten Datei speichern - Das mit dem Bild sollte eig. nur Darstellen, dass es halt ganz unterschiedliche Dateien sein können.
Die Funktion wird natürlich noch dahingehend verändert, dass es anhand der Endung der Datei die zu der Zusammengefassten Datei hinzugefügt werden soll, erkennt, wie sie zu speichern und zu öffnen ist (WriteByte, WriteLine, etc.) Ich bin momentan noch sehr am rumwerkeln was die Funktion angeht, zumal ich nicht weiß, wie man ein ganzes array returnt... So, die Speicher-Funktion wurde jetzt so überarbeitet,dass sie schonmal fehlerfrei läuft (getestet bei 2 .txt-dateien): Code: [AUSKLAPPEN] Function SummerizeData(file$, dataname$, startmarke$)
Local JumpTo = 0 ;wird später gebraucht Local lesen = OpenFile(dataname$) ;Zusammengefasste Datei überprüfen If lesen > 0 Then Repeat ReadByte lesen JumpTo = JumpTo + 1 Until Eof(lesen) Else lesen = WriteFile(dataname$) EndIf Local SummerizedFile = ReadFile(file) ;2. datei öffnen SeekFile lesen, JumpTo ;entsprechend springen WriteByte lesen, startmarke ;start-, sowie WriteByte lesen, JumpTo ;endmarke eintragen Repeat WriteByte lesen, ReadByte(SummerizedFile) ;daten reinschreiben Until Eof(SummerizedFile) CloseFile SummerizedFile CloseFile lesen ;beide dateien schließen End Function |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
- Zuletzt bearbeitet von CO2 am Do, Sep 30, 2010 15:27, insgesamt einmal bearbeitet
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Möglichkeit, die du genommen hast ist nicht optimal, weil du Binärdaten archivierst (Bilddateien, Musikdateien etc. sind in einem Binärformat gespeichert, d.h. sie können alle ASCII-Werte von 0 bis 255 enthalten).
Es ist möglich, wenn auch sehr unwahrscheinlich, dass durch gewisse Umstände in der PNG-Datei der String "irgendeinandererdateiname.endung"+Chr(13)+Chr(10) entsteht. Wenn das passiert bekommst du die ganze Zeit Fehler und weißt nicht woher die kommen. Eine Möglichkeit um das Problem zu lösen ist ein Header am Anfang der Datei, wie bei den FAT-Dateisystemen. In dem würdest du dann die Dateinamen mit den zugehörigen Positionen in der zusammengefassten Datei speichern. Dazu:
mfg Thunder |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen Dank, Thunder, aber das wird sich erstmal nicht ändern, da ich erst beide Funktionen zum laufen kriegen muss...
Schreibfunktion (Soweit Funktionstüchtig - kann auch Bilder in einer Datei zusammenfassen): Code: [AUSKLAPPEN] Function SummerizeData(file$, dataname$, startmarke$)
Local JumpTo = 0 ;wird später gebraucht Local lesen = OpenFile(dataname$) ;Zusammengefasste Datei überprüfen Local bytes = 0 If lesen > 0 Then Repeat ReadByte lesen JumpTo = JumpTo + 1 Until Eof(lesen) Else lesen = WriteFile(dataname$) EndIf Local SummerizedFile = ReadFile(file) ;2. datei öffnen Repeat ReadByte SummerizedFile bytes = bytes + 1 Until Eof(SummerizedFile) SeekFile lesen, JumpTo ;entsprechend springen WriteLine lesen, "" ;Leerzeichen WriteLine lesen, startmarke ;start-, sowie WriteLine lesen, bytes ;endmarke eintragen WriteLine lesen, Right$(file$, 4) ;Endung der Datei eintragen Repeat WriteByte lesen, ReadByte(SummerizedFile) ;daten reinschreiben Until Eof(SummerizedFile) CloseFile SummerizedFile CloseFile lesen ;beide dateien schließen End Function Lese-Funktion (Funktioniert bei .txt dateien, gibt aber leider nur eine Zeile aus, muss nochmal wegen return schauen): Code: [AUSKLAPPEN] Function ReadSummerizedData(dataname$, startmarke$)
Local lesen = OpenFile(dataname$) ;Zusammengefasste Datei öffnen Local suchestartmarke$ ;später Local Sprung = 0 Local bytes ;später Local endung$ ;später If lesen > 0 Then ;Wenn die datei gefunden wurde While suchestartmarke$ <> startmarke$ ;Suche die angegebene Startmarke suchestartmarke$ = ReadLine$(lesen) Sprung = Sprung + 1 Wend Else ;wenn die datei nicht gefunden wurde RuntimeError "File not found" ;Error ausgeben EndIf SeekFile(lesen, Sprung) bytes = ReadLine$(lesen) ;Anzahl der bytes lesen (Variable "bytes" aus der Summerize-Funktion) endung = ReadLine$(lesen) ;Endung auslesen For x = 0 To bytes Print ReadLine(lesen) Next CloseFile lesen ;File wieder Schließen End Function apropos kann man arrays returnen? Wenn ja, wie? |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sorry wegen Doppelpost, aber sonst wird ja nicht angezeigt, dass sich hier was geändert hat...
Ich habe die Write-Funktion jetzt überarbeitet: Code: [AUSKLAPPEN] Function SummerizeData(file$, dataname$, startmarke$)
Local JumpTo = 0 ;wird später gebraucht Local lesen = OpenFile(dataname$) ;Zusammengefasste Datei überprüfen Local bytes Local gespeichertebytes = 0 If lesen > 0 Then Repeat ReadByte lesen JumpTo = JumpTo + 1 Until Eof(lesen) Else lesen = WriteFile(dataname$) EndIf CloseFile lesen Local schreiben = OpenFile(dataname$) SeekFile(schreiben, JumpTo) ;entsprechend springen Local SummerizedFile = ReadFile(file) ;2. datei öffnen WriteLine schreiben, startmarke ;start-, sowie WriteLine schreiben, AnzahlBytes(file) ;endmarke eintragen WriteLine schreiben, Right$(file$, 4) ;Endung der Datei eintragen While gespeichertebytes < bytes WriteByte lesen, ReadByte(SummerizedFile) ;daten reinschreiben gespeichertebytes = gespeichertebytes + 1 Wend CloseFile SummerizedFile CloseFile schreiben ;beide dateien schließen End Function ...leider schreibt er jetzt gar nichts mehr in die Datei (außer "startmarke", "Größe in Bytes" und "Endung") könnt ihr mir sagen woran das liegt? Habe ich keine Ahnung, schon alles mögliche ausprobiert, leider tut sich da nichts, thx schonmal im vorraus, mfG SirMO |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
![]() |
das wurgel |
![]() Antworten mit Zitat ![]() |
---|---|---|
nabend
Schau dir mal FileSize ![]() Zitat: Code: [AUSKLAPPEN]
While gespeichertebytes < bytes bytes ist nicht initialisiert. Deswegen kommt nichts rein. Zitat: Code: [AUSKLAPPEN]
SeekFile(lesen, Sprung) in Sprung zählst du die Zeilen, mit SeekFile setzt du die Byte-Position. Außerdem ist es unsinnig, daten wie Bilder mit ReadLine durchzugehen. Das kann zu sehr seltsamen Problemen führen. Du brauchst es ja auch garnicht, weil die Deteigröße der darauffolgenden Datei ja vorher in der Datei steht, du kannst die Daten also überspringen falls nötig und beim nächsten Header wieder prüfen, ob es die richtige Datei ist usw.. Das würde auch das Problem mit der Sprung-Variable lösen. |
||
1 ist ungefähr 3 |
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok, habs jetzt überarbeitet, tut sich aber leider immernoch nichts...
Code: [AUSKLAPPEN] Function SummerizeData(file$, endung$, dataname$, startmarke$)
Local JumpTo = 0 ;wird später gebraucht Local lesen = OpenFile(dataname$) ;Zusammengefasste Datei überprüfen Local SummerizedFile = ReadFile(file$) ;2. datei öffnen Local gespeichertebytes = 0 Local datanamegroesse = FileSize(dataname$) Local summerizedfilegroesse = FileSize(SummerizedFile) If lesen > 0 Then Repeat ReadByte lesen JumpTo = JumpTo + 1 Until Eof(lesen) Else lesen = WriteFile(dataname$) EndIf CloseFile lesen Local schreiben = OpenFile(dataname$) SeekFile(schreiben, datanamegroesse) ;entsprechend springen WriteLine schreiben, startmarke ;start-, sowie WriteLine schreiben, summerizedfilegroesse ;endmarke eintragen WriteLine schreiben, endung ;Endung der Datei eintragen While gespeichertebytes < summerizedfilegroesse WriteByte(schreiben, ReadByte(SummerizedFile)) ;daten reinschreiben gespeichertebytes = gespeichertebytes + 1 Wend CloseFile SummerizedFile CloseFile schreiben ;beide dateien schließen End Function Function ReadSummerizedData(dataname$, startmarke$) CreateDir "UnSummerizedData" Local lesen = ReadFile(dataname$) Local suchestartmarke$ = "" Repeat suchestartmarke = ReadLine(lesen) Until suchestartmarke$ = startmarke$ Local bytes = ReadLine$(lesen) Local endung$ = ReadLine$(lesen) Local schreiben = WriteFile("UnSummerizedData\" + dataname + "_" + startmarke + "." + endung + "") For x = 0 To bytes WriteByte schreiben, ReadByte(lesen) Next CloseFile schreiben CloseFile lesen End Function Function DeleteUnSummerizedData() DeleteDir "UnSummerizedData" End Function Ich weiß echt nicht mehr, wo der fehler liegen könnte... |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
![]() |
faeX |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe mir kurz die Mühe gemacht, ein funktionierendes Beispiel zu programmieren. Bitte erst Summarize_Prepare ausführen, so wird die zusammgefasste Datei erstellt. In Summarize_Extract wird gezeigt, wie man diese wieder ausliest. ![]() |
||
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Dos/Commandbox "Copy"-Befehl kann Dateienzusammenfassen.
Weiß nicht mehr genau, aber irgendwie so ging das: Code: [AUSKLAPPEN] copy 1.txt + 2.txt + [....] ziel.txt |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group