AGB  ·  Datenschutz  ·  Impressum  







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

HI und LO liefern falsche Werte

Ein Thema von Codix32 · begonnen am 1. Jan 2015 · letzter Beitrag vom 1. Jan 2015
Antwort Antwort
Codix32

Registriert seit: 23. Apr 2009
137 Beiträge
 
Delphi 2005 Personal
 
#1

HI und LO liefern falsche Werte

  Alt 1. Jan 2015, 19:21
Delphi-Version: 2005
Was mache ich da falsch?

Delphi-Quellcode:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
    int:Integer;
begin
  if Key = VK_Return then
    begin
     int:=strtoint(Edit1.text);
     Label4.Caption:= 'ganze Zahl: '+ inttostr(int);
     Label2.Caption:= 'HI: '+ inttostr(hi(int));
     Label3.Caption:= 'LO: '+ inttostr(lo(int));
end;
end;
Bei 2345 bekomme ich als 'HI' die Zahl 9 und bei 'LO' die Zahl 41 ?!?
Sollte da nicht HI 23 und LO 45 rauskommen?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: HI und LO liefern falsche Werte

  Alt 1. Jan 2015, 19:36
Nein, denn 9 * 256 = 2304 + 41 = 2345
Markus Kinzler
  Mit Zitat antworten Zitat
Codix32

Registriert seit: 23. Apr 2009
137 Beiträge
 
Delphi 2005 Personal
 
#3

AW: HI und LO liefern falsche Werte

  Alt 1. Jan 2015, 19:57
Nein, denn 9 * 256 = 2304 + 41 = 2345
Da habe ich wohl was falsch verstanden:
Habe diesen Code gefunden, der da was ganz anderes ausgibt...

Delphi-Quellcode:
Example code : Illustrate Ho and Lo functions
 var
   i : Integer;

 begin
  i := $2345; // $2345 hex : $23 hi byte, $45 lo byte
   ShowMessage(Format('Integer = $%x', [i]));
   ShowMessage(Format('Hi byte = $%x', [Hi(i)]));
   ShowMessage(Format('Lo byte = $%x', [Lo(i)]));
 end;
Show full unit code

Integer = $2345
Hi byte = $23
Lo byte = $45


Hm, die Hi-LO Functionen funktionieren da wohl auch nur mit Word (0..65535) und nicht mit Integer(...-3-2-1 0 1 2 3...)?

Gut für meinen Zweck mache ich mir einen:
Delphi-Quellcode:
Type
  TMyshrtInt = Record
     h,l : shortint
  end;
Eigentlich könnte man da auch statt 'ShortInt' Integer verwenden.
Delphi 2005 und die CPU nutzt doch die vollen 32Bit. Und Shortint bringt wohl keinen Schnelligkeitsvorteil.

Geändert von Codix32 ( 1. Jan 2015 um 20:03 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: HI und LO liefern falsche Werte

  Alt 1. Jan 2015, 20:03
Doch die sollten auch mit Integer funktionieren. Sie gehen aber Standardmässig von Dezimalzahlen aus und nicht von Zahlen in Hex.
Delphi-Quellcode:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
    int:Integer;
begin
  if Key = VK_Return then
    begin
     int:=strtoint('$'+Edit1.text);
     Label4.Caption:= 'ganze Zahl: '+ inttostr(int);
     Label2.Caption:= 'HI: '+ inttostr(hi(int));
     Label3.Caption:= 'LO: '+ inttostr(lo(int));
end;
Markus Kinzler
  Mit Zitat antworten Zitat
Codix32

Registriert seit: 23. Apr 2009
137 Beiträge
 
Delphi 2005 Personal
 
#5

AW: HI und LO liefern falsche Werte

  Alt 1. Jan 2015, 20:15
Doch die sollten auch mit Integer funktionieren. Sie gehen aber Standardmässig von Dezimalzahlen aus und nicht von Zahlen in Hex.
Delphi-Quellcode:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
    int:Integer;
begin
  if Key = VK_Return then
    begin
     int:=strtoint('$'+Edit1.text);
     Label4.Caption:= 'ganze Zahl: '+ inttostr(int);
     Label2.Caption:= 'HI: '+ inttostr(hi(int));
     Label3.Caption:= 'LO: '+ inttostr(lo(int));
end;
Danke @mKinzler, ich glaube, jetzt ist der Groschen gefallen
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:30 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