Probleme beim Dateihandling mit OpenFile WriteString

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

FERENC

Betreff: Probleme beim Dateihandling mit OpenFile WriteString

BeitragMo, Mai 31, 2004 10:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Rolling Eyes
Hallo Programmiergemeinde-
ich habe ein wahrscheinlich banales Problem beim Dateihandling.
Wenn ich Strings mit OpenFile und WriteString in eine einfache Textdatei schreibe, die Datei mit CloseFile schließe, und den Vorgang wiederhole, steht nur die Ausgabe der letzten Aktion in der Datei.
Bei Verwendung von WriteLine ist die Datei zerhackt bzw. teilweise überschrieben. Zusätzlich tritt ein rätselhafter Fehler: "Memory access violation" auf.
Gibt es so etwas wie eine Append Funktion, um Textdateien zu erweitern?
Wer kann mir helfen -
Dank im voraus, Ferenc

Vertex

BeitragMo, Mai 31, 2004 11:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Code: [AUSKLAPPEN]
size = FileSize("blub.txt")
stream = OpenFile("blub.txt")
SeekFile stream, size
WriteLine stream, "Neue Zeile ole ole"
CloseFile stream

mfg olli
 

FERENC

BeitragMo, Mai 31, 2004 11:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Very Happy
hallo Olli,
vielen Dank für das Codefragment - hat prima geklappt !

mit lieben Grüßen
FERENC

rambo256

BeitragMo, Mai 31, 2004 12:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Funzt das auch mit WriteInt oder warum klappt das bei mir nicht?!
Habe genau das selbe Prob wie Ferenc es hatte:
Code:

Code: [AUSKLAPPEN]

;Map speichern
If KeyDown(key_speichern) Then
   size = FileSize(dateiname$+".txt")
   test = WriteFile("maps/"+dateiname$+".txt")
   SeekFile test, size 
         For x_tile = 0 To Max_tiles_X
            For y_tile = 0 To Max_tiles_Y
               WriteInt(test,tile_matrix(1,x_tile,y_tile))
               WriteInt(test,tile_matrix(2,x_tile,y_tile))
               WriteInt(test,tile_matrix(3,x_tile,y_tile))
            Next
         Next
   CloseFile(test)
EndIf


Also es gibt keine Fehlermeldung,nur ich kann dann die gespeicherte datei nicht mehr erweitern... Crying or Very sad
Asus F53z

Das Leben ist eine reine Konkatenation...

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Mai 31, 2004 18:22
Antworten mit Zitat
Benutzer-Profile anzeigen
@rambo256
nimm openfile anstatt writefile, dann sollte es gehen!
[BB2D | BB3D | BB+]

Gossi

BeitragMo, Mai 31, 2004 19:27
Antworten mit Zitat
Benutzer-Profile anzeigen
<einmisch> warum?
Alle Wasser laufen ins Meer, doch wird das Meer nicht voller; an den Ort, dahin sie fließen, fließen sie immer wieder. (...) Was geschehen ist, eben das wird hernach sein. Was man getan hat, eben das tut man hernach wieder, und es geschieht nichts neues unter der Sonne. Geschieht etwas, von dem man sagen könnte: "Sieh, das ist neu"? Es ist längst vorher auch geschehen in den Zeiten, die vor uns gewesen sind.

Hubsi

BeitragMo, Mai 31, 2004 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Weil WriteFile die Datei neu anlegt und die alten Daten somit verloren sind Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Mai 31, 2004 20:47
Antworten mit Zitat
Benutzer-Profile anzeigen
genau....

und mit openfile muß die Datei bereits vorhanden sein, wenn nicht gibt es Probleme
aber das lässt sich leicht umgehen.....mit Sicherheitabfragen
Code: [AUSKLAPPEN]
Filename$ =("c:\Dummy.txt")
File = OpenFile(Filename$)
:: If File = 0 Then File = WriteFile(Filename$);<<<<<<<<
:: If File = 0 Then RuntimeError "Datei kann nicht erstellt werden!!!"
: SeekFile File, FileSize(Filename$)
: WriteLine File, "Neue Zeile booohhhh...eyyy"
CloseFile File
[BB2D | BB3D | BB+]

