Dateien schreiben
Übersicht

burriBetreff: Dateien schreiben |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich möchte Werte für Kacheln (Koordinaten, Kachelart) in einer Datei abspeichern. Wie erreiche ich dass die Daten dabei nicht überschrieben werden, sondern sich anhängen? Mit dem Write-Befehl bin ich in die Schleife in der auch das Array tiles_map eingelesen wird. Ich möchte ein Tile-based Leveleditor bauen. grüße, von burri Code: [AUSKLAPPEN] For a=1 To itemmax
If KeyHit(a+1) Then tile=LoadImage("item\player"+a+".bmp"):itemmax=itemmax+1 Next tiles_map(write_num,1) = (xwert/50)*50+ax tiles_map(write_num,2) = (ywert/50)*50+ay tiles_map(write_num,3) = tile fileout = WriteFile("levels\mydata.dat") WriteInt( fileout, tiles_map(write_num,1) ) WriteInt( fileout, tiles_map(write_num,2) ) WriteInt( fileout, tiles_map(write_num,3) ) CloseFile( fileout ) |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erst schaun, wie groß die Datei ist, und dann mit SeekFile![]() ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
burri |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo tankbuster,
wenn ich dich richtig verstanden habe, füge ich z.B. "seekfile filout,10" ein, danach wird jeder neue Datensatz mit einem Offset von 10 Byte nach rechts in die Datei eingefügt. Leider steht wieder nur ein Datensatz in der Datei. Kannst du mir ein Beispiel posten? viele Grüße, burri Code: [AUSKLAPPEN] For a=1 To itemmax
[/code]
If KeyHit(a+1) Then tile=LoadImage("item\player"+a+".bmp"):itemmax=itemmax+1 Next tiles_map(write_num,1) = (xwert/50)*50+ax tiles_map(write_num,2) = (ywert/50)*50+ay tiles_map(write_num,3) = tile fileout = WriteFile("levels\mydata.dat") WriteInt( fileout, tiles_map(write_num,1) ) WriteInt( fileout, tiles_map(write_num,2) ) WriteInt( fileout, tiles_map(write_num,3) ) SeekFile fileout ,10 CloseFile( fileout ) Leider hat es nicht funktioniert, es steht wieder nur ein Datensatz in der Datei. |
||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] file = ReadFile("bla.txt") size = FileSize("bla.txt") SeekFile file, size So in etwa... |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Warum 10 Byte? Eine Integer ist 4 Byte groß -> Datentypen![]() |
||
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) |
burri |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen Dank,
für eure Antworten. Es genügt also für einen Integer-Wert den Seekfile-Befehl so zu schreiben: seekFile fileout,4 für einen String kommt es auf die Länge des Strings an. Wieso aber habe ich nur den Datensatz der letzten Kachel in der Datei stehen? Wenn ich hundert Kacheln setze, müsste ich hintereinander auch hundert Datensätze (x-Koordinate,y-Koordinate,Kachelart) in der Datei stehen haben. Das Beispiel von Nicdel habe ich eingefügt, leider ohne Erfolg. Es würde mir helfen wenn ich ein lauffähiges Code-Beispiel bekommen könnte. Danke, und viele Grüße von burri |
||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
könnte vielleicht daran liegen, dass die geladene Datei immer die gleiche größe hat, wie beim öffnen und ersomit immer wieder an die gleiche Stelle springt, und erst beim schließen die neue Größe schreibt.
Da gibt es 2 herangehensweisen. 1. nach jedem schreiben direkt wieder schließen. 2. alles in einer Schleife in die Datei schreiben |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
burri |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hallo skey-z,
ich werd es mal mit deinem zweiten Vorschlag versuchen. Danke, burri |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group