![]() |
AW: UInt64 Zuweisung an Integer, keine Warnung, Waum?
1073 dürfte an sein, die anderen beiden nicht.
|
AW: UInt64 Zuweisung an Integer, keine Warnung, Waum?
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. |
AW: UInt64 Zuweisung an Integer, keine Warnung, Waum?
Zitat:
Zitat:
|
AW: UInt64 Zuweisung an Integer, keine Warnung, Waum?
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:
Ich würde ja selbst versuchen im DocWiki zu wühlen, aber das liefert mal wieder nur Server Error 500.
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. |
AW: UInt64 Zuweisung an Integer, keine Warnung, Waum?
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
Delphi-Quellcode:
kompiliert.
function returnRecord(var Result: TMyRecord);
|
AW: UInt64 Zuweisung an Integer, keine Warnung, Waum?
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. |
AW: UInt64 Zuweisung an Integer, keine Warnung, Waum?
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. |
AW: UInt64 Zuweisung an Integer, keine Warnung, Waum?
Zitat:
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 :-D |
AW: UInt64 Zuweisung an Integer, keine Warnung, Waum?
Bei der Sache mit "nicht initialisierte Rückgabewerte" ist es kein Fehler. Sie sind ja initialisiert und haben nicht einen zufälligen Inhalt.
|
AW: UInt64 Zuweisung an Integer, keine Warnung, Waum?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 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 by Thomas Breitkreuz