Seite 1 von 1
3. Zeile in einer Textdatei ändern.
Verfasst: 26.11.2019 12:46
von funkheld
Hallo, guten Tag.
Wie kann man eine 3.Textzeile in einer Datei ändern.
so sehen die Zeilen aus:
processor 6502
ORG $01
chartrans
jmp block41
charset dc.b $0ff, $081, $081, $081, $081, $081, $081, $0ff
..........
..........
Danke.
gruss
Re: 3. Zeile in einer Textdatei ändern.
Verfasst: 26.11.2019 13:25
von Josh
Mit Texteditor öffnen, ändern, speichern
Re: 3. Zeile in einer Textdatei ändern.
Verfasst: 26.11.2019 15:06
von Mijikai
Habs mal so gelöst:
Code: Alles auswählen
EnableExplicit
Procedure.i ChangeLine3(File.s,Text.s)
Protected handle.i
Protected result.i
Protected str.s
Protected s1.i
Protected s2.i
Protected *buffer
Protected buffersize.i
If File
If Not FileSize(File) < #Null
handle = OpenFile(#PB_Any,File,#PB_Ascii)
If IsFile(handle)
ReadString(handle)
ReadString(handle)
s1 = Loc(handle)
ReadString(handle)
s2 = Loc(handle)
buffersize = Lof(handle) - s2
*buffer = AllocateMemory(buffersize)
If *buffer
If ReadData(handle,*buffer,buffersize) = buffersize
FileSeek(handle,s1,#PB_Absolute)
TruncateFile(handle)
If WriteStringN(handle,Text)
If WriteData(handle,*buffer,buffersize) = buffersize
result = #True
EndIf
EndIf
EndIf
FreeMemory(*buffer)
EndIf
CloseFile(handle)
EndIf
EndIf
EndIf
ProcedureReturn result
EndProcedure
Debug ChangeLine3("test.txt","Hello World!")
End
Ich denke besser wäre es wenn mit einem Signatur-Scanner die Zeilenumbrüchen zu ermitteln.
Solange es nur für ein internes Tool ist und es sich nur um wenige Zeilen handelt sollte die Lösung ok sein.
Re: 3. Zeile in einer Textdatei ändern.
Verfasst: 27.11.2019 15:48
von funkheld
Danke für die Info.
Gruss
Re: 3. Zeile in einer Textdatei ändern.
Verfasst: 28.11.2019 08:39
von stab
Abgesehen davon, dass mir die Version von Josh am sympathischten ist, hier meine klassische Version mittels File und Filesystem Library.
Hatte letztens sowas ähnliches.
Code: Alles auswählen
#Alt = 1
#Neu = 2
textdatei$ = "D:\Temp\test.txt"
textneu$ = "Hier ist meine neue 3. Zeile"
textzeile = 3
Procedure.s ersetzeTextzeile(datei$,text$,zeile)
ergebnis$ = "Scheint funktioniert zu haben"
dateiSicherung$ = GetPathPart(datei$) + GetFilePart(datei$ ,#PB_FileSystem_NoExtension) +" (Sicherung)." + GetExtensionPart(datei$)
DeleteFile(dateiSicherung$)
If RenameFile(datei$, dateiSicherung$)
If ReadFile(#Alt, dateiSicherung$) And OpenFile(#Neu, datei$)
z=0
Repeat
z+1
tmpZeile$ = ReadString(#Alt)
If Not z = zeile : Textzeile$ = tmpZeile$ : Else : Textzeile$ = text$ : EndIf
WriteStringN(#Neu, Textzeile$ )
Until Eof(#Alt)
Else : ergebnis$ = "Fehler Read/Open File" : EndIf
Else : ergebnis$ = "Fehler RenameFile" : EndIf
ProcedureReturn ergebnis$
EndProcedure
Debug ersetzeTextzeile(textdatei$,textneu$,textzeile)
Re: 3. Zeile in einer Textdatei ändern.
Verfasst: 28.11.2019 09:42
von Mijikai
@stab bin bei meiner Lösung nicht davon ausgegangen das WriteStringN() schon so ausgereift ist,
gut zu wissen
Re: 3. Zeile in einer Textdatei ändern.
Verfasst: 04.12.2019 19:37
von funkheld
Danke für die Hilfe.
Gruss