Ein String in einer Datei ändern, wie geht das bitte ?

Anfängerfragen zum Programmieren mit PureBasic.
funkheld
Beiträge: 636
Registriert: 31.12.2009 11:58

Ein String in einer Datei ändern, wie geht das bitte ?

Beitrag von funkheld »

Hallo, guten tag.

Ich möchte eine Zeile bitte ändern im Text uns zwar immer die 2. Zeile

-------------------------------------------
FEATURES {
STARTADDRESS: default = $3000;
}
SYMBOLS {
__EXEHDR__: type = import;
__STARTADDRESS__: type = export, value = %S;
}
--------------------------------------------

Danke.
Gruss
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Ein String in einer Datei ändern, wie geht das bitte ?

Beitrag von mk-soft »

Wenn eine Text-Datei eine Zeile ändern möchtest muss immer die gesamte Datei eingelesen und neu geschrieben werden.

Also die Datei im eine LinkedList laden und in dieser die Änderung ausführen, Danach die Datei neu schreiben.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
juergenkulow
Beiträge: 188
Registriert: 22.12.2016 12:49
Wohnort: :D_üsseldorf-Wersten

Re: Ein String in einer Datei ändern, wie geht das bitte ?

Beitrag von juergenkulow »

Hallo funkheld,

Code: Alles auswählen

DateiName$="E:\FEATURES.TXT"
Datei=OpenFile(#PB_Any,DateiName$)
DateiLaenge=Lof(Datei)
If 0=DateiLaenge : Declare RetteProgramm() : RetteProgramm() : EndIf 
ErsteZeile$=ReadString(Datei)
ZweiteZeile$=ReadString(Datei)
DateiPosition=Loc(Datei)
RestLaenge=DateiLaenge-DateiPosition
*Buffer=AllocateMemory(RestLaenge)
ReadData(Datei,*Buffer,RestLaenge)
CloseFile(Datei)
Datei=CreateFile(#PB_Any,DateiName$)
WriteStringN(Datei,ErsteZeile$)
WriteStringN(Datei,"  STARTADDRESS: default = $F00;")
WriteData(Datei,*Buffer,RestLaenge)
CloseFile(Datei)
End

Procedure RetteProgramm()
  Shared DateiName$,Datei,DateiLaenge
  MessageRequester("Info",
                   DateiName$+" Datei ist nicht vorhanden. Es wird "+GetTemporaryDirectory()+
                   "FEATURES.TXT erzeugt.")
  CloseFile(Datei)
  DateiName$=GetTemporaryDirectory()+"FEATURES.TXT"
  Datei=CreateFile(#PB_Any,DateiName$)
  WriteStringN(Datei,"FEATURES {")
  WriteStringN(Datei,"  STARTADDRESS: Default = $3000;")
  WriteStringN(Datei,"}")
  WriteStringN(Datei,"SYMBOLS {")
  WriteStringN(Datei," __EXEHDR__: type = Import;")
  WriteStringN(Datei," __STARTADDRESS__: type = export, value = %S;")
  WriteStringN(Datei,"}")
  CloseFile(Datei) 
  Datei=OpenFile(#PB_Any,DateiName$)
  DateiLaenge=Lof(Datei)
  ProcedureReturn Datei
EndProcedure
Edit: Abfrage Datei vorhanden, Procedure RetteProgramm
Bitte stelle Deine Fragen, denn den Erkenntnisapparat einschalten entscheidet über das einzig bekannte Leben im Universum.

Jürgen Kulow Wersten :D_üsseldorf NRW D Europa Erde Sonnensystem Lokale_Flocke Lokale_Blase Orion-Arm
Milchstraße Lokale_Gruppe Virgo-Superhaufen Laniakea Sichtbares_Universum
Antworten