rambo256

BeitragMi, Jun 02, 2004 16:43
Antworten mit Zitat
Benutzer-Profile anzeigen
ah danke @Rallimnen werde es mal probiern...
Asus F53z

Das Leben ist eine reine Konkatenation...

rambo256

BeitragMi, Jun 02, 2004 16:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Mhh ich hab das jetzt so:

Code: [AUSKLAPPEN]

;Map speichern
If KeyDown(key_speichern) Then
   test = OpenFile("maps/"+dateiname$+".txt")
   If test = 0 Then
      test = WriteFile("maps/"+dateiname$+".txt")
         For x_tile = 0 To Max_tiles_X
            For y_tile = 0 To Max_tiles_Y
               WriteInt(test,tile_matrix(1,x_tile,y_tile))
               WriteInt(test,tile_matrix(2,x_tile,y_tile))
               WriteInt(test,tile_matrix(3,x_tile,y_tile))
            Next
         Next
   Else
      SeekFile test, FileSize("maps/"+dateiname$+".txt")
      For x_tile = 0 To Max_tiles_X
         For y_tile = 0 To Max_tiles_Y
            WriteInt(test,tile_matrix(1,x_tile,y_tile))
            WriteInt(test,tile_matrix(2,x_tile,y_tile))
            WriteInt(test,tile_matrix(3,x_tile,y_tile))
         Next
      Next
   EndIf
   CloseFile(test)
EndIf


aber irgendwie funzt es nicht Crying or Very sad
Asus F53z

Das Leben ist eine reine Konkatenation...

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMi, Jun 02, 2004 17:41
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,
2 sachen sind mir sofort aufgefallen

1. benutzte keyhit ....
2 Pfadangabe mit backslash >>\<< nicht >>/<<

sollte dann aber alles gehen,
Achte noch drauf ob die Variablen global sind
wenn es in einer Function steht!
[BB2D | BB3D | BB+]

rambo256

BeitragMi, Jun 02, 2004 18:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry geht immer noch nicht...
Liegt es jetzt am Code oder hab ich en brett vorm kopp?!

ALso das sieht jetzt so aus:

Code: [AUSKLAPPEN]
;Map speichern
If KeyHit(31) Then
   test = OpenFile("maps\"+dateiname$+".txt")   
   If test = 0 Then
      test = WriteFile("maps\"+dateiname$+".txt")
         For x_tile = 0 To Max_tiles_X
            For y_tile = 0 To Max_tiles_Y
               WriteInt(test,tile_matrix(1,x_tile,y_tile))
               WriteInt(test,tile_matrix(2,x_tile,y_tile))
               WriteInt(test,tile_matrix(3,x_tile,y_tile))
            Next
         Next
   Else
     SeekFile test, FileSize("maps\"+dateiname$+".txt")
      For x_tile = 0 To Max_tiles_X
         For y_tile = 0 To Max_tiles_Y
            WriteInt(test,tile_matrix(1,x_tile,y_tile))
            WriteInt(test,tile_matrix(2,x_tile,y_tile))
            WriteInt(test,tile_matrix(3,x_tile,y_tile))
         Next
      Next
   ;EndIf
   CloseFile(test)
EndIf

;Map laden
If KeyHit(key_laden) Then
   test = OpenFile("maps\"+dateiname$+".txt")
      For tile_x = 0 To Max_tiles_X
         For tile_y = 0 To Max_tiles_Y
            tile_matrix(1,tile_x,tile_y)=ReadInt(test)
            tile_matrix(2,tile_x,tile_y)=ReadInt(test)
            tile_matrix(3,tile_x,tile_y)=ReadInt(test)

         Next
      Next

   CloseFile test 
EndIf
Asus F53z

Das Leben ist eine reine Konkatenation...

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMi, Jun 02, 2004 19:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
dim tile_matrix   (3,x_tile,y_tile))

wenn du das als integer nutzt muss das gehen!
sollte das aber Strings
sein dann gehts natürlich nicht da er nur Nullen speichert
dann endweder mit asc bytes speichern und mit chr auslesen
oder aber mit writestring und readstring was aber viel Speicher braucht!
[BB2D | BB3D | BB+]

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group