AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Was will mir mein Compiler damit sagen ??
Thema durchsuchen
Ansicht
Themen-Optionen

Was will mir mein Compiler damit sagen ??

Ein Thema von Clane · begonnen am 13. Jun 2005 · letzter Beitrag vom 14. Jun 2005
Antwort Antwort
Seite 1 von 2  1 2      
Clane
(Gast)

n/a Beiträge
 
#1

Was will mir mein Compiler damit sagen ??

  Alt 13. Jun 2005, 17:23
Zitat:
[Hint] Unit1.pas(47): H2077 Value assigned to 'y' never used
[Hint] Unit1.pas(47): H2077 Value assigned to 'x' never used
[Hint] Unit1.pas(47): H2077 Value assigned to 'b' never used
[Hint] Unit1.pas(47): H2077 Value assigned to 'a' never used
hier is der qt dazu und bitte keine fragen warum ich die variable op verwende ....

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    LabeledEdit1: TLabeledEdit;
    LabeledEdit2: TLabeledEdit;
    LabeledEdit3: TLabeledEdit;
    LabeledEdit4: TLabeledEdit;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    GroupBox1: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    var op: integer; //Variable für den Ergebniswert
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var a,b,x,y: real; // <-- hier sagt der compiler das o.g.


begin
Edit1.Clear;

op := 0; //Operator = 0


// Werte von den Edit-Feldern holen und den Variablen zuweisen
a := strtofloat(labelededit3.text);
b := strtofloat(labelededit2.text);
x := strtofloat(labelededit4.text);
y := strtofloat(labelededit1.text);

// RadioBox-click feststellen und Formel feststellen.
if RadioButton1.checked then op := 1;
if RadioButton2.checked then op := 2;
if RadioButton3.checked then op := 3;
if RadioButton4.checked then op := 4;

// Lasset uns Rechen
if op = 1 then Edit1.text := FloatToStr(b * a * Power(a,x));
if op = 2 then Edit1.text := FloatToStr(y / Power(a,x));
if op = 3 then Edit1.text := FloatToStr(power((y/b), 1/x));
if op = 4 then Edit1.text := FloatToStr(ln(y/b)/ln(a));

end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Was will mir mein Compiler damit sagen ??

  Alt 13. Jun 2005, 17:24
Hallo PBiggi,

es sind Hinweise. Du weisst einer Variablen einen Wert zu, verwendest den zugewiesenen Wert aber nicht. Die Quellcode-Zeile wurde dabei schon durch die Optimierung rausgeworfen, aber der Compiler gibt dir den Hinweis, damit du die Zeile eventuell auch entfernst.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
13. Jun 2005, 17:24
Dieses Thema wurde von "alcaeus" von "VCL / WinForms / Controls" nach "Sonstige Fragen zu Delphi" verschoben.
Hat keinen wirklichen Bezug zur VCL. Ab nach sonstiges
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#4

Re: Was will mir mein Compiler damit sagen ??

  Alt 13. Jun 2005, 17:25
Das sind Hinweise, die besagen, dass den jeweiligen Variablen Werte zugewiesen wurden, die aber nirgendwo benutzt werden. Wie es halt in dem Hint steht
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Was will mir mein Compiler damit sagen ??

  Alt 13. Jun 2005, 17:32
Zitat von alcaeus:
Hallo PBiggi,

es sind Hinweise. Du weisst einer Variablen einen Wert zu, verwendest den zugewiesenen Wert aber nicht. Die Quellcode-Zeile wurde dabei schon durch die Optimierung rausgeworfen, aber der Compiler gibt dir den Hinweis, damit du die Zeile eventuell auch entfernst.

Greetz
alcaeus
Versteh ich grad nicht, er verwendet doch alle seine Variablen als Parameter für eine andere Funktion? Ist das keine Verwendung im Sinne dessen was der Compiler versteht?
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#6

Re: Was will mir mein Compiler damit sagen ??

  Alt 13. Jun 2005, 17:36
op wird auf 0 gesetzt, also trifft keine der unteren if-Abfragen zu, ergo werden die variablen nicht gebraucht

