3. Zeile in einer Textdatei ändern.

Für allgemeine Fragen zur Programmierung mit PureBasic.
funkheld
Beiträge: 636
Registriert: 31.12.2009 11:58

3. Zeile in einer Textdatei ändern.

Beitrag 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
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: 3. Zeile in einer Textdatei ändern.

Beitrag von Josh »

Mit Texteditor öffnen, ändern, speichern :mrgreen:
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: 3. Zeile in einer Textdatei ändern.

Beitrag 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.
funkheld
Beiträge: 636
Registriert: 31.12.2009 11:58

Re: 3. Zeile in einer Textdatei ändern.

Beitrag von funkheld »

Danke für die Info.



Gruss
Benutzeravatar
stab
Beiträge: 92
Registriert: 24.02.2006 16:09
Computerausstattung: 286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
Wohnort: Hardt
Kontaktdaten:

Re: 3. Zeile in einer Textdatei ändern.

Beitrag 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)

Paul sagt: "Max lügt."
Max sagt: "Otto lügt."
Otto sagt: "Max und Paul lügen."

Wer lügt hier wirklich und wer sagt die Wahrheit?

_________________________________________

286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: 3. Zeile in einer Textdatei ändern.

Beitrag von Mijikai »

@stab bin bei meiner Lösung nicht davon ausgegangen das WriteStringN() schon so ausgereift ist,
gut zu wissen :)
funkheld
Beiträge: 636
Registriert: 31.12.2009 11:58

Re: 3. Zeile in einer Textdatei ändern.

Beitrag von funkheld »

Danke für die Hilfe.

Gruss
Antworten