Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Изменение типа переменной [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


Наверх

Титульная страница Поиск, карта сайта Написать письмо