Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String umwandeln (https://www.delphipraxis.net/106988-string-umwandeln.html)

Masteric 20. Jan 2008 12:55


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

mkinzler 20. Jan 2008 13:01

Re: String umwandeln
 
Sieht eher binär aus.

sirius 20. Jan 2008 13:01

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.

Masteric 20. Jan 2008 13:04

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

Masteric 20. Jan 2008 14:14

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...

sirius 20. Jan 2008 14:29

Re: String umwandeln
 
also wäre es PWord(@s[1])^ gewesen ;)

himitsu 20. Jan 2008 14:54

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;

turboPASCAL 12. Feb 2009 09:22

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 ?

himitsu 12. Feb 2009 09:27

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:

turboPASCAL 12. Feb 2009 09:36

Re: String umwandeln
 
Zitat:

nja gut, XCHG AH, AL sollte auch gut genug funktionieren
jo, das tut das tun.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:57 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz