Autor Beitrag
hallo
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 450

WIN XP, SuSE 9.3
D3 Prof, D6 Pers, 2005 Pers
BeitragVerfasst: Do 18.08.05 18:02 
Hallo,

also einige komische Warnings werden im Quelltext bei mir angezeigt:

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

Der Quelltext:
ausblenden 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:
ausblenden Quelltext
1:
2:
3:
4:
5:
...
result:=TStringList;
...
result:=kv;
...

So wird die Funktion aufgerufen:
z.B.
ausblenden Delphi-Quelltext
1:
werte:=keysvalues(n);					

Was ist da nicht used?

Die beiden Fehler sind mit etwas unklar...

_________________
Der beste je Programmierte Trojaner: Windows XP
Wäre es nicht adequat, den Usus heterogener Termini zu minimieren?
SMO
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 120
Erhaltene Danke: 18


D2005 Personal
BeitragVerfasst: Do 18.08.05 18:11 
user profile iconhallo hat folgendes geschrieben:
ausblenden 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:
ausblenden 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.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 18.08.05 18:14 
[quote="user profile iconhallo"]
ausblenden Delphi-Quelltext
1:
2:
3:
...
if (numlock>=0)AND(numlock<=2)then
...

Guck dir mal den Kompilerschalte {$B} an.


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

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 450

WIN XP, SuSE 9.3
D3 Prof, D6 Pers, 2005 Pers
BeitragVerfasst: 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!

_________________
Der beste je Programmierte Trojaner: Windows XP
Wäre es nicht adequat, den Usus heterogener Termini zu minimieren?