Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Fehlermeldung "zugewiesener Wert wird niemals benutzt"? (https://www.delphipraxis.net/182877-fehlermeldung-zugewiesener-wert-wird-niemals-benutzt.html)

Edgware 23. Nov 2014 18:04

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.

Dejan Vu 23. Nov 2014 18:15

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'.

Aviator 23. Nov 2014 18:17

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:
[DELPHI]
  DeinCode
[/DELPHI]
Oder der griechen Helm über dem Texteditor.

TForm1 23. Nov 2014 20:57

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?

himitsu 23. Nov 2014 21:53

AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
 
Zitat:

Zitat von TForm1 (Beitrag 1280857)
Oder fehlt da ein stück Code?

Wenn nicht, dann hat er den anderen Hinweis "Variable nicht initialisiert" bestimmt übersehn.

Edgware 17. Mai 2015 15:11

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.

Sir Rufo 17. Mai 2015 15:22

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:

J.Jay 17. Mai 2015 15:36

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;

mkinzler 17. Mai 2015 15:45

AW: Fehlermeldung "zugewiesener Wert wird niemals benutzt"?
 
Warum nicht einfach
Delphi-Quellcode:
procedure TForm1.B_LoeschenClick(Sender: TObject);
begin
  Image1.picture:=nil;
end;
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.

Edgware 17. Mai 2015 15:49

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:05 Uhr.
Seite 1 von 3  1 23      

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