AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein IntToStr bereitet Probleme beim umstieg auf Delphi 12
Thema durchsuchen
Ansicht
Themen-Optionen

IntToStr bereitet Probleme beim umstieg auf Delphi 12

Ein Thema von Kishmet · begonnen am 10. Jan 2025 · letzter Beitrag vom 13. Jan 2025
Antwort Antwort
Seite 1 von 2  1 2      
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#1

AW: IntToStr bereitet Probleme beim umstieg auf Delphi 12

  Alt 10. Jan 2025, 11:00
Einmal die Bereichsprüfung beim Kompilieren eingeschaltet, einmal ausgeschaltet.
  Mit Zitat antworten Zitat
Kishmet

Registriert seit: 29. Okt 2020
Ort: Großraum Stuttgart
43 Beiträge
 
Delphi 12 Athens
 
#2

AW: IntToStr bereitet Probleme beim Umstieg auf Delphi 12

  Alt 10. Jan 2025, 11:57
In beiden Versionen ist der Code der Funktion IntToStr der Gleiche, auch drumherum:

Code:
{$IFOPT Q+}
  {$DEFINE __OVERFLOWCHECKS}
  {$OVERFLOWCHECKS OFF}
{$ENDIF}
function IntToStr(Value: Integer): string;
begin
  Result := _IntToStr32(Abs(Value), Value < 0);
end;

function IntToStr(Value: Int64): string;
begin
  Result := _IntToStr64(Abs(Value), Value < 0);
end;
{$IFDEF __OVERFLOWCHECKS}
  {$UNDEF __OVERFLOWCHECKS}
  {$OVERFLOWCHECKS ON}
{$ENDIF}
Sprich es hat sich nichts verändert. Das Verhalten tritt auch bei absolut neuen leeren Projekten auf die nichts anderes enthalten als:
Code:
ShowMessage(IntToStr($FFFFFFFFFFFFFFFF));
Oder möchtest du mir mitteilen das sich das auch tatsächlich Verändert hat? Falls ja, wo finde ich die passende Releasenote?

Geändert von Kishmet (10. Jan 2025 um 11:59 Uhr) Grund: Ergänzung
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.487 Beiträge
 
Delphi 12 Athens
 
#3

AW: IntToStr bereitet Probleme beim umstieg auf Delphi 12

  Alt 10. Jan 2025, 12:12
Die Konstante $FFFFFFFFFFFFFFF ist untypisiert und wird als (2^64 -1) interpretiert.

IntToStr() ist für Integer und Int64 deklariert.
Da ist die Meldung schon richtig.

Hier ist auch eine Typumwandlung notwendig:
Delphi-Quellcode:
const
  i: Integer = Integer($FFFFFFFF);
  i64: Int64 = Int64($FFFFFFFFFFFFFFFF);
Das ist übriegens die Überlaufprüfung, nicht die Bereichsprüfung.

Geändert von Blup (10. Jan 2025 um 12:26 Uhr)
  Mit Zitat antworten Zitat
Kishmet

Registriert seit: 29. Okt 2020
Ort: Großraum Stuttgart
43 Beiträge
 
Delphi 12 Athens
 
#4

AW: IntToStr bereitet Probleme beim umstieg auf Delphi 12

  Alt 10. Jan 2025, 12:26
Hi Blup,

Ja, habe ich auch grade festgestellt... und auch das an der besagten Stelle an der mein Problem auftaucht tatsächlich folgendes gemacht wird:

Code:
IntToStr(Meine_uInt64_Variable)
Aber uInt64 kann IntToStr gar nicht. Gibt es hier eine schlaue Lösung für? Denn Integer(Variable) ist an der Stelle ja einfach Falsch, oder? Und meine Frage bleibt tatsächlich bestehen... was genau hat sich geändert das es jetzt plötzlich Auswirkungen hat?

Geändert von Kishmet (10. Jan 2025 um 12:29 Uhr)
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.487 Beiträge
 
Delphi 12 Athens
 
#5

AW: IntToStr bereitet Probleme beim umstieg auf Delphi 12

  Alt 10. Jan 2025, 12:31
Die Funktion ist überladen:

function IntToStr(Value: Integer): string;
function IntToStr(Value: Int64): string;

Int64() wäre dann die richtige Umwandlung.
  Mit Zitat antworten Zitat
Kishmet

Registriert seit: 29. Okt 2020
Ort: Großraum Stuttgart
43 Beiträge
 
Delphi 12 Athens
 
#6

AW: IntToStr bereitet Probleme beim umstieg auf Delphi 12

  Alt 10. Jan 2025, 12:33
Aber auch int64(Meine_uInt64_var) könnte durchaus Informationsverlust bedeuten, oder übersehe ich gerade etwas?
  Mit Zitat antworten Zitat
Kishmet

Registriert seit: 29. Okt 2020
Ort: Großraum Stuttgart
43 Beiträge
 
Delphi 12 Athens
 
#7

AW: IntToStr bereitet Probleme beim umstieg auf Delphi 12

  Alt 10. Jan 2025, 12:39
Eigentlich ist das alles Schmutz weil es schlicht und ergreifend ein Fehler im Code ist und schon immer war... IntToStr, war schon immer die falsche Funktion an dieser Stelle. Mal schauen was für Fehler das jetzt nach sich zieht.

Mich würde immernoch interessieren was sich genau verändert hat, das dieser Fehler jetzt auftritt und vorher einfach ignoriert wurde, aber am Ende des Tages ist das egal.

Vielen lieben dank euch!
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.487 Beiträge
 
Delphi 12 Athens
 
#8

AW: IntToStr bereitet Probleme beim umstieg auf Delphi 12

  Alt 10. Jan 2025, 12:40
Nur wenn du tatsächlich Werte ab 2^63 oder größer hast.
Diese werden dann als negative Zahlen ausgegeben.
Also keine Verlust, eher eine Verfälschung.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#9

AW: IntToStr bereitet Probleme beim umstieg auf Delphi 12

  Alt 10. Jan 2025, 12:42
Ist denn in beiden Delphi die Bereichsprüfung eingeschaltet? (Kompileroptionen vergleichen.)

Alternativ im Quelltext:
Delphi-Quellcode:
{$R-}
// Hier der Code, der den Fehler verursacht
{$R+} // Optional: Reaktivieren der Bereichsprüfung am Ende
Die Funktion ist überladen:

function IntToStr(Value: Integer): string;
function IntToStr(Value: Int64): string;

Int64() wäre dann die richtige Umwandlung.
$FFFFFFFFFFFFFFFF (16 F) sind aber auch für Int64 zuviel.
  Mit Zitat antworten Zitat
Kishmet

Registriert seit: 29. Okt 2020
Ort: Großraum Stuttgart
43 Beiträge
 
Delphi 12 Athens
 
#10

AW: IntToStr bereitet Probleme beim umstieg auf Delphi 12

  Alt 10. Jan 2025, 13:02
@delphi.narium : Ja es hat sich nichts weiter verändert. Wenn dann eine Grundeinstellung irgendwo im Compiler (Also von RAD Studio selbst eine Defaulteinstellung die von 11 auf 12 geändert wurde) von der ich so nichts weiß. Alles andere (Sprich Code und Projekteinstellungen) ist identisch, wie gesagt auch mit neuen Projekten passiert genau das gleiche.

Geändert von Kishmet (10. Jan 2025 um 13:03 Uhr) Grund: Verständlichkeit
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:30 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