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
