Bestimmte Zeile in einer Datei überschreiben.

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Frusciante

Betreff: Bestimmte Zeile in einer Datei überschreiben.

BeitragSa, Mai 26, 2007 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich habe mal ein bisschen im Forum gesucht und mich auch schon mit seekfile beschäftigt, aber ich habe keine Konkrete Vorstellung davon wie man die Fileposition um eine Zeile verschieben kann. Die Datei komplett neu zu schreiben wäre in meinem Fall nicht sehr Praktisch da in den Dateien sehr verschiedene Daten stehen die evtl. im Moment der Überschreibung nicht vorhanden sind. Möchte auch gern ewig langen Spaghetticode vermeiden und desshalb nicht die Datei komplett auslesen neu schreiben und nur die Bestimmte Zeile überschreiben. Könnte mir vlt. jemand ein konkretes Beispiel (evtl. mit Code) geben wie ich meine Fileposition um eine Zeile nach unten verschiebe und diese Zeile neu schreibe? (Mit writeline werden vorherige strings oder zahlen ja sowieso überschrieben die dann an dieser stelle in der Datei stehen, oder?)

Danke, Frusciante

skey-z

BeitragSa, Mai 26, 2007 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
2 Ideen hätte ich da

1. Alle Zeilen einlesen und in einem Dim speichern, dann die Zeile raussuchen, wo etwas eingesetzt wird, bis dorthin in ein weiters Dim kopieren, dann neue Zeile anhängen und daraufhin alle weiteren Zeilen kopieren.
Mit Types wäre es wohl einfacher, da man hier mit After/Before und Insert arbeiten kann, ist auch wohl die am besten geeignete Methode für dein vorhaben

2. Alle Zeilen mit einer Zeilennummer versehen und dort dann nach entsprechender Zeile suchen und den neuen Eintrag einsetzen

In jedem fall must du die Datei Laden, die Änderung vornehmen und wieder speichern, bestimmt können dir andere noch weitere Tipps geben, aber falls du unterschiedlich viele Zeichen pro Zeile hast, wird es mit Seekpos schwierig.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
 

Frusciante

BeitragSa, Mai 26, 2007 19:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Dankefür den Denkanstoß, hast mir sehr geholfen Wink

Frusciante

Tankbuster

BeitragSa, Mai 26, 2007 19:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
For t=0 To Spieleranzahl
Zeile(t) = ReadLine(file)
Print Datei(t)
Next


Ich hätte es auch so gemacht!
Dann kannst du jede Zeile verändern,(Beispiel:Zeile(29)="Hallllllo") und später wieder so speichern:

Zitat:
For t=0 To Spieleranzahl
Zeile(t) = WriteLine(file)
Next
Twitter
Download Jewel Snake!
Windows|Android

Silver_Knee

BeitragSo, Mai 27, 2007 9:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
For t=0 To Spieleranzahl
Zeile(t) = WriteLine(file)
Print Datei(t)
Next
AUA Code: [AUSKLAPPEN]
For t=0 To Spieleranzahl
WriteLine(file,Zeile(t))
Print Datei(t)
Next
nunja

Tankbuster

BeitragSo, Mai 27, 2007 11:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt hab ich denselben Fehler gemacht, für den ich euch in gigis Thread geschimpft hab Rolling Eyes
Twitter
Download Jewel Snake!
Windows|Android
 

Frusciante

BeitragMo, Mai 28, 2007 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, heute wollte ich die Funktion in mein Programm einbauen, allerdings bin ich jetzt auf ein sehr merkwürdiges Problem gestoßen. Hier erst mal der Code:

Code: [AUSKLAPPEN]

 datei=OpenFile("C:\Programme\...")

 For i=0 To 6
  lines$(i) = ReadLine(datei)
 Next

 lines$(5) = aufstellungsposition ;ist eine einteger, dachte auch erst es liegt daran ;das ich keine integer in strings speichern kann, schein aber zu funktionieren

 For i=0 To 6
  WriteLine datei, lines$(i)
 Next

 CloseFile datei


Mein Problem ist nun, dass jedesmal wenn ich die Datei jetzt aufrufe noch die alten Daten dort drin stehen. D.h. der neue Wert (aufstellungsposition) wird gar nich in die Datei geschrieben. Aber der writeline Befehl ist doch korrekt so?! Seht ihr vlt. einen Fehler?

Gruß, Frusciante

Silver_Knee

BeitragMo, Mai 28, 2007 15:44
Antworten mit Zitat
Benutzer-Profile anzeigen
aufstellungsposition? treffend! ich würde sogar sagen datei position! wenn nicht sogar:

FilePos file,0;0=anfang
 

flashmaxel

BeitragMo, Mai 28, 2007 16:01
Antworten mit Zitat
Benutzer-Profile anzeigen
SeekFile(stream,0)
Real C programmers never die; they cast to void.

Silver_Knee

BeitragMo, Mai 28, 2007 16:02
Antworten mit Zitat
Benutzer-Profile anzeigen
ouch tilt X_X
 

Frusciante

BeitragMo, Mai 28, 2007 16:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, hat funkioniert!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group