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
Seite 2 von 3     12 3      
Redeemer

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

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.160 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

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
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#13

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

  Alt 14. Feb 2022, 12:13
Delphi-Quellcode:
{$WARN IMPLICIT_INTEGER_CAST_LOSS ON}
{$WARN IMPLICIT_CONVERSION_LOSS ON}
{$WARN COMBINING_SIGNED_UNSIGNED64 ON}
Dankeschön dafür!

das macht mein Leben fortan deutlich einfacher
Unbedingt
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Der schöne Günther

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

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
Benutzerbild von himitsu
himitsu

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

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

  Alt 16. Feb 2022, 16:49
Ja, bei kleinen Records funktioniert es garnicht.

Mit Integer, Byte, Char oder Pointer, als Result, da geht es.



Auch für gemangte Typen (ala String, Interface, Variant) und Results größer als Pointer, da ist das Result initialisiert, aus Sicht dieser Methode ... das sieht du nur nicht.

Denn intern wird es dort als function returnRecord(var Result: TMyRecord); kompiliert.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Der schöne Günther

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

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

  Alt 16. Feb 2022, 17:04
Ja, an die Geschichte kann ich mich irgendwie erinnern.

Ist im Endeffekt aber doch wurscht zu was das kompiliert wird und was durch welche CPU-Register wandert - Fehlermeldungen und Warnungen zu offensichtlich falschem Code sind doch echt nicht zu viel verlangt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 16. Feb 2022, 19:13
Gab es schon, als Idee.

Im Prinzip muß der Compiler bloß ein "Vergessen" bekommen ... zu Beginn der Methode wird für diese Variable gesagt "du bist nicht initialisiert".


Die führen ja irgendwo eine Liste, welche Variable was für einen Zustand hat und da müssten sie "blos" den Zustand umschreiben und fertig.
Aber ist wohl doch nicht so leicht, so dass es wohl nochmal 20 Jahre dauern wird.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#18

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

  Alt 17. Feb 2022, 03:51
Zitat:
Aber ist wohl doch nicht so leicht, so dass es wohl nochmal 20 Jahre dauern wird.
Es ist nun mal so wie es ist. Leider!

Wenn man offensichtliche Fehler findet werden diese von der Gemeinde hier schön geredet bis einem das letztendlich egal ist.
Aufzugeben ist daher die beste Lösung und solche oder ähnliche Probleme irgendwie selbst zu beheben wenn es auf die ein oder andere weise möglich ist.
Es bringt nichts sich darüber auszulassen oder aufzuregen. Bleib Ruhig
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.446 Beiträge
 
Delphi 11 Alexandria
 
#19

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

  Alt 17. Feb 2022, 13:18
Bei der Sache mit "nicht initialisierte Rückgabewerte" ist es kein Fehler. Sie sind ja initialisiert und haben nicht einen zufälligen Inhalt.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#20

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

  Alt 17. Feb 2022, 13:33
Bei der Sache mit "nicht initialisierte Rückgabewerte" ist es kein Fehler. Sie sind ja initialisiert und haben nicht einen zufälligen Inhalt.
Das ist aus Sicht des Compilers sicher richtig. Für den Entwickler ist das aber nicht direkt ersichtlich. Andererseits, wer programmiert sollte schon wissen was er tut.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 15:50 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