String in Datei überschreiben

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Tankbuster

Betreff: String in Datei überschreiben

BeitragDi, März 06, 2007 18:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe eine Datei. In dieser Datei steht immer 1 Spieler und dessen daten.
z.B.
Zitat:
Spieler1 daten
Spieler2 daten

Wenn jetzt aber z.B. Spieler2 seine neuen Daten in einem String schickt, sollen die alten dadurch ersetzt werden. Wie kann ich das am besten machen?
Bis jetzt bin ich nur soweit, dass ich die Stelle finden kann. Und weiter komm ich einfach nicht xD
Zitat:
file = OpenFile("lol\lol.lol")
While Not Eof(file)
DerString = ReadString(file)
If nwort$(DerString, 1) = "Spieler1";wenn das erste wort im string "Spieler1" ist
print "GEFUNDEN"
ElseIf nwort$(DerString, 1)<> "Spieler1"
print "NICHT GEFUNDEN"
EndIf
Wend
CloseFile(file)

Wär nett, wenn ihr helfen könntet, denn ich kenn mich nicht wirklich gut damit aus^^
Twitter
Download Jewel Snake!
Windows|Android

BladeRunner

Moderator

BeitragDi, März 06, 2007 18:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Datei einfach komplett neu schreiben ist das schmerzfreiste, zumindest wenn du nicht weisst wie lange die einzelnen Einträge in der Datei sind.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Tankbuster

BeitragDi, März 06, 2007 20:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso!
Toll. Ich hatte das schonmal so fürs laden:(der String mit "Spieler1" soll zu "lol" ersetzt werden
Zitat:
Dim DerString$(100)
For t=0 to Spieleranzahl
DerString(t) = ReadString(file)
If nwort$(DerString(t), 1) = "Spieler1"
DerString(t)="lol"
Next

Und danach wieder speichern.
Zitat:
For t=0 to Spieleranzahl
DerString(t) = WriteString(file)
Next

Nur irgendwie hatte ich immer mehr Spieler, als Strings in der Datei waren, und dann kam immer ein Fehler, dass der "DerString(t) = ReadString(file)" nicht existiert!
Ich habe bei den Spielern von 0 angefangen, und immer 1 dazuaddiert, wenn ein neuer erstellt wurde(und somit auch in der datei gespeichert wurde). Weils so nicht geklappt hat, musst ich mir was anderes überlegen^^
Twitter
Download Jewel Snake!
Windows|Android

Silver_Knee

BeitragDi, März 06, 2007 21:03
Antworten mit Zitat
Benutzer-Profile anzeigen
in der for next schleife solltest du mit 1 anfangen denn dann läuft sie bein 0 spielern garnicht 1 spieler einmal usw...
und
Zitat:

For t=0 to Spieleranzahl
DerString(t) = WriteString(file)
Next

ist falsch was du schreiben (wolltest?) solltest/ musst:
Code: [AUSKLAPPEN]

For t=1 to Spieleranzahl
     WriteString(file,DerString(t))
Next

Tankbuster

BeitragDi, März 06, 2007 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
OH! seh ich auch grade, das das Falsch ist!
Na..ja.. hab halt hier im Forum geschrieben, da isses mir nicht aufgefallen!
Mit der 0 geht das, wenn man mit Spieleranzahl "1" anfängt!^^
Habs jetzt endlich hinbekommen!: *freu*
Also, wenn das noch jemanden interessieren sollte^^
Mir ist dabei aufgefallen, dass die Funktion länger ist, als mein Code *lol*

Code: [AUSKLAPPEN]

DasGesuchte$="Spieler1"
Dateipfad$="data\datei1.lol"
;datei auslesen
file = OpenFile(Dateipfad$)
     For t=0 To Spieleranzahl
         Datei(t) = ReadString(file)
         If nwort$(Datei(t), 1) = DasGesuchte Then Datei(t) = "ÜBERSCHRIEBEN"
     Next
CloseFile(file)
;und wieder speichern
file = OpenFile(Dateipfad$)
     For t=0 To Spieleranzahl
           WriteString(file,Datei(t))
     Next
CloseFile(file)


Function nwort$(byte$, wort)
If wort < 1 Then Return ""
trenn$ = " " ;<-- Trennzeichen
byte$ = byte$ + trenn$
w = 0
pos = 1
While w < wort And pos > 0
While Mid$(byte$, pos, 1) = trenn$
pos = pos + 1
Wend
x = pos
y = Instr(byte$, trenn$, pos)
pos = y
w = w + 1
Wend
Return Mid$(byte$, x, y - x)
End Function

Function INT_IP(IP$)
a1=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
a2=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
a3=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
a4=Int(IP$)
Return (a1 Shl 24) + (a2 Shl 16) + (a3 Shl 8 ) +a4
End Function

Twitter
Download Jewel Snake!
Windows|Android

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group