AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hex-Werte an String hängen

Ein Thema von Caleb · begonnen am 5. Aug 2011 · letzter Beitrag vom 8. Aug 2011
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#11

AW: Hex-Werte an String hängen

  Alt 5. Aug 2011, 14:25
Also, wofür soll das gut sein?
Zunächst gibt der Benutzer einen String ein, der aus Ziffern zusammen gesetzt wird.
Wenn "CPort" nur mit Strings umgehen kann, dann hast du doch alles was Du Brauchst?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Caleb

Registriert seit: 26. Nov 2010
11 Beiträge
 
#12

AW: Hex-Werte an String hängen

  Alt 5. Aug 2011, 14:33
Also, wofür soll das gut sein?
Zunächst gibt der Benutzer einen String ein, der aus Ziffern zusammen gesetzt wird.
Wenn "CPort" nur mit Strings umgehen kann, dann hast du doch alles was Du Brauchst?

Gruß
K-H
Weil es das Protokoll so will =/

z.B. so ...
--> [Request(ASCII)]+[16bit-Zahl]+[8bit-Zahl]
--> ['W']+[0x01A9]+[0xFF]

und den 16bit-Wert kann ich leider nicht so einfach ASCII-codieren ...

Geändert von Caleb ( 5. Aug 2011 um 14:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#13

AW: Hex-Werte an String hängen

  Alt 5. Aug 2011, 16:19
--> ['W']+[0x01A9]+[0xFF]
Das erreichst Du über
Delphi-Quellcode:
s:='[''W'']+[0x'+
   inttohex(strtoint(edit1.text),4)+
   ']+[0x'+
   inttohex(strtoint(edit2.text),2)+
   ']';
Da fehlen naturlich noch ein paar Fehlerprüfungen.....

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Hex-Werte an String hängen

  Alt 5. Aug 2011, 18:56
Nein, ein COM-Port kommt grundstzlich auch mit Steuerzeichen ala #0 und Co. zurecht.

Es kommt eher darauf an, wie der Empfänger die Daten interpretiert/interpretieren kann und wie eventuelle Zwischenschichten/Überträger arbeiten.
Mit diesem Wissen sollte man sich erstmal ein Protokoll überlegen und darüber entscheidet sich dann.

Wenn man nun ein Protokoll vorgegeben oder erstellt hat, dann kann man sich überlegen, wie man dieses nun Programmseitig erfüllt/umsetzt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#15

AW: Hex-Werte an String hängen

  Alt 5. Aug 2011, 18:56
Das wird aber blöde, wenn da zufällig eine 0 umgewandelt wird, da der String danach abgeschnitten wird.
In Delphi eigentlich nicht, weil Delphi keine 0-terminierten Strings verwendet, sondern ein Längenpräfix. Es gibt allerdings einige String-Funktionen die nicht mehr richtig funktionieren, wenn ein 0-Byte vorkommt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Hex-Werte an String hängen

  Alt 5. Aug 2011, 18:58
In Delphi eigentlich nicht, weil Delphi keine 0-terminierten Strings verwendet, sondern ein Längenpräfix. Es gibt allerdings einige String-Funktionen die nicht mehr richtig funktionieren, wenn ein 0-Byte vorkommt.
Jupp, einige interne Funktionen nutztn nicht die Längenangabe, sondern arbeiten über PChar und auch die VCL, also speziell die gekapselten Windowskomponenten und vorallem deren APIs arbeiten letztendlich fast alle mit PChar.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Caleb

Registriert seit: 26. Nov 2010
11 Beiträge
 
#17

AW: Hex-Werte an String hängen

  Alt 8. Aug 2011, 08:45
--> ['W']+[0x01A9]+[0xFF]
Das erreichst Du über
Delphi-Quellcode:
s:='[''W'']+[0x'+
   inttohex(strtoint(edit1.text),4)+
   ']+[0x'+
   inttohex(strtoint(edit2.text),2)+
   ']';
Habt dank für die zahlreichen Antworten, ABER ich glaub wir verstehen uns immer noch bisschen falsch ...
Bei dieser Variante bekomme ich doch den HEX-Wert ins ASCII formatiert ... und zwar in seiner vollen Länge ...
wenn der Wert den ich per Edit-Feld eingegeben habe einem hexadezimalen von meinetwegen 0x01AC entspricht, dann bekomme
ich mit der Vorgehensweise von oben 4 ganze ASCII-Chars für die 16bit-Zahl und zwei Chars für die 8bit-Zahl ...
ABER um die Zahl darzustellen brauche bzw. darf ich nur zwei Chars bzw. einen verwenden.

Solange beim Konvertieren kein Linefeed und Carriage-Return rauskommt ist es mir völlig egal was aus der seriellen Schnittstelle rauspurzelt.
Und CR bzw. LF kann man ja durch Überprüfung verhindern.

Um das nochmal zu verdeutlichen hab ichs mal bisschen in nem Bild zusammengefasst ...

http://imageshack.us/f/830/36160050.jpg/

Leider steh ich nämlich immer noch aufm Schlauch =/
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#18

AW: Hex-Werte an String hängen

  Alt 8. Aug 2011, 10:27
Wenn ich das richtig interpretiere dann willst Du einen Ansichar, ein Word und ein Byte übertragen.
Delphi-Quellcode:
TMyRecord = packed record
             n1: Ansichar;
             n2: Word;
             n3: Byte;
          end;
und die beiden Werte n2 und n3 werden über ein TEdit eingegeben. Also brauchst Du Wahrscheinlich so etwas:
Delphi-Quellcode:
var
  MyRecord : TMyRecord;


Myrecord.N1:='W';
Myrecord.n2:=strtoint(Edit1.text) and $FFFF;
MyRecord.n3:=strtoint(Edit2.text) and $00FF;
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
571 Beiträge
 
Delphi XE2 Professional
 
#19

AW: Hex-Werte an String hängen

  Alt 8. Aug 2011, 10:44
Es geht auch einfacher:
s:='W'+Ansichar(hi(strtoint(Edit1.text)))+Ansichar(lo(strtoint(Edit1.text)))+ansichar((strtoint(Edit2.text)));
  Mit Zitat antworten Zitat
Caleb

Registriert seit: 26. Nov 2010
11 Beiträge
 
#20

AW: Hex-Werte an String hängen

  Alt 8. Aug 2011, 11:28
AMEN
Danke v2afrank funktioniert wunderbar.
@all responses: Vielen Dank für Eure Geduld.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:00 Uhr.
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