![]() |
Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
Hallo Leute,
ich versuche grad ein Programm zu erstellen und steh offensichtlich ziemlich auf der Leitung. Es kommt immer die Fehlermeldung, "[Hinweis] Unit1.pas(55): Auf 'rProzentsatz' zugewiesener Wert wird niemals benutzt". Ich komm aber nicht drauf, wo genau jetzt der Fehler liegt, weil ich rProzentsatz ja im Prinzip einen Wert zugewiesen habe, mit zwei Prozent im Rahmen liegt - oder? Vielleicht findet ja wer von euch den Fehler. Vielen Dank!
Delphi-Quellcode:
procedure TForm1.B_BerechneClick(Sender: TObject);
const rEinzelpreis=30; var rMenge, rGesamtpreis, rProzentsatz, rProzentwert, rRechnungsbetrag :real; begin rMenge:= StrToFloat (E_Menge.Text); rGesamtpreis:= rMenge*rEinzelpreis ; E_Gesamtpreis.Text:= FloatToStr (rGesamtpreis); E_Prozentsatz.text:= FloatToStr (rProzentsatz); rProzentwert:= rProzentsatz*rGesamtpreis; E_Prozentwert.text:= FloatToStr (rProzentwert); rRechnungsbetrag:= rGesamtpreis-rProzentwert ; E_Rechnungsbetrag.text:= FloatToStr (rRechnungsbetrag); IF rGesamtpreis >100 THEN begin rProzentsatz:= 0.03 end ELSE begin IF rGesamtpreis<=100 THEN rProzentsatz:=0.02; end; end; end. |
AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
Das ist kein Fehler, sondern ein Hinweis: Der Wert, den Du zuweist, wird nirgens verwendet. Das ist so, als ob Du einen Korb mit Äpfeln füllst, aber niemand isst sie. Dann ist es vollkommen egal, ob Du 3, 5 oder 195 Äpfel in den Korb legst: Deine Mutti wird dir immer sagen:'Die Äpfel isst doch eh keiner'.
|
AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
Das Problem ist nicht der Wert, den du zugewiesen hast, sondern das du die Variable danach nirgends mehr verwendest.
Bitte geh auch das nächste Mal hin und poste deinen Code in Delphi-Code Tags.
Code:
Oder der griechen Helm über dem Texteditor.
[DELPHI]
DeinCode [/DELPHI] |
AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
Die "Fehlermeldung" ist wie gesagt nur ein Hinweis, aber was ich sonst aus deinem Quelltext ersehen kann, ist, dass Du rProzentsatz gleich schon als erstes verwendest, bevor Du die Variable überhaupt initialisiert hast, bzw. ihr einen Wert zugewiesen hast, und das wird später zu Problemen führen, spätestens wenn Du mit dem Wert rechnest.
Oder fehlt da ein stück Code? |
AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
Zitat:
|
AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
Okay, ich hab meinen Fehler gefunden.
Hier mal die überarbeitete Version: 1. Kreisquarder
Code:
procedure TForm1.FormActivate(Sender: TObject);
var Anfang, Ende, J,x,y,I :Integer; begin Anfang:= 0; Ende:= 5; For J:= 1 to 10 do begin y:= (Form1.ClientHeight-50)-J*86; For I:= 1 to Ende do begin x:= I*100; Canvas.ellipse(x+Anfang,y,x+100+Anfang,y+100); Sleep(200) end; Anfang:= Anfang+50; Ende:= Ende-1; end; end; end. |
AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
So kann man Probleme naturlich auch lösen:
Man schreibt ein komplett anderes Programm! Aber was hat das mit deiner ursprünglichen Frage zu tun? :gruebel: |
AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
Dieser Fehler wurde bei mir immer angezeigt, wenn die Syntax im ersten Exzerpt schwächer war als im zweiten. Versuch es mal so:
2. Farbblock
Code:
procedure TForm1.B_ZeichnenClick(Sender: TObject);
var x1, y1 , x2 , y2 :integer; begin with form1.image1.canvas do begin x1:=Random(Width); x2:=Random(Width); y1:=Random(Height); y2:=Random(Height); Canvas.Pen.Color :=Farbe; Canvas.Brush.Color:=Farbe; Canvas.Pen.Mode :=Art; Canvas.Rectangle(x1,y1,x2,y2) end; end; procedure TForm1.B_EndeClick(Sender: TObject); begin close; end; procedure TForm1.R_weissClick(Sender: TObject); begin Farbe:=clWhite; end; procedure TForm1.R_pinkClick(Sender: TObject); begin Farbe:=clfuchsia; end; procedure TForm1.R_schwarzClick(Sender: TObject); begin Farbe:=clBlack ; end; procedure TForm1.R_gruenClick(Sender: TObject); begin Farbe:=clGreen; end; procedure TForm1.R_PurpleClick(Sender: TObject); begin Farbe:=clpurple; end; procedure TForm1.B_LeerClick(Sender: TObject); begin if B_Leer.Caption='leer' then begin Hg:=bsSolid; B_Leer.caption:='gefüllt'; end else begin Hg:=bsClear; B_Leer.caption:='leer'; end end; procedure TForm1.B_NormalClick(Sender: TObject); begin if B_Normal.Caption='normal' then begin Art:=pmNotCopy; B_Normal.caption:='komplementär'; end else begin art:=pmCopy; B_Normal.caption:='normal'; end; end; procedure TForm1.B_LoeschenClick(Sender: TObject); begin with Form1.Image1 do begin picture:=nil; end; end; |
AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
Warum nicht einfach
Delphi-Quellcode:
Das with ist hier total überflüssig. Genauso wie die Verwendung einer benannten Instanz (Form1). Gibt es mehrere Instanzen bzw. wird die vorhandene umbenannt funktioniert der Code falsch oder gar nicht mehr.
procedure TForm1.B_LoeschenClick(Sender: TObject);
begin Image1.picture:=nil; end; |
AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
Hm, @J.Jay, ich seh da jetzt nicht so ganz den Zusammenhang, was genau hätte ich bei mir denn jetzt ändern sollen?
Naja, hab hier erstmal was anderes: 1. Kreis
Code:
procedure TForm1.FormPaint(Sender: TObject);
var rKreis :integer; begin rKreis:=1; while rKreis <=200 do begin canvas.Brush.Style:= bsclear; canvas.MoveTo(400,400); canvas.Ellipse (400+rKreis,400+rKreis,400-rKreis,400-rKreis); rKreis:=rKreis+2; sleep (30); end; end; end. 2.
Code:
procedure TForm1.FormPaint(Sender: TObject);
begin canvas.Pen.Color:= clgreen; canvas.brush.color:= clyellow; canvas.Rectangle(100,300,400,100); Canvas.Pen.Color:= clRed; canvas.Brush.color:= clblue; Canvas.Ellipse(100,300,400,100); canvas.Brush.Style:= bsclear; Canvas.TextOut(20,90, 'Hallo'); end; end. 3. Quadratische Gleichung
Code:
procedure TForm1.B_losClick(Sender: TObject);
var ra, rb ,rc, rx, rx1, rx2 ,rD :real; begin ra:=StrtoFloat(E_a.Text); rb:=StrToFloat(E_b.Text); rc:=StrToFloat(E_c.Text); rD:= (rb)*(rb) - 4*(ra)*(rc); If ra=0 Then If rb=0 Then If rc=0 Then begin E_Menge.Text:= ('Alle reellen Zahlen sind Lösungen'); E_Menge2.Text:= ('-'); end Else begin E_Menge.Text:= ('Keine Lösung'); E_Menge2.Text:= ('-'); end Else begin rx:= -rc/rb; E_Menge.text:= FloatToStr (rx); E_Menge2.Text:= ('-'); end Else If rD>0 Then begin rx1:= (-rb - sqrt (rD) )/(2*ra); rx2:= (-rb + sqrt (rD) )/ (2*ra); E_Menge.Text:= FloatToStr (rx1); E_Menge2.Text:= FloatToStr (rx2); end Else if rD=0 Then begin rx:= -rb/ (2* ra); E_Menge.text:= FloatToStr (rx); E_Menge2.Text:= ('-'); end Else begin E_Menge.text:= ('Keine Lösung'); E_Menge2.Text:= ('-'); end; end; end. 4. Linien
Code:
procedure TForm1.FormPaint(Sender: TObject);
var rZahl :integer; begin for rZahl := 10 downto 1 do begin canvas.MoveTo(100,rZahl*50); canvas.LineTo(700,rZahl*50); sleep (300); end; end; end. |
AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
OnPaint ist für den Zeichenvorgang, nur für den Zeichenvorgang. Die Animationen haben da nichts zu suchen.
Btw. was hat das mit der ursprünglichen Frage zu tun? |
AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
Zitat:
Da ich keinen Blog habe, schreibe ich hier einfach mal was rein, jeder ist herzlich eingeladen auch etwas zu schreiben, egal ob es passt oder nicht :mrgreen: BTW Wir haben hier auch
Code:
Tags, damit sieht der Delphi-Quellcode wesentlich schöner aus und ist vor allem besser lesbar.
[DELPHI][/DELPHI]
Code:
vs.
procedure foo;
begin // do something end;
Delphi-Quellcode:
... ok, da hat Aviator schon drauf hingewiesen, scheint aber wohl nicht anzukommen :roll:
procedure foo;
begin // do something end; |
AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
Zitat:
Ich hab gedacht, der Thread ist so alt, dass meine Merkhilfe eh niemand liest :D |
AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
Code:
Ich wollte auch mal was sagen.
250g Mehl, Typ 550
160ml warmes Wasser 1/2 pkg Trockenhefe 1 Teelöffel Salz Alles vermischen, 10 min Kneten. 20 min ruhen lassen. For i :=1 to 3 do begin Teig zu einem Quadrat ausziehen. Die Ecken nach innen klappen. Teig wieder in die Schüssel geben. end; Teig zu einem Baguette formen, oben schräg einschneiden. Zudecken, 30 min gehen lassen. Ofen auf 250°C vorheizen. Schüssel mit Wasser in den Ofen, Baguette auf Backblech über die Schüssel. Temperatur auf 180°C runterschalten, 25min backen. Brot rausnehmen, mit Wasser einpinseln. 3min wieder in den Ofen. Fertig. |
AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
Zitat:
|
AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
Hat mir echt gut gefallen, Delphi mochte das nur leider nicht, Dejan Vu... Naja, neuer Versuch :D
Delphi-Quellcode:
-------------------------
procedure TForm1.B_StartClick(Sender: TObject);
var i, rAnzahl, rVerzogerung, x,y, rDicke :integer; begin randomize ; rAnzahl:= StrToInt (E_Anzahl.Text); rVerzogerung:= StrToInt (E_Pause.Text); For i:=1 To rAnzahl do begin x:= random (800); y:= random (800); rDicke:= random (30); IF C_blau.Checked then begin Canvas.Brush.Color:= clblue or random (8000000); end ELSE begin IF C_Gelb.Checked then begin Canvas.Brush.Color:= clyellow or random (8000000); end ELSE begin IF C_gruen.Checked then begin Canvas.Brush.Color:= clgreen or random (8000000); end ELSE IF C_blau.Checked then begin Canvas.Brush.Color:= clblue or random (8000000); end ELSE begin IF C_pink.Checked then begin Canvas.Brush.Color:= clfuchsia or random (8000000); end ELSE begin IF C_red.Checked then begin Canvas.Brush.Color:= clred or random (8000000); end ELSE begin IF C_ighlight.Checked then begin Canvas.Brush.Color:= clskyblue or random (800000); end ELSE begin IF C_teal.Checked then begin Canvas.Brush.Color:= clteal or random (8000000); end ELSE begin IF C_navy.Checked then begin Canvas.Brush.Color:= clteal or random (8000000); end ELSE begin Canvas.Brush.Color:= clblack; end; end; end; end; end; end; end; end; Canvas.Ellipse(x,y, x+rDicke, y+rDicke) ; sleep (rVerzogerung); end; end; procedure TForm1.B_ClearClick(Sender: TObject); begin refresh; E_Anzahl.Text:= ' '; E_Pause.Text:= ' '; end; end.
Delphi-Quellcode:
procedure TForm1.B_DrawClick(Sender: TObject); begin Randomize; If rbW.checked = true Then Form1.Image1.Canvas.Pen.Color:=clWhite Else If rbB.Checked = true Then Form1.Image1.Canvas.Pen.Color:=clBlack Else If rbY.Checked = true Then Form1.Image1.Canvas.Pen.Color:=clYellow Else If rbG.Checked = true Then Form1.Image1.Canvas.Pen.color:=clGreen Else If rbBl.Checked = true Then Form1.Image1.Canvas.Pen.Color:=clNavy Else If rbR.Checked = true Then Form1.Image1.Canvas.Pen.Color:=clRed; If RadioButton2.Checked = true Then Form1.Image1.Canvas.Brush.Color:= Form1.Image1.Canvas.Pen.Color; x:= (Random(Form1.Image1.ClientWidth)); y:= (Random(Form1.Image1.ClientHeight)); a:= (Random(Image1.ClientWidth-x)); b:= (Random(Image1.ClientHeight-y)); Form1.Image1.Canvas.Rectangle(x,y,x+a,y+b); end; procedure TForm1.B_EmtptyClick(Sender: TObject); begin Image1.Picture:= nil; end; procedure TForm1.B_BackroundClick(Sender: TObject); begin If rbW.checked = true Then Form1.Image1.Canvas.Brush.Color:=clWhite Else If rbB.Checked = true Then Form1.Image1.Canvas.Brush.Color:=clBlack Else If rbY.Checked = true Then Form1.Image1.Canvas.Brush.Color:=clYellow Else If rbG.Checked = true Then Form1.Image1.Canvas.Brush.color:=clGreen Else If rbBl.Checked = true Then Form1.Image1.Canvas.Brush.Color:=clNavy Else If rbR.Checked = true Then Form1.Image1.Canvas.Brush.Color:=clRed; Form1.Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height); end; end. |
AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
Delphi-Quellcode:
implementation
var Farbe: tColor; Hg : tBrushStyle; Art : tPenMode; {$R *.dfm} procedure TForm1.B_ZeichnenClick(Sender: TObject); var x1, y1 , x2 , y2 :integer; begin with form1.image1.canvas do begin x1:=Random(Width); x2:=Random(Width); y1:=Random(Height); y2:=Random(Height); Canvas.Pen.Color :=Farbe; Canvas.Brush.Color:=Farbe; Canvas.Pen.Mode :=Art; Canvas.Rectangle(x1,y1,x2,y2) end; end; procedure TForm1.B_EndeClick(Sender: TObject); begin close; end; procedure TForm1.R_weissClick(Sender: TObject); begin Farbe:=clWhite; end; procedure TForm1.R_pinkClick(Sender: TObject); begin Farbe:=clfuchsia; end; procedure TForm1.R_schwarzClick(Sender: TObject); begin Farbe:=clBlack ; end; procedure TForm1.R_gruenClick(Sender: TObject); begin Farbe:=clGreen; end; procedure TForm1.R_PurpleClick(Sender: TObject); begin Farbe:=clpurple; end; procedure TForm1.B_LeerClick(Sender: TObject); begin if B_Leer.Caption='leer' then begin Hg:=bsSolid; B_Leer.caption:='gefüllt'; end else begin Hg:=bsClear; B_Leer.caption:='leer'; end end; procedure TForm1.B_NormalClick(Sender: TObject); begin if B_Normal.Caption='normal'then begin Art:=pmNotCopy; B_Normal.caption:='komplementär'; end else begin art:=pmCopy; B_Normal.caption:='normal'; end ; end; procedure TForm1.B_LoeschenClick(Sender: TObject); begin with Form1.Image1 do begin picture:=nil; end; end; end. |
AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
Zitat:
![]() |
AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
Nennt mich altmodisch, nicht mehr zeitgemäß, analfixiert, aber ein unformatierter Code tut mir in den Augen weh. Wie soll man da verstehen was das Programm macht?
Delphi-Quellcode:
Oder noch anders. Wozu die nagen Begins und Ends?
procedure TForm1.B_StartClick(Sender: TObject);
var i, rAnzahl, rVerzogerung, x, y, rDicke :integer; begin randomize ; rAnzahl:= StrToInt (E_Anzahl.Text); rVerzogerung:= StrToInt (E_Pause.Text); For i:=1 To rAnzahl do begin x:= random (800); y:= random (800); rDicke:= random (30); IF C_blau.Checked then begin Canvas.Brush.Color:= clblue or random (8000000); end ELSE begin IF C_Gelb.Checked then begin Canvas.Brush.Color:= clyellow or random (8000000); end ELSE begin IF C_gruen.Checked then begin Canvas.Brush.Color:= clgreen or random (8000000); end ELSE IF C_blau.Checked then begin Canvas.Brush.Color:= clblue or random (8000000); end ELSE begin IF C_pink.Checked then begin Canvas.Brush.Color:= clfuchsia or random (8000000); end ELSE begin IF C_red.Checked then begin Canvas.Brush.Color:= clred or random (8000000); end ELSE begin IF C_ighlight.Checked then begin Canvas.Brush.Color:= clskyblue or random (800000); end ELSE begin IF C_teal.Checked then begin Canvas.Brush.Color:= clteal or random (8000000); end ELSE begin IF C_navy.Checked then begin Canvas.Brush.Color:= clteal or random (8000000); end ELSE begin Canvas.Brush.Color:= clblack; end; end; end; end; end; end; end; end; Canvas.Ellipse(x,y, x+rDicke, y+rDicke) ; sleep (rVerzogerung); end; end; procedure TForm1.B_ClearClick(Sender: TObject); begin refresh; E_Anzahl.Text:= ' '; E_Pause.Text:= ' '; end;
Delphi-Quellcode:
procedure TForm1.B_StartClick(Sender: TObject);
var i, rAnzahl, rVerzogerung, x, y, rDicke :integer; begin randomize ; rAnzahl:= StrToInt (E_Anzahl.Text); rVerzogerung:= StrToInt (E_Pause.Text); for i:=1 to rAnzahl do begin x:= random (800); y:= random (800); rDicke:= random (30); if C_blau.Checked then Canvas.Brush.Color := clblue or random (8000000) else if C_Gelb.Checked then Canvas.Brush.Color := clyellow or random (8000000) else if C_gruen.Checked then Canvas.Brush.Color := clgreen or random (8000000) else if C_blau.Checked then Canvas.Brush.Color := clblue or random (8000000) else if C_pink.Checked then Canvas.Brush.Color := clfuchsia or random (8000000) else if C_red.Checked then Canvas.Brush.Color := clred or random (8000000) else if C_ighlight.Checked then Canvas.Brush.Color := clskyblue or random (800000) else if C_teal.Checked then Canvas.Brush.Color := clteal or random (8000000) else if C_navy.Checked then Canvas.Brush.Color := clteal or random (8000000) else Canvas.Brush.Color:= clblack; Canvas.Ellipse(x,y, x+rDicke, y+rDicke) ; sleep (rVerzogerung); end; end; procedure TForm1.B_ClearClick(Sender: TObject); begin refresh; E_Anzahl.Text:= ' '; E_Pause.Text:= ' '; end; |
AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
Dann kannst du dir in deinem Beitrag auch alle Else sparen.
Da jeder Checkstatus aktiv sein könnte (anders als bei RadioGroups) erübrigt sich die Else abfrage. Else = EntwederOder Davon ab ist die Wahl einer Checkbox dafür unangebracht. Eine Radio Group wäre dann die optimale Verwendung. gruss |
AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
EWeiss hat Recht, das könnte man auch so lösen:
Delphi-Quellcode:
Nur was soll das bewirken?
procedure TForm1.Button1Click(Sender: TObject);
const Col: array[0..8] of TColor = (clblue, clyellow, clgreen, clblue, clfuchsia, clred, clskyblue, clteal, clteal); //Farben var i, rAnzahl, rVerzogerung, x, y, rDicke :integer; begin randomize ; rAnzahl:= StrToInt (E_Anzahl.Text); rVerzogerung:= StrToInt (E_Pause.Text); for i:=1 to rAnzahl do begin x:= random (800); y:= random (800); rDicke:= random (30); if ColorRadioGroup.ItemIndex > -1 then // In RadioGroup alle 9 Farben auflisten Canvas.Brush.Color := Col[ColorRadioGroup.ItemIndex] or random (8000000) else Canvas.Brush.Color := clBlack; Canvas.Ellipse(x,y, x+rDicke, y+rDicke) ; sleep (rVerzogerung); end; end;
Delphi-Quellcode:
... or random (8000000)
... |
AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
Zitat:
Meine Meinung dazu! Ist völliger Quatsch da kann man direkt Random(8000000) verwenden und sich den ganzen anderen Kram mit Radio Button und Checkboxen sparen. Entweder man definiert oder möchte eine feste Farbe festlegen oder man verwendet Random.. für eine beliebige. Ich sehe zumindest keine Logik hinter der Verwendung "or Random(8000000)" gruss |
AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
Bei einer RadioBox/RadioGroup kann man die Else weg lassen, bzw. gleich ein CASE verwenden.
Bei den IFs muß man aufpassen, denn ohne ELSE dreht sich die Auswertungsreihenfolge um, wenn mehr als eine Checkbox aktiviert ist.
Delphi-Quellcode:
if C_blau.Checked then
Canvas.Brush.Color := clblue or random (8000000) else if C_Gelb.Checked then Canvas.Brush.Color := clyellow or random (8000000) else if C_gruen.Checked then Canvas.Brush.Color := clgreen or random (8000000) ... else Canvas.Brush.Color:= clblack;
Delphi-Quellcode:
Canvas.Brush.Color:= clblack;
... if C_gruen.Checked then Canvas.Brush.Color := clgreen or random (8000000) if C_Gelb.Checked then Canvas.Brush.Color := clyellow or random (8000000) if C_blau.Checked then Canvas.Brush.Color := clblue or random (8000000) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11: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 by Thomas Breitkreuz