Datenzusammenfasser - mal wieder! [GELÖST]

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

CO2

ehemals "SirMO"

Betreff: Datenzusammenfasser - mal wieder! [GELÖST]

BeitragSo, Dez 26, 2010 2:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Ich weiß, das Thema gabs schonmal (auch von mir Very Happy), nur ich habe mal wieder ein Problem damit (Ich weiß, das es im Codearchiv bereits einen gibt, wollte es aber nochmal auf eigene Faust probieren). So sehen meine beiden funktionen bisher aus:

BlitzBasic: [AUSKLAPPEN]
Function LoadPackage(file$, file2$)

;Daten auslesen - - - - - - - - - - - - - - - -
Local filefile = ReadFile(file + ".co2")
Repeat
Local suchefile2$ = ReadLine(filefile)
Until suchefile2$ = file2 Or Eof(filefile)

Local groessedesfiles$ = ReadLine(filefile)
Local groessedesfiles3 = Int(groessedesfiles)

Local groessedesfiles2 = 0

Local Bank = CreateBank(groessedesfiles)

Local posinbank = 1

Repeat
PokeByte Bank, posinbank, ReadByte(filefile)
posinbank = posinbank + 1
groessedesfiles2 = groessedesfiles2 + 1
Until groessedesfiles2 = groessedesfiles3

;Daten aufschreiben - - - - - - - - - - - - - - -
Local filefile2 = WriteFile("ausgelesene " + file2 + "")

WriteBytes(Bank, filefile2, 0, groessedesfiles)

CloseFile filefile2
CloseFile filefile
FreeBank Bank

End Function

Function SavePackage(file$, file2$)

;Daten auslesen - - - - - - - - - - - - - - - - -
Local filefile2 = ReadFile(file2)

Local sizeoffile2 = FileSize(file2)
Local Bank = CreateBank(sizeoffile2)

Local posinbank = 1
Local writtenbytes = 0

Repeat
PokeByte Bank, posinbank, ReadByte(filefile2)
posinbank = posinbank + 1
writtenbytes = writtenbytes + 1
Until writtenbytes = sizeoffile2

;Daten aufschreiben - - - - - - - - - - - - - - - -
Local filefile = OpenFile(file + ".co2")
If filefile = 0 Then
filefile = WriteFile(file + ".co2")
Else
Repeat
ReadByte(filefile)
Until Eof(filefile)
EndIf

WriteLine filefile, ""
WriteLine filefile, file2
WriteLine filefile, sizeoffile2
WriteBytes(Bank, filefile, 0, sizeoffile2)
CloseFile filefile

CloseFile filefile2
FreeBank Bank

End Function


So, folgene Dateien sollte nun erst zusammengepackt und wieder ausgelesen werden (beides Text-Dateien):

1.txt:
Code: [AUSKLAPPEN]
Das ist die erste Datei!
Nicht vergessen: 1.Datei!

$$%&§/")!=!

DAS IST NUR EIN TEST!


2.txt:
Code: [AUSKLAPPEN]
Das ist die 2. Datei, sie enthält Zahlen für einen TEST!

1234567890 10 20 30 40 50 60 70 80 90 00

1001212323214323577687642564151563


So, und das kommt nun nach dem auslesen raus
1.txt:
Code: [AUSKLAPPEN]
  Das ist die erste Datei!
Nicht vergessen: 1.Datei!

$$%&§/")!=!

DAS IST NUR EIN TES


2.txt:
Code: [AUSKLAPPEN]
  Das ist die 2. Datei, sie enthält Zahlen für einen TEST!

1234567890 10 20 30 40 50 60 70 80 90 00

10012123232143235776876425641515


Bei beiden Dateien werden hinten 2 Buchstaben abgeschnitten, und Notepad zeigt vor jedem Text 2 mal so ein schwarzes Oval, in dem "nul" steht an, wie lässt sich das Problem beheben? Ich habe es schon mit Banken benutzt (wie man oben sieht), hilft aber nichts. Brauche hilfe, bitte...

