Calocybe: Warum nur NN WARUM...?? *schluchz*

Beitrag lesen

Hallo!

if(document.all)
{
     umpf=3;
//  ^---- setz hier mal ein 0x00 Byte mit dem Hex-Editor deiner Wahl hin
}

und dann mal mit // auskommentiert (immer noch Fehler), mit /* */ auskommentiert -> Fehler weg.
Sobald da wieder ein Leerzeichen steht ist alles wieder ok.

Das ist einigermassen erklaerbar. In C und anderen Programmiersprachen gibt es keine Strings in dem Sinne, wie man es von den higher level Scriptsprachen (z.B. JavaScript) kennt. Strings werden dort als Arrays von Bytes abgelegt, und das Ende eines Strings wird dann mit dem Byte 0x00 markiert. Je nachdem, wie genau der Scripttext nun im Speicher abgelegt wird (um dann interpretiert zu werden), kann dieses ueberfluessige 0x00 als Zeilenende interpretiert werden, womit natuerlich an dieser Stelle die Wirkung des // beendet wird.

Ob das so ok ist oder als Bug zu betrachten ist, weiss ich nicht. Auf jeden Fall frage ich mich aber, wie man auf die Idee kommt, solche Zeichen ueberhaupt einzugeben (betrifft auch die Steuerzeichen (ASCII < 32)).

Im UltraEdit kann ich keinen Unterschied zwischen 0x00 und 0x20 sehen (ausser im Hex Modus (STRG-H)), allerdings ersetzt er die Null-Zeichen sehr schnell wieder durch richtige Leerzeichen.

Falls ein 0x00 ueberhaupt mal dargestellt werden muss (was kaum vorkommen sollte), so sieht es gewoehnlich genauso aus wie ein Leerzeichen, ausser natuerlich, der Editor kennzeichnet dies extra. Ausserdem wandeln viele Editoren beim Speichern - oder auch schon eher - die Null-Character in Leerzeichen um. Textpad gibt beim Oeffnen einer Datei mit Null-Characters eine Warnung aus (Verdacht auf Binaerdatei).

So long