Hallo,
mein Anliegen ist vermutlich eher akademischer Natur...
Ich habe ein Programm geschrieben, dass Meldungen von einem µC über die serielle Schnittstelle empfängt.
Normalerweise sendet der µC codierte Meldungen, worin eben auch ein Bytewert mal "Null" sein kann.
Zum Debuggen sende ich manchmal auch einfach Textmeldungen.
In der PC Anwendung werden empfangen Zeichen dann zunächst mal in ein Memo geschrieben, wo Text eben als Text angezeigt wird und die Meldungen Hexadezimal angezeigt werden.
Das alles funktioniert wie erwartet.
Beim Tesen habe ich mal folgenden String probiert:
Teststring := 'Test123' + #27 + #1 + #0 + 'ABCDEFGHI';
Wenn ich dann z.B.
showmessage(Teststring);
wird 'Test123' + ein paar unleserliche Zeichen ausgegeben.
Wenn ich den Text dann einfach ins Memo schreibe, erhalte ich
'Test123' + zwei Steuerzeichen (#27 und #1)
Meine HEX-Ausgabe geht einfach über die Länge des Strings und gibt dann aber die korrekten Hexadezimalen Entsprechnungen für 'Test123' + #27 + #1 + #0 + 'ABCDEFGHI' aus.
Ich hatte also erwartet, dass der Chr(0) bei einem Pascal String als normales Zeichen verarbeitet wird, was aber scheinbar nicht so ist.
Wie muss es denn richtig sein?
Gruss
Andreas
Wie muss ein Chr(0) in einem String verarbeitet werden.
Re: Wie muss ein Chr(0) in einem String verarbeitet werden.
Bei Null-Terminierten Strings ist das nicht gut. #0 Sollte nicht im String vorkommen, das gibt spätestens bei der Ausgabe Probleme.
http://de.wikipedia.org/wiki/Zeichenket ... usszeichen" onclick="window.open(this.href);return false;
http://de.wikipedia.org/wiki/Zeichenket ... usszeichen" onclick="window.open(this.href);return false;
-
- Beiträge: 3
- Registriert: Mi 17. Okt 2007, 14:21
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Bergisch-Gladbach
Re: Wie muss ein Chr(0) in einem String verarbeitet werden.
Hi
danke für die Antwort,
Ich dachte allerdings, der Pascal String hat ein Längenbyte, so dass das eigentlich egal sein sollte.
Grundsätzlich zeigt die Funktion "Length" ja auch die erwartete Länge inklusive #0 und den angehängten Zeichen.
Gruss
Andreas
danke für die Antwort,
Ich dachte allerdings, der Pascal String hat ein Längenbyte, so dass das eigentlich egal sein sollte.
Grundsätzlich zeigt die Funktion "Length" ja auch die erwartete Länge inklusive #0 und den angehängten Zeichen.
Gruss
Andreas
Re: Wie muss ein Chr(0) in einem String verarbeitet werden.
Pascal wäre das schon egal, aber dem Betriebssystem, welches das Ding auf den Screen bringen muss nicht.AndyHesse hat geschrieben: Ich dachte allerdings, der Pascal String hat ein Längenbyte, so dass das eigentlich egal sein sollte.
Grundsätzlich zeigt die Funktion "Length" ja auch die erwartete Länge inklusive #0 und den angehängten Zeichen.
-
- Beiträge: 3
- Registriert: Mi 17. Okt 2007, 14:21
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Bergisch-Gladbach
Re: Wie muss ein Chr(0) in einem String verarbeitet werden.
Hi,
danke für die Antwort. Schönes Wochenende.
Gruss
Andreas
danke für die Antwort. Schönes Wochenende.
Gruss
Andreas