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