![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Изменение типа переменной [D2005, XP]
De1uxe © (2005-12-10 15:47:00)Уважаемые мастера подскажите пожалуйста как изменить тип переменной(имеется переменная real которая затем округляется до целой и должна использоваться как координата то есть integer). Заранее спасибо.
Ihor Osov'yak (2005-12-10 16:57:00) [1]то, что Вы писали в 4 - совершенно не имеет отношения к сабжевому вопросу. Это уже другой вопрос.
как версию, я могу предположить, что у Вас n декларировано как не цилечисельное.. Не зря я же делал оговорку в 3 о невозможности изменить тип. А только о возможности приведения или преобразования.
Декларируйте n как целочисельное, или, если это невозможно (так как на предв. этапах там сохраняются промежуточные значения, для которых существенны дробные части - сделайте преобразование в момет вызова rect, а именно
myrect := rect(Round(n), 0, 100, bitmap1.Height);
De1uxe (2005-12-10 16:46:00) [2]Ой извините меня ступил по страшному:
var
y:real;
...
y:=round(y);
то есть переменная оставалась real.
Всем большое спасибо. В особености Ihor Osov'yak за терпение.
De1uxe (2005-12-10 16:39:00) [3]Это я и так использую(об этом говорилось в [4]). Но ведь это не меняет типа переменной, а только округляет. Переменная все равно остается real. что не дает мне её использовать в параметрах rect(integer,integer,integer,integer).
Или я ошибаюсь?
Ihor Osov'yak (2005-12-10 16:34:00) [4]ох, держите меня, сечас взвою...
Вы читать умеете? Постинг номер три в этой ветке посмотреть - не слишком сложная задача? Кстати, на этот постин Вам уже два раза указывали..
De1uxe (2005-12-10 16:31:00) [5]2 Ihor Osov'yak © (10.12.05 16:29) [10]
А какие именно?
Ihor Osov'yak (2005-12-10 16:29:00) [6]2 De1uxe © (10.12.05 16:25) [9]
блин, ну зачем искать хр.. знает что, хр.. знает где, если в модуле system есть функции, стопроцентро Вам подходяшие.
См. [3].
De1uxe (2005-12-10 16:25:00) [7]2 Ihor Osov'yak ©
А где взять этот модуль?
Ihor Osov'yak (2005-12-10 16:23:00) [8]2 De1uxe ©
> нет пишет undeclared identifer "floatToint".
естественно, что пишет. Ибо в стандартных можулях паскаля такого нет...
gdaujk (2005-12-10 16:23:00) [9]De1uxe © (10.12.05 16:20) [6]
Используй [3], разница - отбрасывание либо округление...
De1uxe (2005-12-10 16:20:00) [10]нет пишет undeclared identifer "floatToint".
Максим (2005-12-10 16:15:00) [11]
> n:=FloatToInt(n);
> так?
Еслия я правильно понял твой первый вопрос, то именно так.
Не работает?
De1uxe (2005-12-10 16:11:00) [12]Переменная округлена при помощи
Round(X: Extended): Int64;. Но как мне её использовать в параметрахrect(integer,integer,integer,integer).Если туда поставить округленную, то компиляция стопорится на строчкеmyrect:=rect(n,0,100,bitmap1.Height);и говорит [Error] Unit9.pas(44): E2250 There is no overloaded version of 'Rect' that can be called with these arguments. Что делать? Как выходить из положения?
Ihor Osov'yak (2005-12-10 15:56:00) [13]Тип переменной вы рантайме изменитть нельзя. Если все же имелось ввиду приведение типа, или преобразование, то посмотрите на
function Trunc(X: Extended): Int64;
function Round(X: Extended): Int64;
De1uxe (2005-12-10 15:54:00) [14]
n:=FloatToInt(n);
так?
Максим (2005-12-10 15:49:00) [15]Функция FloatToInt