Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi 2 Zahlen in einer? (https://www.delphipraxis.net/43968-2-zahlen-einer.html)

LoL 11. Apr 2005 14:08


2 Zahlen in einer?
 
Hi

ich weis meine Frage ist eventuell etwas seltsam aber:
Kann man 2 beliebige Integer Zahlen in einer Loginteger so speichern das man sie hinterher auch wieder "auseinender" bekommt?

Stefan Dieler 11. Apr 2005 14:12

Re: 2 Zahlen in einer?
 
Hallo,

ich denke das wird gehen!
Erst als String zusammenketten und dann in LongInt wandeln.
Wenn die Zahlen immer gleich die gleiche Länge haben, dann kannst du sie ja wieder als String auseinanderschneiden und dann in Integer wandeln. Ansonsten musst du mindestens von einer Zahl die Länge speichern, die andere Länge der Zahl lässt sich ja dann errechnen.

static_cast 11. Apr 2005 14:14

Re: 2 Zahlen in einer?
 
Hallo,

schau dir mal HiWord und LoWord an.

LoL 11. Apr 2005 14:15

Re: 2 Zahlen in einer?
 
erstmal danke für deine antwort.

deine lösung würde gehen wenn ich weis wie groß die zahl ist bzw wieviel ziffern beide haben aber das weis ich nicht!
das ist ja das problem ich weis ja nicht wielang sie sind!
und mit 0en auffüllen kann ich ja nit
(zur info die 2 zahlen sind im bereich 0-1000)

Stefan Dieler 11. Apr 2005 14:18

Re: 2 Zahlen in einer?
 
Hallo,

und wenn du die die Länge der ersten Zahl entweder als erstes oder als letztes mit speicherst??
Diese Zahl musst du nur dann auslesen und abschneiden, bevor du die eigentlichen Zahlen auslesen kannst.

LoL 11. Apr 2005 14:20

Re: 2 Zahlen in einer?
 
gute idee so mach ichs!! danke :thumb:

moritz 11. Apr 2005 14:21

Re: 2 Zahlen in einer?
 
Integer und Longint sind das selbe. Aber klar kannst du das. Wenn du z.B. zwei Bytes in einem Word speichern willst, geht das so:
Delphi-Quellcode:
type
  TTwoBytes = Array[0..1] of Byte;

function BytesToWord(Byte1, Byte2: Byte): Word;
begin
  Result := Byte2 + Byte1 shl 8;
end;

function WordToBytes(lWord: Word): TTwoBytes;
begin
  Result[0] := Byte(lWord shr 8);
  Result[1] := Byte(lWord);
end;
Ah, eine Frage noch: Wieso willst du das machen?

LoL 11. Apr 2005 14:28

Re: 2 Zahlen in einer?
 
wenn man den Tipp von static_cast beachtet gehts sogar noch einfacher

Delphi-Quellcode:
var Longint0 : Longint;
begin
  Longint0 := LoWord(StrToInt(e1.Text)) or (LoWord(StrToInt(e2.Text)) shl 16);
  e3.Text := IntToStr(LoWord(Longint0));
  e4.Text := IntToStr(HiWord(Longint0));
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr.

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