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