[Error] Main_Unit.pas(45): Constant expression violates subrange bounds
Wyskakuje mi w takim kodzie:
if (X in [62..75]) and (Y in [249..263]) then
begin
Xto := 282;
Yto := 268;
end;
Mimo że w nowym projekcie działa dobrze.
[Error] Main_Unit.pas(45): Constant expression violates subrange bounds
Wyskakuje mi w takim kodzie:
if (X in [62..75]) and (Y in [249..263]) then
begin
Xto := 282;
Yto := 268;
end;
Mimo że w nowym projekcie działa dobrze.
TomRiddle napisał(a)
[Error] Main_Unit.pas(45): Constant expression violates subrange bounds
Wyskakuje mi w takim kodzie:
if (X in [62..75]) and (Y in [249..263]) then
begin
Xto := 282;
Yto := 268;
end;
Mimo że w nowym projekcie działa dobrze.
Nie znam się za bardzo, ale Xto i Yto nie powinno się mieścić w powyższych przedziałach?
Zmienne
Może to być głupie, ale sprawdź, czy Xto
, Yto
nie 8-bitowe (Byte i chyba Shortint, jak się nie mylę).
Nie znam się za bardzo, ale Xto i Yto nie powinno się mieścić w powyższych przedziałach
a skąd mamy to wiedzieć? nie podałeś co to są X, Y, Xto ani Yto.
Azarien napisał(a)
Nie znam się za bardzo, ale Xto i Yto nie powinno się mieścić w powyższych przedziałach
a skąd mamy to wiedzieć? nie podałeś co to są X, Y, Xto ani Yto.
Dobra, ale wąty to do TomRiddle, a nie do mnie. Ja mu tylko próbowałem odpowiedzieć. :>
TomRiddle napisał(a)
Y in [249..263]
Poczytaj sobie o zbiorach (sets).
zbiory są 8-mio bitowe czyli od 0 do 255
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
Xto, Yto : Integer;
begin
if (X in [62..72]) and (Y in [249..263) then
begin
Xto := 282;
Yto := 268;
end;
No to weź sobie zamień X in [a, b]
na (X >= a) and (X <= b)
. Jak nie zadziała, to coś innego jest źle. Wydaje mi się, że działanie na setach wcale nie jest wydajniejsze - i tak program musi zrobić dwa porównania.
Chyba wpadłem na pomysł...
A może zrobię tak:
Y := Y - 15;
if (X in [62..75]) and (Y in [234..248]) then //234 i 248 jest o 15 mniejsze niż 249 i 263
begin //Czyli te które były na początku
Xto := 282;
Yto := 268;
end;
Y := Y + 15;
Niby wymyśliłeś jakieś rozwiązanie ale poprawne rozwiązanie podał mnbvcX.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.