Autor Beitrag
Weide
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 61



BeitragVerfasst: Mo 10.02.03 14:00 
Hallo,

Ich möchte in einem TEdit Hex-Zeichen eingeben. Wie können sie in die entsprechenden "richtigen" Hexwerte konvertiert werden?

Gruß Weide
foxy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 814

Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
BeitragVerfasst: Mo 10.02.03 14:26 
zu was konvertiert werden?? zu dezimal oder zu ascii

_________________
"Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
Weide Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 61



BeitragVerfasst: Mo 10.02.03 14:29 
Hallo foxy,

sorry, zu ascii

obwohl ... bevor ich jetzt etwas Falsches sage....

ich habe eine kleine terminalkomponente für die serielle Schnittstelle. Dort wird ein ins TEdit eingegebener String gesendet. Ich möchte allerdings bestimmte Hex-Zeichen senden. Nun könnte ich natürlich gucken, welches Zeichen welchem Hex-Wert entspricht, aber das ist wohl zu umständlich. Ich möchte z.B. einfach: "FB FA 30 45" eingeben und er soll genau diese Hex-Zeichen senden.

Gruß Weide


Zuletzt bearbeitet von Weide am Mo 10.02.03 14:34, insgesamt 1-mal bearbeitet
foxy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 814

Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
BeitragVerfasst: Mo 10.02.03 14:33 
ich würde das ganz simpel machen, da du ja zahlen und buchstaben hast in deiner Hexadezimalzahl, würde ich die zusammenzählen ... ich denke du weist wie das geht oder?? also das der Byte-Wert rauskommt

dann nimmst du für das ergebnis eine variable
z.b.
ausblenden Quelltext
1:
var k   : byte;					


dann kuckst du einfach in der ascii tabelle nach welcher wert da rein muss ....

dies eben in einer schleife ....

_________________
"Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
DaRkFiRe
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 526

WinXP Home & Professional
C, C++, Delphi
BeitragVerfasst: Mo 10.02.03 17:06 
Mit StrToInt kann man auch Hex-Strings in Integers umwandeln. Einfach dem String noch das Dollarzeichen ($) voranstellen et voilà.

ausblenden Quelltext
1:
2:
3:
4:
var i:INTEGER;
begin
  i:=StrToInt('$'+Edit1.Text);
end;

_________________
Lang ist der Weg durch Lehren - kurz und wirksam durch Beispiele! Seneca
Weide Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 61



BeitragVerfasst: Mo 10.02.03 18:15 
Hallo DarkFire,

ich muß aber einen String an die Komponente übergeben. Ein Integer nützt mir leider nichts. Zudem denke ich, dass ein in Deiner Weise gewandelter Wert nicht das Richtige ergibt. Ein "FF" würde als Ergebnis "255" zur Folge haben - und das ist es nicht, was ich will.

Nochmal: Ich möchte eine Zeichenkette eingeben (z.B. FA FB A0 07), und genau diese Zeichenkette soll an der seriellen Schnittstelle ausgegeben werden. Die Schnittstellenkomponente benötigt allerdings Strings. Ich muß also meine Zeichenkette so umwandeln, dass ein Zeichen an die Routine übergeben wird, die beispielsweise dem Hex-Wert "FA" entspricht. Das sind dann meist irgendwelche Sonderzeichen oder "Line Feed" oder sonst irgend etwas.

Gibt vielleicht eine Eingabekomponente, die man einfach von String auf Hex umschalten kann? Ich meine, so etwas mal irgendwo in Delphi gesehen zu haben - aber ich find's nicht mehr :-(

Gruß Weide
Wolff68
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302
Erhaltene Danke: 1

WinXP home
D6 Prof
BeitragVerfasst: Mi 12.02.03 00:30 
Na wenn Du den Byte-Wert hast, bekommst doch mit Chr(byte) das Zeichen. Das musst dann nur noch in einer Schleife zum String hinzufügen.

In der Art:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
var
  i : byte;
  c : char;
  h : String[2];
  sEin, sAus : String;
begin
  sAus := '';
  sEin := Edit1.text;
  repeat
    ... hier die Hexzahl in h ablegen ...
    i := StrToInt('$'+h);
    c := Chr(i);
    sAus := sAus + c;
  until ... keine hexzahlen mehr drin ...
end;


Kannst das ganze natürlich auch zusammenschreiben alssAus := sAus + Chr(StrToInt('$'+h));

_________________
"Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."
DaRkFiRe
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 526

WinXP Home & Professional
C, C++, Delphi
BeitragVerfasst: Mi 12.02.03 02:12 
Keine einwände *g*

Für alle, die nicht gern selbst coden:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
function HexCodesToStr(S:STRING):STRING;
var R,T:STRING;
var iIDX:INTEGER;
begin
  T:=S;
  R:='';
  repeat
    iIDX:=Pos(#32,T);
    IF iIDX > 0 THEN
      BEGIN
        R:=R+CHR(STRTOINT('$'+TRIM(COPY(T,1,iIDX-1))));
        DELETE(T,1,iIDX);
      END;
  until (iIDX = 0);
  Result:=R;
end;


Achtung - Code nicht auf Funktionalität geprüft - so sollte es auch funzen...

_________________
Lang ist der Weg durch Lehren - kurz und wirksam durch Beispiele! Seneca
Weide Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 61



BeitragVerfasst: Mi 12.02.03 09:51 
Hallo,

siehste wohl - die funktion "Chr" kannte ich gar nicht - vielen Dank für Eure Hilfe :)

Gruß Weide