Aktuelle Zeit: 28.02.2020 13:56

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: 3. Zeile in einer Textdatei ändern.
BeitragVerfasst: 26.11.2019 12:46 
Offline

Registriert: 31.12.2009 11:58
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 3. Zeile in einer Textdatei ändern.
BeitragVerfasst: 26.11.2019 13:25 
Offline
Benutzeravatar

Registriert: 04.08.2009 17:24
Mit Texteditor öffnen, ändern, speichern :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 3. Zeile in einer Textdatei ändern.
BeitragVerfasst: 26.11.2019 15:06 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Habs mal so gelöst:
Code:
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.

_________________

Links:
PureBasic Discord
[ENGINE] 2D Engine Nautilus (Win)
[INCLUDE] GLFW 3.3 Library
[MODULE] Bass Library 2.4 (Win)
[LIBRARY] Hexi Binary2Hex (Win)



Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 3. Zeile in einer Textdatei ändern.
BeitragVerfasst: 27.11.2019 15:48 
Offline

Registriert: 31.12.2009 11:58
Danke für die Info.



Gruss


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 3. Zeile in einer Textdatei ändern.
BeitragVerfasst: 28.11.2019 08:39 
Offline
Benutzeravatar

Registriert: 24.02.2006 16:09
Wohnort: DE
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:
#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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 3. Zeile in einer Textdatei ändern.
BeitragVerfasst: 28.11.2019 09:42 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
@stab bin bei meiner Lösung nicht davon ausgegangen das WriteStringN() schon so ausgereift ist,
gut zu wissen :)

_________________

Links:
PureBasic Discord
[ENGINE] 2D Engine Nautilus (Win)
[INCLUDE] GLFW 3.3 Library
[MODULE] Bass Library 2.4 (Win)
[LIBRARY] Hexi Binary2Hex (Win)



Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 3. Zeile in einer Textdatei ändern.
BeitragVerfasst: 04.12.2019 19:37 
Offline

Registriert: 31.12.2009 11:58
Danke für die Hilfe.

Gruss


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye