![]() |
Meldung: Var nicht initzialisiert obwohl wert zugewiesen?!
Nr. 1 - [Pascal Warnung] Unit1.pas(90): W1036 Variable 'res' ist möglicherweise nicht initialisiert worden
Delphi-Quellcode:
Nr. 2 - [Pascal Warnung] Unit1.pas(143): W1036 Variable 'zei' ist möglicherweise nicht initialisiert worden
procedure TForm1.IstButtonClick(Sender: TObject); // Ergebnis Berechnen
var res, op1, op2 : Double; code : Integer; s : string; begin if mode = 2 then begin Val(strBuff1, op1, code); // strBuff1 in Zahl op1 rückverwandeln Val(strBuff2, op2, code); // strBuff2 in Zahl op2 rückverwandeln case op of '+': res := op1 + op2; '-': res := op1 - op2; '*': res := op1 * op2; '/': res := op1 / op2; end; s:= Format('%g',[res]); // Ergebnis als Gleitkommazahl formatieren Label1.Caption := s; mode := 1; strBuff1 := ''; end; end;
Delphi-Quellcode:
Die Variablen wurden doch initzialisiert?! oder seh ich des falsch? Wertzuweisung = Initialisierung?!
procedure TForm1.ZeiButtonClick(Sender: TObject); // zeichenweise Zahleneingabe
var zei: Char; begin if Sender = Button10 then zei := '0'; if Sender = Button1 then zei := '1'; if Sender = Button2 then zei := '2'; if Sender = Button3 then zei := '3'; if Sender = Button4 then zei := '4'; if Sender = Button5 then zei := '5'; if Sender = Button6 then zei := '6'; if Sender = Button7 then zei := '7'; if Sender = Button8 then zei := '8'; if Sender = Button9 then zei := '9'; if Sender = Button11 then zei := '.'; if mode = 1 then begin strBuff1 := strBuff1 + zei; Label1.Caption := strBuff1; end else begin strBuff2 := strBuff2 + zei; Label1.Caption := strBuff1 + ' ' + op + ' ' + strBuff2; end; end; end. Wenn jemand schlauer is, wovon ich sicherlich ausgehe ;) dann klärt mich mal bidde auf, steig da net dahinter woran des etz hapern soll ^^ |
Re: Meldung: Var nicht initzialisiert obwohl wert zugewiesen
Hab vergessen den Buttons den Event-Handler zuzuweisen :coder2:
sry ... |
Re: Meldung: Var nicht initzialisiert obwohl wert zugewiesen
Zitat:
|
Re: Meldung: Var nicht initzialisiert obwohl wert zugewiesen
Bei Nummer 2 hast du doch
Delphi-Quellcode:
bis
if Sender = Button1
Delphi-Quellcode:
.
if Sender = Button11
Was wäre denn wenn Du als Sender Button12 hast? Dann würde res nichts zugewiesen werden und ist somit nicht initialisiert worden. Sprich: imm wenn eine variable nicht explizit initilisert wird (wenn es z.B. durch ein IF beschränkt ist) spuckt der Compiler eine Warnung aus. @ DeddyH: Da ham wir es uns ja super aufgeteilt :stupid: |
Re: Meldung: Var nicht initzialisiert obwohl wert zugewiesen
Liste der Anhänge anzeigen (Anzahl: 3)
Zitat:
ich kann des progi ja mal posten ^^ is nix besonderes ... nur mal bissl basics ausm Kochbuch nachmachen ... weil ich gewisse dinge versäumt hab :P |
Re: Meldung: Var nicht initzialisiert obwohl wert zugewiesen
Zitat:
Und zu den "if Sender = blubb then": Eine Frage: wenn der Sender nun Button1 ist, warum muss der Prozessor denn danach noch wie doof testen, ob es nicht trotzdem noch Button2 sein kann? Weil das kann dann eigentlich nicht sein - ausser du hast in allen Variablen die gleiche Instanz. Somit: else if verwenden und nicht das Programm unnötigt schwerfälliger zu machen... |
Re: Meldung: Var nicht initzialisiert obwohl wert zugewiesen
Hallo,
es gibt nicht um Code. Die Warnung sagt, dass du auf die Variable res zugreifst (nach dem Case), obwohl sie nicht initialisiert sein könnte. Abhilfe1: else des case verwenden
Delphi-Quellcode:
Abhilfe2:
case bla of
bla1: ; bla2: ; else res:= 0.0; end; vor dem case alle var auf sinnvolle Werte setzen kein code ... Heiko |
Re: Meldung: Var nicht initzialisiert obwohl wert zugewiesen
Das Problem ist doch bereits gelöst !!!
Die beiden Code-Schnipsel waren Events ... diese Events werden ausgeführt wenn bei Nr.1 ein Ziffernbutton des Taschenrechners gedrückt wird und bei Nr2 ein Operatorbutton des Taschenrechners gedrückt wird. Ich hatte nur übersehen dass ich den Operatortasten noch nicht das Event OnOpButtonClick zugewiesen hatte. Das war alles ... und es funktioniert auch ;) könnts ja selber testen. |
Re: Meldung: Var nicht initzialisiert obwohl wert zugewiesen
Zitat:
kleiner schönheitsfehler ... sry |
Re: Meldung: Var nicht initzialisiert obwohl wert zugewiesen
Zitat:
Initialisieren heisst u.a., ihnen einen Initialwert (Startwert) zuweisen. Du hast den Variablen zwar einen Wert zugewiesen, aber es kann Fälle geben, bei denen kein Wert zugewiesen wird. Dann sind sie nicht initialiert. Ich mache es immer so, dass ich in einer Funktion/Prozedur/Methode alle Variablen ganz am Anfang auf einen Startwert setze. String auf '', Integer und Real auf 0, Zeiger auf nil, usw. Wenn der Compiler dann motzt, dass "Variable nicht benutzt", kann ich es immernoch rausnehmen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:35 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