![]() |
String umwandeln
Hi Experten Team,
ich habe ein Problem, was auf einen alten Thread von mir aufbaut, wo ich Daten von einer USB Messkarte auslese, die einen virtuellen seriellen port hat. Ich lese die Daten mit dem Comport aus und erhalte auch einen String zurück, wenn ich einen bestimmten Befehl an die Karte sende. Jedoch bekomm ich z. B. sowas zurück "ú'aÿè±™ç" bin mir nicht sicher, was das für eine Textformatierung ist, aber hoffe ihr wisst, was ich damit tun muss, um da irgendwie leserliche Zahlen zu bekommen.... Gruß Masteric |
Re: String umwandeln
Sieht eher binär aus.
|
Re: String umwandeln
Viel kann man nicht sagen. Ich würde (wenn du zahlen erwartest) sie mal in einen Integer einlesen. Oder wenn du schon nen string hats dann setze mal eine Variable vom Typ PInteger oder PByte oder PWord,... auf @s[1] und schu mal was in PInteger(@s[1])^ so drin steht.
|
Re: String umwandeln
Hab nochmal was ähnliches in der Anelitung gesehen, vielleicht hilft das witer, da steht ,das sei ASCII Code, sollte der aber nicht lesbar sein, da waren aber auch solche Zeichen :gruebel: ... also in der Anleitung, wo bei die leider nicht viel hergibt
|
Re: String umwandeln
Hab es rausbekommen :corky:
ich musste den string den ich bekomme, der besteht bei wenn ich nur einen kanal abfrage genau aus drei bytes, die diese merkwürdigen strings ergaben, aus dem musste ich die beiden ersten chars aus dem string nehmen, und in ordinal zahlen umwandeln, wobei das erste ein Heighbyte ist, was ich erstnoch mit 256 multipliziere und zum zweiten, dem Lowbyte addiere, dann bekomm ich den erhofften Wert..., der dritte ist nur eine Prüfsumme. Das hätten die in der Anleitung ein bisschen besser erklären können :warn: .... Gruß Masteric PS: Trotzdem Danke für euer Hilfe... |
Re: String umwandeln
also wäre es PWord(@s[1])^ gewesen ;)
|
Re: String umwandeln
nein ist es nicht:
bei (P)Word steht zuerst das Low-Byte (halt BigEndian)
Delphi-Quellcode:
W := (Word(S[1])) shl 8) or Byte(S[2]);
// oder W := ByteSwap(PWord(@S[1]))
Delphi-Quellcode:
Function ByteSwap(i: Word): Word;
ASM XCHG AH, AL; End; // oder (Ersteres läuft auch auf alter CPUs) Function ByteSwap(i: Word): Word; ASM BSWAP AX End; |
Re: String umwandeln
Wenn ich die Variante BSWAP AX verwenden möchte kömmt von meinem Delphi6 die Antwort: "Ungültige Kombination von Opcode und Operanden"
Wieso denn das bitte ? |
Re: String umwandeln
ups, grad nochmal nachgeguckt ... bei Word hab ich des auch nicht verwendet (vermutlich scheint es dann doch nicht zu gehn) :oops:
für LongWord (BSWAP EAX) ginge aber :angel2: nja gut, XCHG AH, AL sollte auch gut genug funktionieren :angel: |
Re: String umwandeln
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:18 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 by Thomas Breitkreuz