![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
<<<<<<Проблема с несоответствием типов>>>>> [D6, WinXP]
d_coder © (2002-10-08 21:21:00)Ситуация такова: есть Image. Пользуясь свойством Canvas я хочу нарисовать на ней с помощью линий (Image1.Canvas.LinesTo(x,y) определенную карту, вершины которой (x,y) должны читаться из ячеек StringGrid и представлены в виде, например "-3.0", "0.0", "2.99" и т.п.
Проблема, естественно, в том, что имеет место несоответствие типов: т.е. компилятор кричит, что >>> "-3.0" не является Integer <<<. Интересно, как еще можно провернуть такую операцию, если из строки можно, вроде бы, конвертировать в StrToInt, да и Canvas.LineTo жрет только Integer переменные.
Уважаемые мастера и люди, сталкивавшиеся раньше с такой проблемой, подскажите решение!!!
Dr.UFO_51 (2002-10-18 17:26:00) [1]Если потребуется HELP мыль сюды : CivUFO@mail.ru
Почему никто не пользуется стандартами???!!!
Есть 2 замечательных функции Trunc и Round
Вот пример :
////////////////////////
var
a:integer;
begin
a:=trunc(3.8); // отрезает целую часть (здесь a=3)
// или
a:=round(4.7); // округляет (здесь a=5 )
/////////////////////////
Удачи !!!
Rouse_ (2002-10-09 02:36:00) [2]Ну если ты просто будешь рисовать с такими координатами
> "-3.0", "0.0", "2.99" и т.п.то даже если бы у тебя и не было несоответствия типов то получился бы один большой (примерно 3 на 3) пиксель ;) Попробуй не StrToInt а StrToFloat, это раз.
Потом каждую координату умножь хотя бы на 50, округли ее до наибольшего (наименьшего) целогои только тогда делай LinesTo
Желаю успехов