Entwickler-Ecke

Programmierwerkzeuge - Warnings werden Grundlos(?) angezeigt


hallo - Do 18.08.05 18:02
Titel: Warnings werden Grundlos(?) angezeigt
Hallo,

also einige komische Warnings werden im Quelltext bei mir angezeigt:

Zitat:
[Warning] unit1.pas(1220): Comparison always evaluates to True

Der Quelltext:

Delphi-Quelltext
1:
2:
3:
...
if (numlock>=0)AND(numlock<=2)then
...

Also numlock ist vom Typ byte! Das wird im Quelltext Global definiert, und ändert such eben nach der zeit.
Aber warum ist es dann immer true? Byte geht ja von 0 bis 255. Und bei 5 zB. würde es false ergeben...

Und nochwas:
Zitat:
[Hint] unit1.pas(1326): Value assigned to 'TForm1.keysvalues' never used

Der Quelltext schaut in ungefähr so aus:

Quelltext
1:
2:
3:
4:
5:
...
result:=TStringList;
...
result:=kv;
...

So wird die Funktion aufgerufen:
z.B.

Delphi-Quelltext
1:
werte:=keysvalues(n);                    

Was ist da nicht used?

Die beiden Fehler sind mit etwas unklar...


SMO - Do 18.08.05 18:11
Titel: Re: Warnings werden Grundlos(?) angezeigt
user profile iconhallo hat folgendes geschrieben:

Delphi-Quelltext
1:
2:
3:
...
if (numlock>=0)AND(numlock<=2)then
...

Also numlock ist vom Typ byte! Das wird im Quelltext Global definiert, und ändert such eben nach der zeit.
Aber warum ist es dann immer true? Byte geht ja von 0 bis 255. Und bei 5 zB. würde es false ergeben...

Die Warnung bezieht sich nicht auf die Zeile als ganzes sondern nur den ersten Vergleich. Wie du selbst sagst, ein Byte geht von 0..255, ist also immer größer oder gleich 0. Damit ist (numlock>=0) überflüssig. if (numlock<=2)then genügt.

Zitat:
Und nochwas:
Zitat:
[Hint] unit1.pas(1326): Value assigned to 'TForm1.keysvalues' never used

Der Quelltext schaut in ungefähr so aus:

Quelltext
1:
2:
3:
4:
5:
...
result:=TStringList;
...
result:=kv;
...


Das sollte doch klar sein. Du weist Result einen Wert zu (TStringList... was meinst du eigentlich damit?), der im Weiteren nicht benutzt wird. Dann überschreibst du Result mit einem neuen Wert (kv). Die erste Zuweisung kannst du dir also genausogut sparen.


Delete - Do 18.08.05 18:14
Titel: Re: Warnings werden Grundlos(?) angezeigt
[quote="user profile iconhallo"]

Delphi-Quelltext
1:
2:
3:
...
if (numlock>=0)AND(numlock<=2)then
...

Guck dir mal den Kompilerschalte {$B} an.



Quelltext
1:
2:
3:
4:
5:
...
result:=TStringList;
...
result:=kv;
...


Delphi-Quelltext
1:
2:
3:
4:
result := 5;
...;
...;
result := 10;

Die erste Zuweisung ist überflüssig, da die Funktion wohl nie mit dem Wert 5 verlassen wird, da du zum Schluss immer 10 zu weist.


hallo - Do 18.08.05 18:14

Oh, da hab ich das falsch abgetippt: es ´Muss TStringList.create; heißen...
Aber ohne create gibt es eine Access Violation!

Das erste wurde mir aber klar! DANKE!