AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein UInt64 Zuweisung an Integer, keine Warnung, Waum?
Thema durchsuchen
Ansicht
Themen-Optionen

UInt64 Zuweisung an Integer, keine Warnung, Waum?

Ein Thema von KodeZwerg · begonnen am 10. Feb 2022 · letzter Beitrag vom 18. Feb 2022
Antwort Antwort
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

AW: UInt64 Zuweisung an Integer, keine Warnung, Waum?

  Alt 10. Feb 2022, 18:08
Der Kommentar ist übrigens extra lächerlich, da der Compiler sehr wohl um die Typenwandlung weiß, da er dort nämlich bei eingeschalteter Bereichsprüfung den Code für einen potenziellen ERangeError generiert. (viele Grüße von der Ariane 5 an dieser Stelle )

Tools wie Pascal Analyzer generieren bei solchen Zuweisungen schon lange eine Warnung.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (10. Feb 2022 um 18:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.336 Beiträge
 
Delphi 12 Athens
 
#2

AW: UInt64 Zuweisung an Integer, keine Warnung, Waum?

  Alt 10. Feb 2022, 20:53
Und das ist eine Prüfung, die nun wirklich praktisch keine Zeit benötigt.
Ich denke mal die paar Millisekunden hierfür, fallen bei den anderen Langsamkeiten überhaupt nicht auf.

Dazu mal auch das Kompilieren mit RangeChecks nicht wirklich merklich langsamer wird.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: UInt64 Zuweisung an Integer, keine Warnung, Waum?

  Alt 11. Feb 2022, 08:19
Dafür fallen die etlichen Stunden Fehlersuche diese Woche mit vier beteiligten Personen auf
ok, dass auch der Rangecheck aus war, war unser Fehler.
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.674 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: UInt64 Zuweisung an Integer, keine Warnung, Waum?

  Alt 11. Feb 2022, 09:42
Dafür fallen die etlichen Stunden Fehlersuche diese Woche mit vier beteiligten Personen auf
ok, dass auch der Rangecheck aus war, war unser Fehler.
Willkommen im Club. Ganz toll ist es, wenn man aus Versehen im Debug-Mode RangeChecks nicht eingeschaltet hatte. Oder wenn es Units gibt, die damit nicht funktionieren, es aber nicht explizit ausschalten (MessageDigest_5 aus source\soap\wdslimporter lässt schön grüßen)
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: UInt64 Zuweisung an Integer, keine Warnung, Waum?

  Alt 12. Feb 2022, 03:25
Ok, offensichtlich habe ich durch ihre Abwesenheit in den Projektoptionen bedingt (ist bereits lange reportet) vergessen, dass es seit 10.2 folgende neue Warnungen gibt:

IMPLICIT_INTEGER_CAST_LOSS
IMPLICIT_CONVERSION_LOSS
COMBINING_SIGNED_UNSIGNED64

Wie gesagt kann man die derzeit leider nur über die $WARN Direktive im Code oder per dcc Kommandozeile steuern
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (12. Feb 2022 um 03:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.674 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: UInt64 Zuweisung an Integer, keine Warnung, Waum?

  Alt 12. Feb 2022, 11:34
Ok, offensichtlich habe ich durch ihre Abwesenheit in den Projektoptionen bedingt (ist bereits lange reportet) vergessen, dass es seit 10.2 folgende neue Warnungen gibt:

IMPLICIT_INTEGER_CAST_LOSS
IMPLICIT_CONVERSION_LOSS
COMBINING_SIGNED_UNSIGNED64

Wie gesagt kann man die derzeit leider nur über die $WARN Direktive im Code oder per dcc Kommandozeile steuern
Sind die nicht alle standardmäßig sowieso eingeschaltet?
Thomas Mueller
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.114 Beiträge
 
Delphi 2009 Professional
 
#7

AW: UInt64 Zuweisung an Integer, keine Warnung, Waum?

  Alt 13. Feb 2022, 01:17
1073 dürfte an sein, die anderen beiden nicht.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.196 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: UInt64 Zuweisung an Integer, keine Warnung, Waum?

  Alt 14. Feb 2022, 09:26
Nein, keines der drei scheint standardmäßig aktiv.

Vielen Dank, das macht mein Leben fortan deutlich einfacher

Delphi-Quellcode:
program Project1;

{$WARN IMPLICIT_INTEGER_CAST_LOSS ON}
{$WARN IMPLICIT_CONVERSION_LOSS ON}
{$WARN COMBINING_SIGNED_UNSIGNED64 ON}

uses System.SysUtils;

var
   someByte: Byte;
   someShort: ShortInt;
   someInt: Integer;
   someUInt64: UInt64;
begin
   // W1071 Implicit integer cast with potential data loss from 'Byte' to 'ShortInt'
   someByte := ShortInt.MaxValue + 1;
   someShort := someByte;

   // W1072 Implicit conversion may lose significant digits from 'UInt64' to 'Integer'
   someUInt64 := UInt64.MaxValue;
   someInt := someUInt64;

   // W1073 Combining signed type and unsigned 64-bit type - treated as an unsigned type
   someUInt64 := someInt + someUInt64;
end.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.196 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: UInt64 Zuweisung an Integer, keine Warnung, Waum?

  Alt 16. Feb 2022, 16:24
Gibt es, bei der Gelegenheit, vielleicht auch noch eine Compiler-Direktive die eine Warnung für nicht initialisierte Rückgabewerte aktiviert?

Also z.B. so etwas hier?

Delphi-Quellcode:
program Project1;

type
   TMyRecord = record
      a, b: Byte;
   end;

function returnRecord(): TMyRecord;
begin
   // do nothing
end;

var
   myRecord: TMyRecord;
begin
   myRecord := returnRecord();
   WriteLn(myRecord.a, ' ', myRecord.b);
   Readln;
end.
Ich würde ja selbst versuchen im DocWiki zu wühlen, aber das liefert mal wieder nur Server Error 500.
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:23 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