Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   2Er Komplement nach Signed Char umwandeln (https://www.delphipraxis.net/157189-2er-komplement-nach-signed-char-umwandeln.html)

hedie 2. Jan 2011 12:35

2Er Komplement nach Signed Char umwandeln
 
Hallo Zusammen...

Von einer Hardware erhalte ich über den ComPort eine 2er Komplement Zahl.
Diese liegt in einer integer Variabel (ist jedoch nur ein Byte gross!)

Diese würde ich nun gerne Umwandeln und in einer Signed Char Variabel abspeichern so dass ich danach die Werte 127 - -128 habe.

Wie kann man dies machen?

Danke schonmal

DeddyH 2. Jan 2011 12:48

AW: 2Er Komplement nach Signed Char umwandeln
 
Kannst Du sie nicht einfach nach ShortInt casten? Oder habe ich Dich völlig falsch verstanden?

hedie 2. Jan 2011 13:01

AW: 2Er Komplement nach Signed Char umwandeln
 
Zitat:

Zitat von DeddyH (Beitrag 1071767)
Kannst Du sie nicht einfach nach ShortInt casten? Oder habe ich Dich völlig falsch verstanden?

Was genau macht den das ShortInt?

DeddyH 2. Jan 2011 13:04

AW: 2Er Komplement nach Signed Char umwandeln
 
ShortInt ist ein Byte mit Vorzeichen.

hedie 2. Jan 2011 13:14

AW: 2Er Komplement nach Signed Char umwandeln
 
ah sehr schön :)

Gibt es auch noch eine funktion um ein ShortInt mit vorzeichen in einem Label auszugeben?

DeddyH 2. Jan 2011 13:16

AW: 2Er Komplement nach Signed Char umwandeln
 
Wieso nicht einfach
Delphi-Quellcode:
DeinLabel.Caption := IntToStr(ShortIntValue);
:?:

hedie 2. Jan 2011 13:18

AW: 2Er Komplement nach Signed Char umwandeln
 
Weil dann das Label nur Werte von 0 - 127 anzeigt... Jedoch das vorzeichen nicht.

hedie 2. Jan 2011 13:21

AW: 2Er Komplement nach Signed Char umwandeln
 
Das Casten mit ShortInt scheint nicht zu funktionieren...

Ich weiss das die Hardware korrekte 2er Komplement Daten Sendet... (Sehe ich im Debugmodus)

Nach dem ShortInt casting hat diese Variable jedoch nur den Wert von 0 - 127

DeddyH 2. Jan 2011 13:26

AW: 2Er Komplement nach Signed Char umwandeln
 
Dann machst Du vielleicht etwas falsch. Ein kleiner Test bei mir (nur ein Button und ein Label auf der Form):
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := IntToStr(ShortInt(Random(256)));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
end;
Klappt wunderbar.

hedie 2. Jan 2011 13:55

AW: 2Er Komplement nach Signed Char umwandeln
 
Hat funktioniert... Besten Dank :)

Es lag am Datentyp bei der Sendenden Hardware :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:45 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