![]() |
TObject und negativer Int64
Guten Abend,
Kann mir jemand erläutern was bei folgendem Code genau passiert ?
Delphi-Quellcode:
Bei showmessage() wird mir 4294967295 ausgegeben. Ich erwarte aber -1.
procedure TForm1.Button3Click(Sender: TObject);
var myObj:TObject; negNumber: Int64; begin negNumber := -1; myObj := TObject(negNumber); showmessage(int64(myObj).ToString); end; Habe bereits einen ähnlichen Artikel gefunden bei dem es um einen extended geht. ![]() Ich benötige den Cast ins TObject auch um einer Liste eine ID mitzugeben. Wie dort beschrieben wäre eine Lösung eine helper Klasse zu erstellen, find ich eigentlich gut soweit. Ich möchte nur verstehen warum bei meinem Beispiel oben nicht -1 ausgegeben wird. Gruss Int3g3r PS: Ist eine 32bit Applikation. |
AW: TObject und negativer Int64
Ein Pointer ist 32Bit
Int64 64Bit. Da passt vielleicht etwas nicht zusammen. Nur ne Vermutung Was passiert, wenn du aus dem Int64 ein "normales" integer machst. Nur Probehalber mal. |
AW: TObject und negativer Int64
Klar, man kann über Integer als Zwischenschritt casten, dann sind im Nagetiven 2 Millarden Werte verfügbar, aber dafür geht es im Positiven nun statt bis 4 nur noch bis 2 Milliarden, von den paar Trilliarden des Int64.
Wenn du mal nachsiehts, was mit den Bits im Zweierkomplement los ist, dann weißt du auch warum. Fazit: Mach es richtig. Es soll ein Object sein, also nimm auch ein Daten-Objekt und pack den Wert dort rein.
Delphi-Quellcode:
type
TMyData = class Value: Int64; constructor Create(Value: Int64); end; procedure TForm1.Button3Click(Sender: TObject); var myObj:TObject; negNumber: Int64; begin negNumber := -1; myObj := TMyData.Create(negNumber); showmessage(TMyData(myObj).Value.ToString); // irgendwo nicht vergessen myObj.Free; end; Oder das Programm in 64 Bit compilieren. :lol: |
AW: TObject und negativer Int64
Besten Dank für die Antworten
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:00 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