Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - uint64 in string umwandeln


gerd99 - Do 30.04.20 15:31
Titel: uint64 in string umwandeln

Delphi-Quelltext
1:
2:
3:
4:
var
z:uint64;

label1.Caption:=inttostr(z);


inttostr scheint hier bei der Umwandlung von uint64 nicht mehr zu gehen. Was soll ich hernehmen?

Gerd


Ralf Jansen - Do 30.04.20 15:47

UIntToStr [http://docwiki.embarcadero.com/Libraries/Rio/de/System.SysUtils.UIntToStr]?


gerd99 - Do 30.04.20 15:52

Nein, das nimmt er nicht an. Logisch wäre uint64tostr aber das geht auch nicht.

Gerd

Moderiert von user profile iconTh69: Delphi-Tags hinzugefügt


Gausi - Do 30.04.20 16:12

Bei mir zeigt dieser Code

Delphi-Quelltext
1:
2:
3:
4:
5:
var z: UInt64;
begin
    z := High (UInt64);
    showmessage(UIntToStr(z));
end;

den erwarteten Wert von 18.446.744.073.709.551.615 an (ohne die Punkte natürlich). Probiert mit Delphi 2009 und der aktuellen CE.

Was passiert denn bei dir?


gerd99 - Do 30.04.20 16:45

Bir mir zeigt er nur 4294967295 an. Ich habe aber als Zielplattform 64 bit gewaehlt.

Gerd


LorenzS - Do 30.04.20 17:16

Mit was und wie befüllst du z?

Zitat:
Ich habe aber als Zielplattform 64 bit gewaehlt.

Zielplattform hat nichts mit den Datentypen zu tuen, die gibt es auch bei 32-Bit Anwendungen.
64Bit Plattform nimmt man wenn das Programm 2 GB Arbeitsspeicher verbraucht.


gerd99 - Do 30.04.20 17:16

Halt, NUR bei dem Beispiel habe ich mich vertippt und uint bloss eingegeben.
Also das zeigt er bei mir auch an.

Aber nachwievor, weiss ich nicht, wie ich die Zahl in einen String umwandele.

Gerd


gerd99 - Do 30.04.20 17:24

aha, mit Uinttostr funktioniert es, sehe ich gerade.


gerd99 - Do 30.04.20 18:00


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure BitSet(var TestZahl :uint64; bitnr:uint64);
begin
    TestZahl:= testzahl OR (1 shl BitNr);
end;

procedure TForm1.start;
var z:uint64;
begin
  z:=0;
  //z := High (UInt64);
  bitset(z,32);
  showmessage(UIntToStr(z));
  edit1.text:=(UIntToStr(z));
  label1.Caption:=uinttostr(z);

end;


Warum kommt jetzt bei z die Zahl 1 raus. Ich sage doch, es muss doch eine ganz grosse Zahl rauskommen? Ich komme da nicht ganz mit.

Gerd


Gausi - Do 30.04.20 18:57

Da musst du die 1 auf eine 64-Bit-Zahl casten

Delphi-Quelltext
1:
TestZahl:= testzahl OR (UIint64(1shl BitNr);                    


gerd99 - Do 30.04.20 19:34

Danke, und jetzt wo ich es sehe erinnere ich mich auch wieder daran. Aber ich waere von alleine nicht drauf gekommen.

Gerd