Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Variable ist möglicherweise nicht initialisiert worden

  Alt 5. Feb 2019, 08:46
Delphi-Version: 10.2 Tokyo
Hallo!

Ich frage mich schon länger, ob die Validierung bzgl. der Warnung "Variable 'foo' ist möglicherweise nicht initialisiert worden" nicht ein überempfindliches Mimöschen ist. Ein Beispiel:
Delphi-Quellcode:
var
  I: Integer;
  LEncoding: TEncoding;
  LEncodings: TStringList;
begin
  LEncodings := TStringList.Create;
  try
    for I := 1 to 6 do begin
      case I of
        1: LEncoding := TEncoding.ANSI;
        2: LEncoding := TEncoding.ASCII;
        3: LEncoding := TEncoding.BigEndianUnicode;
        4: LEncoding := TEncoding.Unicode;
        5: LEncoding := TEncoding.UTF7;
        6: LEncoding := TEncoding.UTF8;
      end;
      LEncodings.AddObject(LEncoding.EncodingName, LEncoding); // <-- Warnung bzgl. "LEncoding"
    end;
    TOpenTextFileDialog(Sender).Encodings.Assign(LEncodings);
  finally
    FreeAndNil(LEncodings);
  end;
end;
Da fällt mir nun wirklich keine Möglichkeit ein, wie "LEncoding" nicht initialisiert sein könnte. Ist der Compiler nicht intelligent genug, die For-Schleife und das den Schleifenzähler bedingende Case in eine Verbindung zu setzen? Oder kann man das in der Konfiguration beeinflussen? Außer natürlich, die Warnung komplett abzuschalten, was ich keinesfalls möchte.

Grüße
Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat