Вверх ↑
Этот топик читают: Гость
Ответов: 16884
Рейтинг: 1239
#61: 2011-08-24 20:16:09 ЛС | профиль | цитата
Во всех.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26155
Рейтинг: 2127
#62: 2011-08-24 20:22:24 ЛС | профиль | цитата
А мне -- тем более.
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#63: 2011-08-25 09:25:40 ЛС | профиль | цитата
nesco, так хотел ?
#pas
procedure THIMath._work_doOperation42;{Floor 2011.08.25 Tad}
var x: double;
begin
x := ReadReal(_Data,_data_Op1,_prop_Op1);
_Err := false;
Res := Trunc(x);
If Res > x then Res := Res - 1;
_hi_OnEvent(_event_onResult,integer(Res));
end;

procedure THIMath._work_doOperation43;{Ceil 2011.08.25 Tad}
var x: double;
begin
x := ReadReal(_Data,_data_Op1,_prop_Op1);
_Err := false;
Res := Trunc(x);
If x > Res then Res:=Res + 1;
_hi_OnEvent(_event_onResult,integer(Res));
end;

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 3349
Рейтинг: 233
#64: 2011-08-25 09:49:42 ЛС | профиль | цитата
Tad, Лучше создать функцию floor. ИМХО
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#65: 2011-08-25 10:04:07 ЛС | профиль | цитата
Ivann, не понял. А выше я что выложил ? Floor и Ceil
------------ Дoбавленo в 10.04:
Ivann, что лучше я уже неоднократно говорил.
Лучше скрыть точки, например, doLoad и doSave и т.д., которые (в большинстве случаев использования компонент с этими точками ) ни нафик никому не нужны, а светятся и занимают место на схеме.
Лучше ... Ладно, замнём.
Но..., как говорят в Украине : "Наше тут не мелеться".
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26155
Рейтинг: 2127
#66: 2011-08-25 10:08:17 ЛС | профиль | цитата
Tad писал(а):
так хотел ?

То же самое, но с floor и ceil
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#67: 2011-08-25 10:13:56 ЛС | профиль | цитата
nesco, что выложить полностью hiMath.pas и Math.ini с этими функциями ? (Что-то никак не пойму ни тебя ни Ivann)
Попотробнее можно ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26155
Рейтинг: 2127
#68: 2011-08-25 10:26:39 ЛС | профиль | цитата
Tad писал(а):
Попотробнее можно ?

Отбой. Я выдернул оригинальные floor и ceil и добавил. Смотрите на SVN
карма: 22

0
Ответов: 3349
Рейтинг: 233
#69: 2011-08-25 10:35:03 ЛС | профиль | цитата
#pas
function Floor(const X: Extended): Integer;
begin
Result := Integer(Trunc(X));
if Frac(X) < 0 then
Dec(Result);
end;
------------ Дoбавленo в 10.32:
Хотя может и не надо
------------ Дoбавленo в 10.35:
Что nesco и сделал
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#70: 2011-08-25 10:41:07 ЛС | профиль | цитата
nesco, ты меня извини, но отличный пример на тему : "Как раздуть результирующие коды."
А потом удивляемся - откуда тормоза
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26155
Рейтинг: 2127
#71: 2011-08-25 10:43:03 ЛС | профиль | цитата
Tad писал(а):
А потом удивляемся - откуда тормоза

Что-то ты не робщешь на оригинальный Delphi, а ведь там так сделано и ничего
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#72: 2011-08-25 10:44:57 ЛС | профиль | цитата
#pas
function Floor(const X: Extended): Integer;
begin
Result := Integer(Trunc(X)); // две внешние функции
if Frac(X) < 0 then // ещё две
Dec(Result); // и ещё одна
// итого 5 раз прыгаем с места на место
end;
nesco, там функция Floor уже определена (потому и результирующие коды меньше 400 кб редкость) и мне пофиг как она сделана , а здесь мы сами создаём новую функцию и копировать "индусский код" грех.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26155
Рейтинг: 2127
#73: 2011-08-25 10:46:12 ЛС | профиль | цитата
Tad писал(а):
Как раздуть результирующие коды

Да, кстати, и сильно раздулись
------------ Дoбавленo в 10.46:
Tad писал(а):
if Frac(X) < 0 then

Кстати, а почему они так сделали, ты не задумывался
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#74: 2011-08-25 10:52:51 ЛС | профиль | цитата
А почему я так сделал, ты не задумывался ?
If Res > x then 
чтобы отказаться от фукции Frac() (кстати, которая совсем не из одной строки кода на асме)
Ладно, проехали.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26155
Рейтинг: 2127
#75: 2011-08-25 11:01:03 ЛС | профиль | цитата
Tad писал(а):
А почему я так сделал, ты не задумывался ?

Короче, я сделал гибрид -- ни тебе, ни мне. Я оставил функцию frac, осталное упростил. Не думаю, что это сильно повлиет на быстродействие
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)