Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   UInt64 Zuweisung an Integer, keine Warnung, Waum? (https://www.delphipraxis.net/209938-uint64-zuweisung-integer-keine-warnung-waum.html)

himitsu 17. Feb 2022 15:52

AW: UInt64 Zuweisung an Integer, keine Warnung, Waum?
 
Joar, aber manchmal wäre es schon nett, wenn potentielle Fehler wegen nichtinitialisierter Results kämen.

Delphi-Quellcode:
function Test(S: string): string;
begin
  //Result := ''; // nicht initialisert
  for var C in S do
    Result := Result + C; // aka Result := S;
end;

procedure TForm16.FormCreate(Sender: TObject);
var
  S: string;
begin
  for var i := 1 to 5 do
    S := Test('Abc');
  ShowMessage(S);
end;
bzw.
Delphi-Quellcode:
procedure TForm16.FormCreate(Sender: TObject);
var
  S: string;
begin
  S := Test('Abc');
  S := Test('Abc');
  S := Test('Abc');
  ShowMessage(S);
end;
oder
Delphi-Quellcode:
procedure TForm16.FormCreate(Sender: TObject);
var
  S: string;
begin
  S := Test('Abc');
  ShowMessage(S);

  S := Test('Abc');
  ShowMessage(S);

  S := Test('Abc');
  ShowMessage(S);
end;
Tja, was würde man nun im Ausgang erwarten?

-> Einmal das, was Test macht, nichtwar?

freimatz 18. Feb 2022 11:35

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

Zitat von himitsu (Beitrag 1502396)
Joar, aber manchmal wäre es schon nett, wenn potentielle Fehler wegen nichtinitialisierter Results kämen.

Genau genommen wegen nicht explizit initialisierter Results. Weil initialisiert sind sie ja, nur hatl nicht so wie man es erwartet.
Für mich ist es noch ein grosser Unterschied ob etwas initialisiert wie ich es nicht denke aber immer gleich ist - oder ob die Wert gar nicht initialisiert sind und sie also zufällig sind und z.B. davon abhängen was gerade auf dem Stack so rumliegt.
Das sind dann so Fehler die erst nach Monaten oder Jahren erscheinen weil irgend jemand woanders im Code etwas geändert hat oder man von 32 auf 64-Bit wechselt.
Die Fehler wegen vermeintlich nicht initialisierter Results merkt man dann entweder sofort oder auch nie. :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:49 Uhr.
Seite 3 von 3     123   

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