Форум: "Основная";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];
ВнизПодскажите функцию сравнения двух указателей на real Найти похожие ветки
← →
Андрусь (2002-08-25 14:38) [0]Привет всем! Подскажите функцию сравнения двух указателей на real
из List.Короче говоря ф-ю Compare в List.Sort.Хотелось бы в одну строку и не делать так
Procedure Compare(Item1,Item2:pointer):integer;
var r1,r2:real;
Begin
r1:=Item1;r2:=Item2;
If r1^>r2^ Then Result:=1
Else if r1^<r2^ Result:=-1
Else Result:=0;
End;
Вот как для типа Integer
Result:=Integer(Item1)^-Integer(Item2)^;
Зараннее всем большое спасибо.
← →
Юрий Зотов (2002-08-25 18:02) [1]Result := Real(Item1^) - Real(Item2^);
Кстати, и для Integer то же самое, а не так, как у Вас.
Только вместо Real я бы посоветовал везде явно писать фактически используемый тип - single, double или extended. Так надежнее.
← →
Андрусь (2002-08-26 13:20) [2]Простите мастер,действительно написал и не подумал. Но я всё таки про вопрос.Ваше Result := Real(Item1^) - Real(Item2^); Не пойдёт,т.к.несоотв.типа real и integer.
← →
Игорь Шевченко (2002-08-26 13:23) [3]if Real(Item1^) > Real(Item2^) then
Result := 1
else if Real(Item1^) < Real(Item2^) then
Result := -1
else
Result := 0;
Все-таки, прислушайтесь к совету Юрия Зотова и Real замените на Double, хотя бы. А еще лучше для координат использовать целые числа.
← →
Андрусь (2002-08-26 13:57) [4]>Игорь Шевченко ©
Так вы же написали тоже что и я. А я хотел в одну строку.Это не для координат(они integer),а для времени.
← →
Игорь Шевченко (2002-08-26 16:04) [5]Нет, вы ошиблись.
Найдите 10 отличий :-)
Ваш код даже скомпилироваться не должен.
Для времени есть, кстати, тип TDateTime - рекомендую.
Или Integer, опять же, если нужно только время.
Боюсь, что одной строкой не получится...
← →
Толик (2002-08-26 17:06) [6]
Procedure Compare(Item1, Item2: pointer): integer;
var
Res: single;
begin
Res := single(Item1^) - single(Item2^);
//т.к. single и integer по 4 байта, то:
RESULT := integer((@Res)^);
end;
Ну не в одну строку, в две, но тоже вариант.
← →
Игорь Шевченко (2002-08-26 17:09) [7]Толик © (26.08.02 17:06)
Это не то :-)
← →
Толик (2002-08-26 17:53) [8]to Игорь Шевченко © (26.08.02 17:09)
Как это не то?!? Чем же не сравнение??? Замечательно сравнивает!
← →
Игорь Шевченко (2002-08-26 18:08) [9]Сравнивает, но не то, что требуется автору :-)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c