Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   interger zu String umwandlung; (https://www.delphipraxis.net/192926-interger-zu-string-umwandlung%3B.html)

codenoob 1. Jun 2017 22:29


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:

function IntToStr(I: int64): string;
begin
   Str(I, Result);
end;
Wenn ich z.b die Zahl 499514339328 die ich als Int64 deklariert habe mit der Funktion umwandle dann erhallte ich als Resultat 1298132992

Wenn ich ne kürzere Zahl nehme dann funktionierts.

Weis wer worann das liegen kann?

Grüsse Tom

himitsu 1. Jun 2017 22:52

AW: interger zu String umwandlung;
 
Zitat:

Zitat von codenoob (Beitrag 1373275)
Weis wer worann das liegen kann?

Vermutung: Du schiebst den Wert vorher durch einen Integer durch und schneidest die oberen 32 Bit ab.

Zitat:

Zitat von codenoob (Beitrag 1373275)
Wenn ich z.b die Zahl 499514339328 die ich als Int64 deklariert habe mit der Funktion umwandle dann erhallte ich als Resultat 1298132992

Wie machst du das?

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;

codenoob 1. Jun 2017 22:52

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

gammatester 1. Jun 2017 22:54

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;

himitsu 1. Jun 2017 23:07

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 18:56 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