![]() |
interger zu String umwandlung;
Hi Delphianers
Ich versuche einen Integer wert in einen String umzuwandeln ohne die System.SysUnit zu benutzen. Ich habe dazu diese Funktion genommen.
Delphi-Quellcode:
Wenn ich z.b die Zahl 499514339328 die ich als Int64 deklariert habe mit der Funktion umwandle dann erhallte ich als Resultat 1298132992function IntToStr(I: int64): string; begin Str(I, Result); end; Wenn ich ne kürzere Zahl nehme dann funktionierts. Weis wer worann das liegen kann? Grüsse Tom |
AW: interger zu String umwandlung;
Zitat:
Zitat:
Ich würde einfach mal die Überlaufprüfung in den Projektoptionen aktivieren.
Delphi-Quellcode:
procedure TForm24.FormCreate(Sender: TObject);
var i: Int64; i2: Integer; S: string; begin {$RANGECHECKS ON} i := 499514339328; i2 := i; Str(i2, S); if S = '1298132992' then ; end; |
AW: interger zu String umwandlung;
Ha sich erledigt.
Man schreibe es so [DELPHI] function IntToStr2(I: int64): AnsiString; begin {$WARNINGS OFF} Str(I, Result); {$WARNINGS ON} end; [DELPHI] und es läuft auch mit grossen Zahlen unter Delphi XE |
AW: interger zu String umwandlung;
499514339328 mod 2^32 = 1298132992
Bist Du sicher, daß Du nicht irgendwo mit 32-Bit rechnest? Selbst mit meinem Uralt-Delphi 6 erhalteich das richtige Ergebnis
Delphi-Quellcode:
function IntToStr(I: int64): string;
begin Str(I, Result); end; procedure TForm1.Button1Click(Sender: TObject); var a: int64; begin a := 499514339328; showmessage(inttostr(a)); end; |
AW: interger zu String umwandlung;
Egal ob AnsiString, String, mit oder ohne Warnings ... XE3, XE8, 10.2 ... überall funktioniert es.
Wenn Str auf _Str0Long (System.pas) geht, dann wird Integer verwendet und bei _Str0Int64 (System.pas) ist es der Int64. So kann man auch direkt erkennen, was Str eigentlich macht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:34 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