Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.069 Beiträge
 
Delphi 12 Athens
 
#7

AW: String wird bei bestimmetem Byte nicht angezeigt

  Alt 9. Mär 2011, 21:02
Ich hab mir jetzt nicht alles durchgelesen, aber erstmal ein paar grundsätzliche Probleme.

Du möchstest eine Byte-Folge in einem UnicodeString abbilden?
nicht böse gemeint ... aber spinnst du?
Unicode ist 2 Byte pro Zeichen, das kann also niemals gut gehn,
(außer die Zeichen/Bytes bleiben im Bereich von $00 bis $7F, also ASCII)
denn hier wird ganz gern mal die Ansi-Unicode-Umwandlung zuschlagen, abgesehn von den "unnützen" Bytes zwischen jedem deiner Bytes.

Wenn, dann AnsiString nutzen, oder besser sogar TBytes (array of Byte) oder den RawByteString (welcher eine Umkodierung unterdrückt und somit AnsiChar <-> Char wenigstens bytegenau umkopiert)

Und das gewisse Bytes unterhalb von ' ' aka $20 oder 32 nicht einfach so angezeigt werden können, wurde bestimmt schon gesagt, da dieses Steuerzeichen sind.

PS: Char($ab) = #$ab , bzw. Char(123) = #123
Wozu muß man es sich schwerer machen ... es sei denn du nutzt direct AnsiChar zum Casten.

Beim Char hat man nämlich auch noch Probleme im Quelltext.
Bei #$ hat man dabei aber noch eine Möglichkeit einfluß zu nehmen wie die Zahl interpretiert wird, siehe #$85 und #$0085
http://www.delphipraxis.net/130228-a...nd-keines.html
Beides stellt zwar logisch einen gleichen Wert dar, aber für Delphi ist es unterschiedlich.


Zitat:
leider entscheide ich nicht was über die Schnittstelle geschickt wird das entscheidet das Gerät.
Das ist auch vollkommen egal, denn du entscheidest was davon wie angezeigt wird.
- entweder du nutzt eine Ausgabeform (Komponente), welche mit den Daten klar kommt
- oder du mußt die Daten so anpassen, daß die Anzeigekomponente damit klar kommt (z.B. die nötigen oder gleich alle Bytes nach HEX umwandeln)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 9. Mär 2011 um 21:06 Uhr)
  Mit Zitat antworten Zitat