Speichern von Datablöcken?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Abenteurer036

Betreff: Speichern von Datablöcken?

BeitragDi, Jan 12, 2010 14:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo alle zusammen,
ich habe wiedermal eine kleine Frage. Wenn ich einen Datablock erstelle, so ungefähr:
Code: [AUSKLAPPEN]
Data 0,0,0
Data 0,0,0
Data 0,0,0

Und diesen in eine .dat Datei abspeichern möchte, wie stelle ich das am besten an? Die eine Möglichkeit wäre ja mit WriteByte aber das speichert nur normale Zahlen ab bzw. keine Kommerzahlen. Danke im vorraus!

MfG Abenteurer036
New Project [4%]
Schinken Maker [100%]
  • Zuletzt bearbeitet von Abenteurer036 am Mi, Jan 13, 2010 16:20, insgesamt 3-mal bearbeitet

Xeres

Moderator

BeitragDi, Jan 12, 2010 14:12
Antworten mit Zitat
Benutzer-Profile anzeigen
WriteByte speicher zahlen von 0-255, writeInt den üblichen bereich und writeFloat kommazahlen. Siehe auch: Datentypen
Einfach genau so einlesen wie du sie abgespeichert hast - dann gibt's keine Probleme.
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)

Abenteurer036

BeitragDi, Jan 12, 2010 14:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah ok, Dankeschön Very Happy
New Project [4%]
Schinken Maker [100%]

Abenteurer036

BeitragMi, Jan 13, 2010 16:21
Antworten mit Zitat
Benutzer-Profile anzeigen
~Entschuldigt den Doppelpost aber ich will nicht extra ein neues Thema aufmachen~

Ich muss jetzt einfach nochmal nachfragen. Seid 2 Tagen tu ich jetzt dumm rum und komm nicht dahinter.

Mein Problem:

Einfaches Datafeld:
Code: [AUSKLAPPEN]
Data 0,1,2


Wenn ich mit WriteByte jetzt die erste Null abspeicher:
Code: [AUSKLAPPEN]
file=WriteFile("File.dat")
WriteByte file,0
CloseFile file

Habe ich ja logischerweise nur eine Null abgespeichert. Wie also speichere ich ein ganzes Feld ab? Kommer darf ich ja nicht benutzen und mit WriteFloat klappts auch nicht.
New Project [4%]
Schinken Maker [100%]
 

da_poller

BeitragMi, Jan 13, 2010 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
also. in dem falle hast du nur 1 byte abgespeichert.
zu ner ganzen intereger zahl würden noch 3 byte fehlen.. aber das ist unwichtig miomentan.

wenn du absolut sichergehen kannst, dass alle zahlen kleiner 256 sind kannst du mit wrytebyte das ganze abspeichern.

und zwar so:


-datei öffnen
-du gehst jedes element in deinem array durch(mit 2 for schleifen) und speicherst immer den wert den das array enthält(writebyte)
-datei schließen.


zum laden das selbige wieder nur das du halt nicht scheibst sondern liest(readbyte)

zum tieferen verständniss der einzelnen befehle schau am besten in die onlinehilfe.

und ein gutes tutorial(jaaa ich habs auch gelesen Wink ) findest du hier.
https://www.blitzforum.de/foru...hp?t=33651

Abenteurer036

BeitragMi, Jan 13, 2010 19:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich blick bei Midimasters Tutorial irgendwie nicht durch. Ich versteh zwar ansatzweise was da gemacht wird aber checken tu ichs trotzdem nicht. Gehts nicht irgendwie simpler? Ist auch föllig egal wie groß die Datei am ende ist.
New Project [4%]
Schinken Maker [100%]

Xeres

Moderator

BeitragMi, Jan 13, 2010 19:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Abenteurer036 hat Folgendes geschrieben:
Wie also speichere ich ein ganzes Feld ab?
In dem du den nächsten Wert aus dem Data Block per Read herausholst und in die Datei schreibst... so lange, bis alle werte drin sind.
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)

Midimaster

BeitragMi, Jan 13, 2010 19:56
Antworten mit Zitat
Benutzer-Profile anzeigen
@abenteurer036

Meinst Du das Tutorial zu Spielfeldern? https://www.blitzforum.de/foru...044#357044

Das geht es gar nicht um das Schreiben von DAT-Dateien aus dem Programm raus, sondern nur um das Lesen der Daten aus fertigen Text-Dateien.

Solche Text-Dateien kannst Du mit jedem Editor herstellen, aber auch mit der Blitz-IDE. Der ist es ganz egal, ob du Code oder nen Brief damit schreibst.

Geschrieben werden die Spiel-Felder einfach mit einer neuen Seite der Blitz-IDE. Du nutzt dann den Editor nicht um Code zu schreiben, sondern um einfache Text-Dateien zu erzeugen. Statt am Ende das ganze als *.BB abzuspeichern, speicherst Du den Text als .DAT oder .INI oder .MAP ab.

Silver_Knee

BeitragMi, Jan 13, 2010 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
Data 1,2,3,256
;256 ist jetzt mal das "Ende Signal"

file=WriteFile(...)
Repeat
Read a
If a=256
Exit
EndIf
WriteByte file,a
Forever
CloseFile file


So könntest du zB ein Haufen Bytes abspeichern. Ich hab die 256 mal als "Ende" gewertet, weil die als Byte eh ungültig wäre. Bei Floats etc müsstest du dir andere End-Signale herraussuchen aber die Vorgehensweise bleibt gleich.

Abenteurer036

BeitragMi, Jan 13, 2010 22:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab ich gerade ausprobiert doch bei mir kommt nur immer "Identifer 'a' may be used like this".
New Project [4%]
Schinken Maker [100%]

Silver_Knee

BeitragMi, Jan 13, 2010 22:32
Antworten mit Zitat
Benutzer-Profile anzeigen
da müsste "may not be" stehen und dann haste wahrscheinlich ein Array ohne index angegeben, also

Code: [AUSKLAPPEN]
Local a[5]
Print a


oder

Code: [AUSKLAPPEN]
Dim a(5)
Print a


führt zu dem gleichen fehler, weil eben die klammern fehlen.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group