Stimmt nicht ...
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Was will mir mein Compiler damit sagen ??

  Alt 13. Jun 2005, 17:46
Vielleicht ist im Compiler/Linker auch ein Semantik-Checker eingebaut, der Programmteile, die ihm nicht gefallen, wegschmeisst.

Um zu deiner Frage zu kommen ("Was will mir mein Compiler damit sagen?"):
Zitat von Delphi:
Wozu das Ganze? Geh lieber an die frische Luft und nimm mich mit
Aber mal im Ernst: Merkwürdiges Verhalten. Ist Dein Delphi vielleicht ... rollig ?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#8

Re: Was will mir mein Compiler damit sagen ??

  Alt 13. Jun 2005, 17:49
Durch die Ifs ist es nicht sicher des der Code dahinter ausgeführt wird also heisst des das MÖGLICHERWEISE aus der sieht des Compielers der code nicht ausgefürht wird also ist es für ihn MÖGLICHERWEISE unötig.
Delphi-Quellcode:
if RadioButton1.checked then Edit1.text := FloatToStr(b * a * Power(a,x));
if RadioButton2.checked then Edit1.text := FloatToStr(y / Power(a,x));
if RadioButton3.checked then Edit1.text := FloatToStr(power((y/b), 1/x));
if RadioButton4.checked then Edit1.text := FloatToStr(ln(y/b)/ln(a));

Bisschen optimiert
So müsste es gehen:
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    LabeledEdit1: TLabeledEdit;
    LabeledEdit2: TLabeledEdit;
    LabeledEdit3: TLabeledEdit;
    LabeledEdit4: TLabeledEdit;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    GroupBox1: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    Edit1: 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,x,y: real; // <-- hier sagt der compiler das o.g.
begin
Edit1.Clear;

// Werte von den Edit-Feldern holen und den Variablen zuweisen
a := strtofloat(labelededit3.text);
b := strtofloat(labelededit2.text);
x := strtofloat(labelededit4.text);
y := strtofloat(labelededit1.text);

// Lasset uns Rechen
Edit1.text := FloatToStr(b * a * Power(a,x)); // Wenn nicht dann wirds einfach überschrieben
if RadioButton2.checked then Edit1.text := FloatToStr(y / Power(a,x));
if RadioButton3.checked then Edit1.text := FloatToStr(power((y/b), 1/x))
if RadioButton4.checked then Edit1.text := FloatToStr(ln(y/b)/ln(a));
end;

end.
//Nachtrag: @alzaimar: Rolig??? Hast du zuviele katzen dahei es gibt meistens eine logische erklärung
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Clane
(Gast)

n/a Beiträge
 
#9

Re: Was will mir mein Compiler damit sagen ??

  Alt 13. Jun 2005, 18:01
ja so hatte ich das schonmal hab das aber extra so mit der var op gemacht weil ich noch n paar plugins dafür machen werde die auch mit der var op abeiten werden anders bekomm ich das vom konzept her nich hin
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#10

Re: Was will mir mein Compiler damit sagen ??

  Alt 13. Jun 2005, 18:22
Um mal zu zeigen wie man es effizient programmiert:
Delphi-Quellcode:
// Werte von den Edit-Feldern holen und den Variablen zuweisen
// hier fehlen noch Absicherungen gegen falsche Eingaben
a := strtofloat(labelededit3.text);
b := strtofloat(labelededit2.text);
x := strtofloat(labelededit4.text);
y := strtofloat(labelededit1.text);

// mit booleschen werten kann man wunderbar rechnen
op := Ord(RadioButton1.checked) + Ord(RadioButton2.checked) + Ord(RadioButton3.checked) + Ord(RadioButton4.checked);
// ein case fragt op nur einmal ab
// es fehlen Tests auf illegale Werte (x = 0 fuer op = 3)
case op of
  1: Edit1.text := FloatToStr(b * a * Power(a,x));
  2: Edit1.text := FloatToStr(y / Power(a,x));
  3: Edit1.text := FloatToStr(power((y/b), 1/x));
  4: Edit1.text := FloatToStr(ln(y/b)/ln(a));
end;
  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 07: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