Возможно, ошибка в элементе PaintBox, помогите это исправить:
code_26864.txt
Этот топик читают: Гость
|
Ответов: 1429
Рейтинг: 50
|
|||
| карма: 0 |
| ||
| файлы: 1 | code_26864.txt [972B] [123] |
|
Ответов: 3889
Рейтинг: 362
|
|||
|
login, PaintBox тут не при чём, "прыжок" происходит из-за отрицательных координат на входе Img_Rectangle.
|
|||
| карма: 1 |
|
|
Ответов: 1429
Рейтинг: 50
|
|||
|
1nd1g0, а почему? как это исправить?
Ато обьекты дергаются перед тем как заехать за левую границу. |
|||
| карма: 0 |
|
|
Ответов: 1376
Рейтинг: 198
|
|||
| карма: 1 |
| ||
| файлы: 1 | code_26865.txt [1.1KB] [135] | ||
| Голосовали: | login |
|
Ответов: 3889
Рейтинг: 362
|
|||
|
login, нет там никакой мистики для опытного программиста, знающего, что отрицательные числа в бинарном виде выглядят как заполненные единицами в старших разрядах. Так как в старших разрядах лежит координата Y, забитая единицами она считается за -1, убедитесь сами:
code_26866.txt ------------ Дoбавленo в 11.10: А вот и способ это "исправить" |
|||
| карма: 1 |
| ||
| файлы: 1 | code_26866.txt [1KB] [117] |
|
Ответов: 1429
Рейтинг: 50
|
|||
|
1nd1g0, спасибо, а можно это в Delphi сделать?
Я посмотрел в элементе формирования точки и пишу в delphi-код такое: res := ReadInteger(word(Y shl 16) + word(X)); Не компилируется. Что я делаю не так? Error: Operator not applicable to this operand type
Error: Invalid typecast Не хочется такое количество рассчетов выносить за пределы FTCG, и не хочется применять условие "if" (if используется в операторе "and") |
|||
| карма: 0 |
|
|
Ответов: 3889
Рейтинг: 362
|
|||
|
login, он же Вам пишет, типы не совпадают. Например, бинарный сдвиг пытаетесь применить к левому типу, например, hiEvent.
login писал(а): а можно это в Delphi сделать?Так, вроде, в паскале есть бинарный оператор AND. |
|||
| карма: 1 |
|
|
Ответов: 1429
Рейтинг: 50
|
|||
|
Да, есть бинарный AND:
res := (X and 65535) + Y; Error: Operator not applicable to this operand type
не компилируется, а как правильно надо писать? |
|||
| карма: 0 |
|
|
Разработчик
Ответов: 26324
Рейтинг: 2147
|
|||
|
login писал(а): res := (X and 65535) + Y;Если X и Y верхние точки, то вот так должно прокатить А тебе не кажется, что X и Y надо поменять местами |
|||
| карма: 22 |
|
|
Ответов: 1429
Рейтинг: 50
|
|||
|
nesco,
hiFTCG_Tools_8EAC570.pas(585) Error: Incompatible types: 'THI_Event' and 'Real'
|
|||
| карма: 0 |
|
|
Разработчик
Ответов: 26324
Рейтинг: 2147
|
|||
|
login, к Real нельзя применять AND, только к Cardinal и Integer
------------ Дoбавленo в 11.55: login писал(а): Incompatible types: 'THI_Event' and 'Real'Все правильно, я же написал конкретно nesco писал(а): Если X и Y верхние точки |
|||
| карма: 22 |
|
|
Ответов: 3889
Рейтинг: 362
|
|||
|
res := (ToIntegerEvent(X) and 65535) or (ToIntegerEvent(Y) shl 16);
|
|||
| карма: 1 |
|
|
Ответов: 1429
Рейтинг: 50
|
|||
|
1nd1g0, nesco, перевел X и Y в integer стало компилировать обычные: "(%1 shl 16) + %2" и "(%1 and 65535) + %2"
Сейчас разбираюсь почему на выходе ничего нет. ------------ Дoбавленo в 12.15: (%2 shl 16) + %1 - работает но края всеравно "подпрыгивают". (%2 and 65535) + %1 - Работает но координаты выдает такие что на поле ничего нет, где-то далеко за пределами поля. |
|||
| карма: 0 |
|
|
Ответов: 3889
Рейтинг: 362
|
|||
|
login, блин, я же показал формулу:
(%1 and 65535) or (%2 shl 16) |
|||
| карма: 1 |
| ||
| Голосовали: | login |
|
Ответов: 1429
Рейтинг: 50
|
|||
|
1nd1g0,
|
|||
| карма: 0 |
|
15



Поиск
Друзья
Администрация