\x00 zeichen aus String entfernen

Anfängerfragen zum Programmieren mit PureBasic.
frankmannb
Beiträge: 47
Registriert: 21.02.2010 13:02

\x00 zeichen aus String entfernen

Beitrag von frankmannb »

Hallo,

ich stehe vor der Herausforderung NUL-Zeichen (\x00) aus einer einzulesenden Zeichenkette zu entfernen. Tue mich allerdings etwas schwer damit. Kann mir jemand von euch einen TIP geben?

Besten Dank
frankmannb
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: \x00 zeichen aus String entfernen

Beitrag von ts-soft »

Wo befindet sich der String mit den 0 Bytes? Weil in einem PB String kann er nicht stehen.
Also in einem Memory, einer Datei oder in was sonst?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: \x00 zeichen aus String entfernen

Beitrag von Danilo »

frankmannb hat geschrieben:ich stehe vor der Herausforderung NUL-Zeichen (\x00) aus einer einzulesenden Zeichenkette zu entfernen. Tue mich allerdings etwas schwer damit. Kann mir jemand von euch einen TIP geben?
Woher kommt denn die Zeichenkette? Aus einer Datei?

Du musst dann die Länge der Zeichenkette kennen, oder zum Beispiel auf EOF() prüfen.
Dann liesst Du ein Byte oder Character, und wenn es nicht 0 ist, hängst Du es an Deine
Zeichenkette an. 0 wird einfach ignoriert.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: \x00 zeichen aus String entfernen

Beitrag von NicTheQuick »

Wenn ich mich nicht irre liest 'ReadString()' immer entweder bis zum nächsten Zeilenumbruch oder bis zum nächsten Nullzeichen. Beim nächsten Aufruf kommt dann der String nach dem Zeilenumbruch oder eben Nullbyte.
frankmannb
Beiträge: 47
Registriert: 21.02.2010 13:02

Re: \x00 zeichen aus String entfernen

Beitrag von frankmannb »

Super, Danke euch. Habt mir mit euren Ideen geholfen, so das ich es folgendermaßen umgesetzt habe.

Code: Alles auswählen


files.s = ProgramParameter()

For i = 1 To (CountString(files.s,",") + 1)
  If i = 1 
    file_old.s = StringField(files.s,1,",")  
  EndIf
  If i = 2
    file_new.s = StringField(files.s,2,",")
  EndIf
  
Next

Procedure P_File(file_old.s,file_new.s)
  If OpenFile(0,file_new.s)
    If ReadFile(1, file_old.s) 
      While Eof(1) = 0 
        zahl.b = ReadByte(1)
        If zahl.b <> 0  
          If zahl.b = 10 
            WriteByte(0,13)
          EndIf
          WriteByte(0,zahl.b)
        EndIf
       Wend
       CloseFile(1)
     Else 
       MessageRequester("FEHLER","Datei " + file_old.s + " kann nicht gelesen werden")
     EndIf
     CloseFile(0)
  Else
     MessageRequester("FEHLER","Datei " + file_new.s + "kann nicht erstellt werden")
  EndIf
EndProcedure

P_File(file_old.s,file_new.s)
Vielleicht nicht der Weisheit letzter Schluss, aber seinen Zweck erfüllt es.
Vielen Dank an euch, es ist tolll das es euch gibt :-)
Antworten