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

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

Это фишка или баг фрипаскаля?


Вася ©   (2013-09-25 15:26:00) 

кусок кода:
case combobox1.ItemIndex of
   0: koef:=0.1;
   1: koef:=0.25;
   2: koef:=0.5;
   3: koef:=0.75;
   4: koef:=1;
   5: koef:=1.25;
   6: koef:=1.5;
   7: koef:=1.75;
   8: koef:=2;
   9: koef:=4;
 end;
 image1.Width:=round(GrayBMP.Width*koef);
 image1.Height:=round(GrayBMP.Height);  

в таком виде масштабирование происходит от 0 до 1, все что свыше все равно 1, а если поменять последние 2 строки на
image1.Width:=round(koef*GrayBMP.Width);
 image1.Height:=round(koef*GrayBMP.Height);

в этом случае все масштабируется нормально
такие приколы встречались в языках с неявным преобразованием типов.
Собственно вопрос - тема топика
Free pascal


Вася   (2013-09-30 11:09:00) [1]

Точно, протупил :)


Туповатый   (2013-09-28 09:28:00) [2]


>  image1.Height:=round(GrayBMP.Height);  
.....
> а если поменять последние 2 строки на
....
>  image1.Height:=round(koef*GrayBMP.Height);

то ничего удивительного


Вася   (2013-09-25 16:04:00) [3]

koef - real, Width и Height - integer


Вася   (2013-09-25 16:03:00) [4]

size :=  round(GrayBMP.Width*koef);
ShowMessage(inttostr(size));
- расчитывает правильно размер (и меньше единицы и меньше
сейчас вернул на место image1.Width:=round(GrayBMP.Width*koef);
image1.Height:=round(GrayBMP.Height);  
теперь все правильно считает - ничего больше не менял 8(


Германн   (2013-09-25 15:52:00) [5]

Какого типа переменная koef? И какого типа свойства Width и Height?


[ВладОшин]   (2013-09-25 15:51:00) [6]


> ShowMessage('%f %d',[koef, GrayBMP.Width ]); //и скока?


[ВладОшин]   (2013-09-25 15:50:00) [7]

не может быть..
koef := 2;
koef :=  round(GrayBMP.Width*koef);
ShowMessage('%f',[koef ]); //и скока?

зы
case combobox1.ItemIndex of
  0: koef:=0.1;
 1..8: koef:=0.25 * combobox1.ItemIndex;
  9: koef:=4;
  else // влруг не выполняется вообще?


Наверх

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