AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Meldung: Var nicht initzialisiert obwohl wert zugewiesen?!
Thema durchsuchen
Ansicht
Themen-Optionen

Meldung: Var nicht initzialisiert obwohl wert zugewiesen?!

Ein Thema von f4k3 · begonnen am 21. Nov 2007 · letzter Beitrag vom 22. Nov 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von f4k3
f4k3

Registriert seit: 15. Aug 2007
Ort: Nürnberg
313 Beiträge
 
Delphi 2007 Architect
 
#1

Meldung: Var nicht initzialisiert obwohl wert zugewiesen?!

  Alt 21. Nov 2007, 16:37
Nr. 1 - [Pascal Warnung] Unit1.pas(90): W1036 Variable 'res' ist möglicherweise nicht initialisiert worden

Delphi-Quellcode:
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;
Nr. 2 - [Pascal Warnung] Unit1.pas(143): W1036 Variable 'zei' ist möglicherweise nicht initialisiert worden

Delphi-Quellcode:
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.
Die Variablen wurden doch initzialisiert?! oder seh ich des falsch? Wertzuweisung = Initialisierung?!
Wenn jemand schlauer is, wovon ich sicherlich ausgehe dann klärt mich mal bidde auf, steig da net dahinter woran des etz hapern soll ^^
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von f4k3
f4k3

Registriert seit: 15. Aug 2007
Ort: Nürnberg
313 Beiträge
 
Delphi 2007 Architect
 
#2

Re: Meldung: Var nicht initzialisiert obwohl wert zugewiesen

  Alt 21. Nov 2007, 16:39
Hab vergessen den Buttons den Event-Handler zuzuweisen

sry ...
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#3

Re: Meldung: Var nicht initzialisiert obwohl wert zugewiesen

  Alt 21. Nov 2007, 16:39
Zitat:
Delphi-Quellcode:
case op of

    '+': res := op1 + op2;
    '-': res := op1 - op2;
    '*': res := op1 * op2;
    '/': res := op1 / op2;
end;
Und was, wenn op z.B. durch einen dummen Zufall 'A' ist? In diesem Fall ist res nicht initialisiert.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#4

Re: Meldung: Var nicht initzialisiert obwohl wert zugewiesen

  Alt 21. Nov 2007, 16:42
Bei Nummer 2 hast du doch if Sender = Button1 bis 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
Jonas
  Mit Zitat antworten Zitat
Benutzerbild von f4k3
f4k3

Registriert seit: 15. Aug 2007
Ort: Nürnberg
313 Beiträge
 
Delphi 2007 Architect
 
#5

Re: Meldung: Var nicht initzialisiert obwohl wert zugewiesen

  Alt 21. Nov 2007, 16:46
Zitat von DeddyH:
Zitat:
Delphi-Quellcode:
case op of

    '+': res := op1 + op2;
    '-': res := op1 - op2;
    '*': res := op1 * op2;
    '/': res := op1 / op2;
end;
Und was, wenn op z.B. durch einen dummen Zufall 'A' ist? In diesem Fall ist res nicht initialisiert.
res kann nicht zufällig 'A' sein. Es handelt sich hier um einen Taschenrechner, der über Buttons gesteuert wird.
ich kann des progi ja mal posten ^^

is nix besonderes ... nur mal bissl basics ausm Kochbuch nachmachen ... weil ich gewisse dinge versäumt hab
Angehängte Dateien
Dateityp: pas unit1_355.pas (3,6 KB, 0x aufgerufen)
Dateityp: exe project1_388.exe (400,0 KB, 0x aufgerufen)
Dateityp: dpr project1_108.dpr (188 Bytes, 1x aufgerufen)
Sascha
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Meldung: Var nicht initzialisiert obwohl wert zugewiesen

  Alt 21. Nov 2007, 16:51
Zitat von f4k3:
res kann zufällig 'A' sein.
Eher "op" kann "A" sein. Wenn dem so ist, dann wird "res" nicht initialisiert und enthält somit einen zufälligen Wert, da es eine lokale Variable ist.

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...
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Meldung: Var nicht initzialisiert obwohl wert zugewiesen

  Alt 21. Nov 2007, 16:51
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:
case bla of
  bla1: ;
  bla2: ;
    else
      res:= 0.0;
end;
Abhilfe2:
vor dem case alle var auf sinnvolle Werte setzen

kein code ...


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von f4k3
f4k3

Registriert seit: 15. Aug 2007
Ort: Nürnberg
313 Beiträge
 
Delphi 2007 Architect
 
#8

Re: Meldung: Var nicht initzialisiert obwohl wert zugewiesen

  Alt 21. Nov 2007, 16:56
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.
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von f4k3
f4k3

Registriert seit: 15. Aug 2007
Ort: Nürnberg
313 Beiträge
 
Delphi 2007 Architect
 
#9

Re: Meldung: Var nicht initzialisiert obwohl wert zugewiesen

  Alt 21. Nov 2007, 16:57
Zitat von Muetze1:
Zitat von f4k3:
res kann zufällig 'A' sein.
Eher "op" kann "A" sein. Wenn dem so ist, dann wird "res" nicht initialisiert und enthält somit einen zufälligen Wert, da es eine lokale Variable ist.

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...
excuse me ... es war gemeint res kann nicht zufällig 'A' sein
kleiner schönheitsfehler ... sry
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Meldung: Var nicht initzialisiert obwohl wert zugewiesen

  Alt 21. Nov 2007, 17:02
Zitat von f4k3:
Die Variablen wurden doch initzialisiert?! oder seh ich des falsch? Wertzuweisung = Initialisierung?!
Wenn jemand schlauer is, wovon ich sicherlich ausgehe dann klärt mich mal bidde auf, steig da net dahinter woran des etz hapern soll ^^
Die Variablen wurden eben nicht initialisiert.
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.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz