Einzelne Zeilen in einer Datei überschreiben

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Donner

Betreff: Einzelne Zeilen in einer Datei überschreiben

BeitragSa, Nov 18, 2006 20:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich hab ein Problem.
Ich habe in einer Konfigurationsdtaei in meinem aktuellen Projekt.

Die Konfigurationsdatei sieht so aus:
Code: [AUSKLAPPEN]
spielsteande=data\savegames
language=deutsch
irgendeinwert=irgendwas
irgendwas2=irgendwas3


Wenn ich jetzt mithilfe von folgendem Code etwas in dder Datei änder:
BlitzBasic: [AUSKLAPPEN]
write_variable_content$("config.txt", "language", "en")

Function write_variable_content$(file_path$, variable$, value$)
Local file
Local line_content$
Local pointer_position

file = OpenFile(file_path$)
Repeat
pointer_position = FilePos(file)
line_content$ = Trim$(ReadLine(file))
If Left$(line_content$, Len(variable$)+1) = variable$+"=" Then
SeekFile (file, pointer_position)
WriteLine file, variable$+"="+value$
CloseFile file
Return 1
Exit
EndIf
Until Eof(file)
CloseFile file
Return 0
End Function


kommt das hier raus:
Code: [AUSKLAPPEN]

spielsteande=data\savegames
language=en
sch
irgendeinwert=irgendwas
irgendwas2=irgendwas3




Beim folgenden Code (Wenn der neue Text länger ist als der alte):
BlitzBasic: [AUSKLAPPEN]
write_variable_content$("config.txt", "language", "irgendeinesprache")


kommt das raus:
Code: [AUSKLAPPEN]
spielsteande=data\savegames
language=irgendeinesprache
ert=irgendwas
irgendwas2=irgendwas3


Wie muss ich es machen dass immer nur die Zeile überschrieben wird, die ich auch überschreiben möchte und nicht noch auf die nächste "übergegriffen" wird?

Vielen Dank
Donner

BladeRunner

Moderator

BeitragSa, Nov 18, 2006 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Die ganze ini neuschreiben. Wink
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
 

Donner

BeitragSa, Nov 18, 2006 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt es denn keine Möglichkeit das so zu lösen, dass man nur eine Zeile überschreiben muss?

Fänd ich besser, im Zewifelsfall muss ich eben die ganze INI neu schreiben.
 

c64

BeitragSa, Nov 18, 2006 21:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Doch geht schon mit

INSTR()
FILEPOS
SEEKFILE
readbytes
writebytes

und Bank's.

(vllt. schaff ichs ja noch ein Xmpl zu schreiben)

mfg

c64
Betreten verboten! Kinder haften für ihre Eltern!

BladeRunner

Moderator

BeitragSa, Nov 18, 2006 21:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich behaupte allerdings mal das der Aufwand dafür recht groß ist und du mit einem simplen Neuspeichern schneller ans Ziel kommst.
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
 

Donner

BeitragSa, Nov 18, 2006 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, dann werde ich deinem Rat folgen, BladeRunner.

Vielen Dank für die Hilfe Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group