AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein String wird bei bestimmetem Byte nicht angezeigt
Thema durchsuchen
Ansicht
Themen-Optionen

String wird bei bestimmetem Byte nicht angezeigt

Ein Thema von willyxv · begonnen am 9. Mär 2011 · letzter Beitrag vom 10. Mär 2011
 
Benutzerbild von himitsu
himitsu

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

AW: String wird bei bestimmetem Byte nicht angezeigt

  Alt 9. Mär 2011, 20: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)
Ein Therapeut entspricht 1024 Gigapeut.

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


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz