Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit nem Quelltext!!!!!! (https://www.delphipraxis.net/39389-problem-mit-nem-quelltext.html)

janiboy 1. Feb 2005 23:09


Problem mit nem Quelltext!!!!!!
 
Ich hab ne Frage zum Quelltext...
Wo ist der Fehler???
Der zeigt immer denn selben fehler an....

nämlich:

[Hint] Unit1.pas(50): Value assigned to 'x2' never used
[Hint] Unit1.pas(49): Value assigned to 'x1' never used

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    aedit: TEdit;
    bedit: TEdit;
    cedit: TEdit;
    Button1: TButton;
    x1edit: TEdit;
    x2edit: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,p,q,x1,x2:real;

begin
a:=StrToInt(aedit.Text);
b:=StrToInt(bedit.Text);
c:=StrToInt(cedit.Text);
if
 a=1
then
begin
  p:=b;
  q:=c;
  end
   else
   begin
    p:=b/a;
    q:=c/a;
    x1:=-p/2+sqrt(sqr(p/2)-q);
    x2:=-p/2+sqrt(sqr(p/2)-q);
    if
    sqr(p/2)-q>0
    then
    begin
    x1:=0;
    x2:=0;
    end
    else
    if
    sqr(p/2)-q=0
    then
    begin
    x1:=-p/2;
    x2:=-p/2;
    end
    else
    begin
    x1:=99;
    x2:=99;
    end;
    x1edit.Text:=floatToStr(x1);
    x2edit.Text:=floatToStr(x2);

end;

end.





Bitte um Hilfe....

was mache ich Falsch

[edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit]

grayfox 1. Feb 2005 23:21

Re: Problem mit nem Quelltext!!!!!!
 
hallo janiboy!

nachdem hier
Zitat:

[Hint] Unit1.pas(50): Value assigned to 'x2' never used
[Hint] Unit1.pas(49): Value assigned to 'x1' never used
das wort 'hint' und nicht 'error' steht, handelt es sich lediglich um einen hinweis des
compilers und um keine fehlermeldung - sonst würde dort 'error' zu lesen sein.
somit lässt sich dein programm compilieren & ausführen.

dem grund, warum die werte von x1 & x2 nicht verwendet werden, bin ich allerdings nicht
nachgegangen, da deine formatierung nicht grad augenfreundlich ist ;)

mfg, stefan

leddl 1. Feb 2005 23:25

Re: Problem mit nem Quelltext!!!!!!
 
Das ist kein Fehler an sich. Das is eben nur ein Hinweis von Delphi, der verhindern soll, daß du dir irgendwas deklarierst und nicht benutzt.
Du weist x1 und x2 einen Wert zu, den du (scheinbar, denn eigentlich zeigst du die ja umgewandelt in einen String in einem Editfeld an) nicht mehr weiter benutzt.
Ich ignorier diese Hinweise dann immer. Solange da nur "Hint" steht, kannst du das einfach nur als gutgemeinten Hinweis verstehen! ;)

PS: Bitte benutz das nächste Mal die delphi-Tags
Code:
[delphi]
...
[/delphi]
dann kann man den Quelltext besser lesen.

Muetze1 1. Feb 2005 23:32

Re: Problem mit nem Quelltext!!!!!!
 
Moin!

Ich kann meinen Vorrednern nur zustimmen und hinzufügen, dass die Zuweisung von
Delphi-Quellcode:
 x1:=-p/2+sqrt(sqr(p/2)-q);
x2:=-p/2+sqrt(sqr(p/2)-q);
unsinnig ist, weil danach deckst du mit dem If / Else Konstrukt alle möglichen Fälle ab und weist trotzdem immer wieder X1 und X2 etwas zu. Wenn du aber nun X1 und X2 einen Wert zuweist, dann ist die vorherige Zuweisung (o.g.) unsinnig. Daher die Warnung: zugewiesene Werte werden niemals benutzt.

MfG
Muetze1

leddl 1. Feb 2005 23:38

Re: Problem mit nem Quelltext!!!!!!
 
Ah, die Zeile is mir glatt durchgerutscht. Is ja aber auch kein Wunder, bei dem Quelltextgewurstl. :mrgreen:

Binärbaum 2. Feb 2005 09:47

Re: Problem mit nem Quelltext!!!!!!
 
Ich habe den (unübersichtlichen) Quelltext nur kurz überflogen, aber so eine Meldung bedeutet eigenlich immer, dass die zugewiesenen Werte einer Variablen (Hier: x1,x2) nie genutzt werden und somit können diese Variablen auch weggelassen werden.

