Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C nach Delphi, unsigned int64 ? (https://www.delphipraxis.net/125853-c-nach-delphi-unsigned-int64.html)

turboPASCAL 13. Dez 2008 08:07


C nach Delphi, unsigned int64 ?
 
Hi,

Gibt es in Delphi so etwas wie unsigned int64 Typ ?

Delphi-Quellcode:
type
  UInt64 = 0..18446744073709551615; // unsigned Int64 ?
Klappt ja nicht. :gruebel:

mkinzler 13. Dez 2008 08:21

Re: C nach Delphi, unsigned int64 ?
 
Den Typ sollte es in Delphi schon geben

turboPASCAL 13. Dez 2008 08:27

Re: C nach Delphi, unsigned int64 ?
 
Moin, ich habe D6 und da gibt es nur soweit ich weis Int64 und der ist signed.

// Edit:

Ah, ist anscheind ein Type Namens: ULARGE_INTEGER

also könne man sagen:
Delphi-Quellcode:
type
  uInt64 = ULARGE_INTEGER;

Hawkeye219 13. Dez 2008 09:54

Re: C nach Delphi, unsigned int64 ?
 
Hallo,

Zitat:

Zitat von turboPASCAL
Ah, ist anscheind ein Type Namens: ULARGE_INTEGER

also könne man sagen:
Delphi-Quellcode:
type
  uInt64 = ULARGE_INTEGER;

das wird leider nicht allzu viel bringen. ULARGE_INTEGER ist ein Record (siehe Windows.pas), mit dem man nicht sehr gut rechnen kann. Sein Feld QuadPart ist vom Typ LONGLONG - ein Alias für Int64...

Der Typ UInt64 ist offenbar schon in D7 eingeführt worden (klick). Die Implementierung war zumindest in den früheren Delphi-Versionen noch recht fehlerhaft, wie QC-Einträge beweisen. Ob das inzwischen besser geworden ist, kann ich leider nicht sagen.

Gruß Hawkeye

turboPASCAL 13. Dez 2008 09:59

Re: C nach Delphi, unsigned int64 ?
 
Also kann ich uInt64 in D6 nicht nuten, wenn ich ihn so wie oben deklariere ?
Wie könne man sich dann so einen Typ basteln ?

Hawkeye219 13. Dez 2008 10:35

Re: C nach Delphi, unsigned int64 ?
 
Matti, du wirst wohl oder übel die arithmetischen Operationen für einen UInt64 selbst implementieren müssen. Vielleicht kannst du dich an diesem Beispiel für eine 128-Bit-Arithmetik orientieren.

Die mit Delphi ausgelieferte Unit FmtBCD implementiert einige Routinen zur BCD-Arithmetik. Sie hätte eine Alternative sein können, wäre sie nicht in den früheren Versionen so fehlerhaft gewesen (QC-Eintrag). Vielleicht findest du ja im Netz eine Alternative.

Mit Hagens DEC habe ich mich bisher nicht beschäftigt, das Paket sollte aber auch geeignete Routinen enthalten.

Gruß Hawkeye

Flocke 13. Dez 2008 10:51

Re: C nach Delphi, unsigned int64 ?
 
Brauchst du denn wirklich den vollständigen Wertebereich von UInt64?
Wenn nein, dann nimm einfach
Delphi-Quellcode:
{$IFDEF DefiniertFallsDelphiVersionKleiner7}
type
  UInt64 = Int64;
{$ENDIF}
Du solltest dann aber die Überlaufprüfung ausschalten...

himitsu 13. Dez 2008 23:43

Re: C nach Delphi, unsigned int64 ?
 
Bei D6 (eigentlich auch bei meinem D7 noch) gibt es zwar 64 Bit unsingned Integer, allerdings ist die Berechnung dort fehlerhaft (vorallem DIV und MOD).



Aber eigentlich war ich der Meinung, daß System.UInt64 in D6 eingeführt wurde :gruebel:

Hast du denn mal versucht UInt64 direkt zu nutzen? (nicht selbst definiert, sondern gucken ob Delphi es da schon kennt)

turboPASCAL 14. Dez 2008 00:48

Re: C nach Delphi, unsigned int64 ?
 
Zitat:

Zitat von himitsu
Bei D6 (eigentlich auch bei meinem D7 noch) gibt es zwar 64 Bit unsingned Integer, allerdings ist die Berechnung dort fehlerhaft (vorallem DIV und MOD).

Ich brauchte es für einen Typedef.

Zitat:

Zitat von himitsu
Aber eigentlich war ich der Meinung, daß System.UInt64 in D6 eingeführt wurde :gruebel:

Nö, System.UInt64 gibts bei mir nicht.

Zitat:

Zitat von himitsu
Hast du denn mal versucht UInt64 direkt zu nutzen? (nicht selbst definiert, sondern gucken ob Delphi es da schon kennt)

Ja. Es gibt nur so ein ULARGE_INTEGER Record. Das sieht nicht so Vertrauenswürdig aus. ;)


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