Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - C nach Delphi


Sven - Do 16.01.03 14:22
Titel: C nach Delphi
Ich habe ein Problem '\07' zu interpretieren. Was bedeutet es?


Quelltext
1:
flag2=aden->dim.dimflag & '\07';                    


dim.dimflag ist ein Float-Wert. Und das ganze ist eine Und-Verknüpfung, soweit ist mir das auch klar. Nur was bedeutet '\07'?


Eisenherz - Do 16.01.03 15:50

Die einfachen Hochkommas sagen uns, dass es sich um ein Zeichen handelt. Der Backslash hat eine Sonderbedeutung, nämlich, dass die Zeichen dahinter bestimmen um welches Zeichen es sich handelt. Da nach dem Backslash zwei Zahlen kommen, handelt es sich um eine Oktalzahl, in unserm Fall also um die Sieben.
Es handelt sich also um das Zeichen mit dem ASCII-Wert 7. Da Zeichen in C/C++ wie Integerwerte behandelt werden, haben wir hier einfach nur eine sehr komplizierte Schreibweise für die Zahl Sieben.
Ich vermute, dass der Programmierer es "oktal" geschrieben hat, um deutlich werden zu lassen, dass die Bits 0, 1 und 2 gesetzt sind.
Die ganze Zeile dient also dem Zweck bei dem Wert von dimflag nur die ersten drei Bits übrig zu lassen.

Dass es sich bei dimfalg um einen Float handelt bezweifle ich, da sich sonst die Zeile nicht übersetzen ließe. Dimflag ist mit Sicherheit ein Integer oder etwas, was sich in einen Integer casten lässt.


Sven - Fr 17.01.03 08:34

Du hast recht, Fehler von mir, unter Delphi ist es ein Byte. Deine Erklärung klingt einleuchtend, was mich nur wundert ist, daß eigentlich die Bits 6,7 und 8 ausgeblendet werden sollten. Aber Danke für Deinen Tip.


Eisenherz - Fr 17.01.03 14:39

Vielleicht hätte ich besser schreiben sollen, dass nur die drei niederwertigsten Bits übrig bleiben sollen. Wenn man ein Byte binär hinschreibt und von links zu Zahlen anfängt, dann sind das die Bits 6, 7 und 8. Bei einem Shortint wären das dann die Bits 14, 15 und 16.
Das niederwertigste Bit (2 ^ 0) steht ganz rechts.