Seite 1 von 1

\x00 zeichen aus String entfernen

Verfasst: 18.02.2013 16:26
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

Re: \x00 zeichen aus String entfernen

Verfasst: 18.02.2013 16:38
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?

Re: \x00 zeichen aus String entfernen

Verfasst: 18.02.2013 16:40
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.

Re: \x00 zeichen aus String entfernen

Verfasst: 18.02.2013 16:45
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.

Re: \x00 zeichen aus String entfernen

Verfasst: 18.02.2013 17:49
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 :-)