EDIT: Ich merke grade,das ich das ins falsche forum gepostet hab, sollte eigentlich unter die Beginners-Corner bei BlitzBasic Embarassed
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 Mo, Dez 27, 2010 21:27, insgesamt einmal bearbeitet

Xeres

Moderator

BeitragSo, Dez 26, 2010 11:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist nichts für Beginner und der Fehler ist ja offensichtlich das du entweder zu wenig einließt und/oder ausgibst. Denk dran, dass Zählungen manchmal bei 0 beginnen.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Kernle 32DLL

BeitragSo, Dez 26, 2010 14:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Local posinbank = 1
...
PokeByte Bank, posinbank, ReadByte(filefile)

PokeByte fängt bei 0 an, das sollte dein Problem lösen.
Du hast den Fehler beim schreiben wie beim lesen gemacht.
Mein PC: "Bluelight" - Xtreme Gamer PC [Video]
Meine Projekte: Cube-Wars 2010 [Worklog]
Anerkennungen: 1. Platz BCC #7 , 1. Platz BCC #22 , 3. Platz BAC #89
Ich war dabei: NRW Treff III, IV ; Frankfurter BB Treffen 2009

Holzchopf

Meisterpacker

BeitragSo, Dez 26, 2010 15:05
Antworten mit Zitat
Benutzer-Profile anzeigen
~VERSCHOBEN~
Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.

mfG
Holzchopf
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm
 

CO2

ehemals "SirMO"

BeitragSo, Dez 26, 2010 15:52
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Kernle 32DLL:
Das wurde im Code bereits geändert, habe nur den alten gesendet, in dem es noch nicht geändert wurde Embarassed
Das Problem bleibt aber leider immernoch, nur das jetzt nicht mehr 2 sondern nur noch 1 Buchstabe fehlt...

Trotzdem danke für den Hinweis.
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

the FR3AK

BeitragSo, Dez 26, 2010 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Local Bank = CreateBank(groessedesfiles+1)


Dann solltest du alle Zeichen drin haben...
 

CO2

ehemals "SirMO"

BeitragMo, Dez 27, 2010 21:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Kernle32 hat folgende Funktionen geschrieben:

BlitzBasic: [AUSKLAPPEN]
Function SavePackage(PackageFilePath$, FileToBePackagedPath$)

Local FileToBePackaged = ReadFile(FileToBePackagedPath)
Local SizeOfFileToBePackaged = FileSize(FileToBePackagedPath)

Local PackageFile

If FileType(PackageFilePath + ".co2") = 1
PackageFile = OpenFile(PackageFilePath + ".co2")

Local SizeOfPackage = FileSize(PackageFilePath + ".co2")
SeekFile(PackageFile,SizeOfPackage)
Else
PackageFile = WriteFile(PackageFilePath + ".co2")
EndIf

WriteString PackageFile, FileToBePackagedPath
WriteInt PackageFile, SizeOfFileToBePackaged

For I = 0 To SizeOfFileToBePackaged - 1
WriteByte PackageFile,ReadByte(FileToBePackaged)
Next

CloseFile FileToBePackaged
CloseFile PackageFile
End Function

Function LoadPackage$(PackageFilePath$, FileToBeDepackagedPath$)

CreateDir "EXTRACTED_"

Local PackageFile = ReadFile(PackageFilePath + ".co2")
If PackageFile = 0 Then Return

Local PackageName$
Local PackageSize%
Repeat
If Eof(PackageFile) Then Return
PackageName$ = ReadString(PackageFile)
PackageSize% = ReadInt(PackageFile)

If PackageName = FileToBeDepackagedPath Then Exit

SeekFile(PackageFile, FilePos(PackageFile) + PackageSize)
Forever

Local I, DepackagedFile = WriteFile("EXTRACTED_\EXTRACTED_" + PackageName)
For I = 0 To PackageSize - 1
WriteByte DepackagedFile,ReadByte(PackageFile)
Next

Return "EXTRACTED_\" + PackageName

CloseFile DepackagedFile
CloseFile PackageFile
End Function


Damit funktioniert es, danke Kernle!
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

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group