Seite 1 von 1

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

Verfasst: 23.09.2018 19:20
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

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

Verfasst: 23.09.2018 20:27
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.

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

Verfasst: 23.09.2018 21:02
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