MfG
Binärbaum

alcaeus 2. Feb 2005 09:54

Re: Problem mit nem Quelltext!!!!!!
 
Hallo janiboy,

Formatier deinen Quellcode mal ordentlich :roll:
Konkret liegt die Ursache der meldung genau in diesem Codeabschnitt:
Delphi-Quellcode:
x1:=-p/2+sqrt(sqr(p/2)-q);
x2:=-p/2+sqrt(sqr(p/2)-q);
if sqr(p/2)-q>0 then
begin
  x1:=0;
  x2:=0;
end
else if sqr(p/2)-q=0 then
begin
  x1:=-p/2;
  x2:=-p/2;
end
else
begin
  x1:=99;
  x2:=99;
end;
Wie du siehst, werden zuerst zwar irgendwelche Werte zugewiesen, aber im if-then-else-if... Konstrukt überschrieben, und zwar egal welcher Fall auftritt. Deshalb sagt dir der Compiler, dass du dir die ersten beiden Zuweisungen sparen kannst, da die Werte sowieso nicht benutzt werden.
Weiters, wenn du auf eine solche Meldung doppelt draufklickst, bringt er dich in die entsprechende Zeile, das heißt du siehst auch, zu welcher Zeile er was sagt. Du kannst die beiden Zeilen also ruhig löschen, in der exe sind sie ja sowieso nicht drin (Compileroptimierung).

Greetz
alcaeus

[add]Und ein Ausrufezeichen im Titel sollte auch genügen!!!!!!!! :roll:[/add]

sakura 2. Feb 2005 10:10

Re: Problem mit nem Quelltext!!!!!!
 
@Janiboy: Ändere den Titel bitte dahingehend, dass deutlich wird, wo Dein Problem liegt. Ein Problem mit Quelltext haben fast alle die fragen. ;-)

...:cat:...

MaBuSE 2. Feb 2005 11:05

Re: Problem mit nem Quelltext!!!!!!
 
Zitat:

Zitat von janiboy
Ich hab ne Frage zum Quelltext...
Wo ist der Fehler???
Der zeigt immer denn selben fehler an....

nämlich:

[Hint] Unit1.pas(50): Value assigned to 'x2' never used
[Hint] Unit1.pas(49): Value assigned to 'x1' never used

...

Bitte um Hilfe....

was mache ich Falsch

Zuallererst mal Herzlich Willkommen in der Delphi Praxis.

Mich wundert es, dass sich der Quelltext ohne Fehler kompilieren lässt, da ein "end;" fehlt.

Die Antworten wurden ja oben schon gegeben.

Hier nochmal der komplette überarbeitete Quellcode (ungetestet):

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    aedit: TEdit;
    bedit: TEdit;
    cedit: TEdit;
    Button1: TButton;
    x1edit: TEdit;
    x2Edit: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations } 
  public
    { Public declarations } 
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm} 

procedure TForm1.Button1Click(Sender: TObject);
var
  a, b, c,
  p, q,
  x1, x2: Real;
begin
  a := StrToInt(aedit.Text);
  b := StrToInt(bedit.Text);
  c := StrToInt(cedit.Text);
  if a=1 then
  begin
    p := b;
    q := c;
  end
  else
  begin
    p := b/a;
    q := c/a;
    // Das folgende "end;" hat gefehlt
  end;

// Folgende 2 Zeilen haben keine Wirkung, da in dem If .. Else .. Konstrukt
// x1 und x2 überschrieben werden.
//  x1 := -p/2+sqrt(sqr(p/2)-q);
//  x2 := -p/2+sqrt(sqr(p/2)-q);

  if sqr(p/2)-q>0 then
  begin
    x1 := 0;
    x2 := 0;
  end
  else
  begin
    if sqr(p/2)-q=0 then
    begin
      x1 := -p/2;
      x2 := -p/2;
    end
    else
    begin
      x1 := 99;
      x2 := 99;
    end;
  end;

  x1edit.Text := FloatToStr(x1);
  x2edit.Text := FloatToStr(x2);
end;

end.

janiboy 2. Feb 2005 14:43

Re: Problem mit nem Quelltext!!!!!!
 
Erst mal vielen Dank an alle!!!
Mein Problem ist das ich ein Programm schreiben soll das Die PQ-Formel anwendet mit allen regeln(negative wurzel, x²=0 usw....) und ich bekomme des net hin.....


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:09 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