In einer Datei eine Zeile austauschen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

etlam

Betreff: In einer Datei eine Zeile austauschen

BeitragMi, Mai 31, 2006 21:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich habe zwei Fragen:
1. Wie kann ich mit einer schnellen Funktion eine Zeile aus einem File suchen und dann löschen?
Inetwa so:
Code: [AUSKLAPPEN]
dat = openfile("x.dat")
loeschezeile(dat,"hallo")
function loeschzeile()
?????
end function

wenn ich jetzt also eine Datei haette die so aussieht:
Code: [AUSKLAPPEN]
lala
blabla
tratra
hallo
haha


käme die Datei raus:

Code: [AUSKLAPPEN]
lala
blabla
tratra
haha



2. Wie kann ich überprüfen, ob eine Datei schon geschlossen wurde?

also in etwa so:

Code: [AUSKLAPPEN]
dat=writefile("x.dat")
closefile(dat)
;langer code
if schon_geschlossen(dat) = 0 then closefile(dat)
function  schon_geschlossen()
????
endfunction


Habe beides schon lange Versucht, komme aber einfach auf keine Lösung...

Vielen Dank schon mal im voraus,

etlam

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMi, Mai 31, 2006 21:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe da schon mal vor langer Zeit was geschrieben..
Suche......
https://www.blitzforum.de/foru...p;start=20

Wenn es schnell sein soll lies alle Daten ein und speichere das beim beenden!
[BB2D | BB3D | BB+]

darth

Betreff: ..

BeitragMi, Mai 31, 2006 21:36
Antworten mit Zitat
Benutzer-Profile anzeigen
humm... falls du weisst welchen text du löschen willst:

Code: [AUSKLAPPEN]
type inhalt
 field txt$
end type

datei=openfile("x.dat")
 while not eof(datei)
  i.inhalt=new inhalt
   i\txt$=readline(datei)
 wend
closefile datei

löschen$="???"

datei=writefile("x.dat")
 for i.inhalt=each inhalt
  if i\txt$<>löschen$ then
   writeline datei,i\txt$
  endif
 next
closefile datei


... wie gesagt: geht nur wenn du weisst welchen text du löschen willst,
die datei wird ganz ausgelesen und dann ganz wieder eingegeben, bis auf die zeile die du nichtmehr haben willst.
vllt nicht sehr effizient, aber "sicher" Very Happy
Diese Signatur ist leer.

Hubsi

BeitragMi, Mai 31, 2006 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
Type entry
Field dat$
End Type

delete_entry("test.txt","ich will gelöscht werden")



Function delete_entry(path$,del$)
file=ReadFile(path$)
While Not Eof(file)
tmp$=ReadLine(file)
If tmp$<>del$
e.entry=New entry
e\dat=tmp$
EndIf
Wend
CloseFile(file)

file=WriteFile(path$)
For e.entry=Each entry
WriteLine(file,e\dat)
Next
CloseFile(file)
End Function

Eine einzelne Zeile "einfach so löschen geht nicht, es muss alles gelesen werden und schließlich neu geschrieben.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

etlam

BeitragMi, Mai 31, 2006 21:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Erst einmal vielen Dank für die antworten.
Frage 1. ist ja jetzt gelöst, aber Frage 2. noch nicht.
Weiß vielleicht jemand eine antwort zu 2?

etlam

Hip Teen

BeitragMi, Mai 31, 2006 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Antwort auf Frage 2:
Beispiel: In der Variable "file" ist das Handle zu der Datei gespeichert. Dann schreibst du ja
Code: [AUSKLAPPEN]
CloseFile (file)

nun, dann setzt du jetzt die Variable "file" einfach null. Um zu schauen, ob der stream geschlossen wurde, überprüfst du dann einfach den wert von "file".
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger"

etlam

BeitragDo, Jun 01, 2006 7:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank.

etlam

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group