![]() |
Compiler-Warnung: ...ist möglicherweise nicht initialisiert
Ich verstehe es nicht, es kommt zu folgender Warnmeldung:
Zitat:
Delphi-Quellcode:
Kann mir das einer erklären :?: :?: :?:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer; Obj: TObject; begin for i:=0 to Memo1.Lines.Count-1 do begin if Memo1.Lines[i]='Parent' then Obj:=Self // hier initialisiert else if Memo1.Lines[i]<>'' then Obj:=FindComponent(Memo1.Lines[i]) // hier auch initialisiert else Continue; // nicht initialisiert, aber Schleife wird ja auch fortgesetzt if IsPublishedProp(Obj,'Font') then // <--- hier Warnmeldung --- {...} end; end; |
Re: Compiler-Warnung: ...ist möglicherweise nicht initialisi
es ist in ner if-anweisung und damit logischer weise eventuell nicht initialisiert, da die if ja nicht true sein muss
wenn du weißt das es true wird, kannst du es einfach ignorieren. |
Re: Compiler-Warnung: ...ist möglicherweise nicht initialisi
Aber ich komme doch gar nicht in die IF-Anweisung, wenn Obj nicht initialisiert ist:
Delphi-Quellcode:
Oder?
{..}
else Continue; // nicht initialisiert, aber ich komme dann auch nicht in die IF-Anweisung if IsPublishedProp(Obj,'Font') then {..} Zitat:
Verstehe ich nicht. Was hat das denn damit zu tun, ob die IF-Anweisung true oder false ergibt? Überprüfen tut er die doch immer... ..außer, bei Continue !?!? |
Re: Compiler-Warnung: ...ist möglicherweise nicht initialisi
Continue ist halt so eine Ausnahme die vom Compiler nicht berücksichtigt wird (ist ja nur ein besseres goto)
|
Re: Compiler-Warnung: ...ist möglicherweise nicht initialisi
Delphi-Quellcode:
... versuchst mal so ... es muß einfach nur sichergestellt werden, das obj vorher was zugewiesen wurde, dann mekert delphi nicht:
else
Continue;
Delphi-Quellcode:
else
begin Continue; obj := nil; end; |
Re: Compiler-Warnung: ...ist möglicherweise nicht initialisi
Okay, der Compiler berücksichtigt das Continue nicht.
Das war's. Aber zu einem Fehler kann es beim Ausführen dieses Codes nicht kommen ?!? @himitsu: Du meinst wohl:
Delphi-Quellcode:
{...}
Obj := nil; // nicht self {...} |
Re: Compiler-Warnung: ...ist möglicherweise nicht initialisi
Mich würde ein Continue, das von ausführbaren Anweisungen gefolgt wird, eher verwirren.
Eine Initialisierung vor der Schleife finde ich persönlich sauberer. Gruß Hawkeye |
Re: Compiler-Warnung: ...ist möglicherweise nicht initialisi
Ja, das denk ich auch.
Also so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer; Obj: TObject; begin Obj := nil; //<-- hier hinzugefügt for i:=0 to Memo1.Lines.Count-1 do begin if Memo1.Lines[i]='Parent' then Obj:=Self else if Memo1.Lines[i]<>'' then Obj:=FindComponent(Memo1.Lines[i]) else Continue; if IsPublishedProp(Obj,'Font') then {...} end; end; |
Re: Compiler-Warnung: ...ist möglicherweise nicht initialisi
Zitat:
Ist es sauberer, besser,... direkt am Anfang einer Function/Procedure Variablen zu initialisieren oder bevor sie wirklich zum Einsatz kommen?
Delphi-Quellcode:
oder so?
Var
I : Integer; Begin I := 0; For I := 0 To... ... End;
Delphi-Quellcode:
Var
... ... ... I := 0; For I := 0 To... ... |
Re: Compiler-Warnung: ...ist möglicherweise nicht initialisi
dein Beispiel ist etwas daneben. Denn vor einer "For-Schleife" ist es völlig überflüssig die Zählvariable zu initialisieren weil der Wert niemals verwendet wird (der Compiler wird dir auch eine Meldung ausgeben)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:50 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-2025 by Thomas Breitkreuz