Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Вниз

Работа с указателями   Найти похожие ветки 

 
Frozzen   (2004-11-18 22:22) [0]

Подскажите пожайлусто.

function CompareItems(Item1, Item2: Pointer): Integer;
var a, b : TSide;
begin
 a := Item1;
 b := Item2;
 if a.p = b.p then Result := 0 else
 if a.p > b.p then Result := 1 else

Как нибуть можно иначе, наподобе (Items1 as TSide).p
Или только так a := Item1; и ...


 
Defunct ©   (2004-11-18 22:36) [1]

TSide(Item1).P


 
Frozzen   (2004-11-18 22:38) [2]

спасибо


 
Гаврила ©   (2004-11-18 23:01) [3]

Result:=TSide(Item1).P - TSide(Item2).P;

%-)))


 
GuAV ©   (2004-11-18 23:03) [4]

Гаврила ©   (18.11.04 23:01) [3]
Result:=TSide(Item1).P - TSide(Item2).P;


Ха, а если P - стока ? или Int64 ? :-)


 
Defunct ©   (2004-11-18 23:06) [5]

> Ха, а если P - стока ? или Int64 ? :-)

Result := Integer( TSide(Item1).P > TSide(Item2).P );


 
GuAV ©   (2004-11-18 23:12) [6]

Defunct ©   (18.11.04 23:06) [5]
Result := Integer( TSide(Item1).P > TSide(Item2).P );


Это Вы по-злому :->


 
Игорь Шевченко ©   (2004-11-18 23:12) [7]

Вы б хоть код читали...


 
GuAV ©   (2004-11-18 23:15) [8]

Игорь Шевченко ©   (18.11.04 23:12) [7]
Вы б хоть код читали...


Вы про телепатию Гаврилы ? Или про что ?


 
Игорь Шевченко ©   (2004-11-18 23:27) [9]

GuAV ©   (18.11.04 23:15) [8]

Я про [3] а в особенности про [5]


 
GuAV ©   (2004-11-19 00:04) [10]

Ну так
if a.p = b.p then Result := 0 else
if a.p > b.p then Result := 1 else
...
догадываемся телепатически
что эта функция должна возвращать положительное значение если  TSide(Item1).P > TSide(Item2).P,
нуль если = и отрицательное если <.
(возможно это для сортировки, например LV). Предполагаем что P - Integer это [3]


 
Defunct ©   (2004-11-19 01:14) [11]

> особенности про [5]

домысливать логику функции я не стал.
то что в [5] покрывает, то что написано в вопросе.

С домыслами GuAV [10]

Result := Integer( TSide(Item1).P > TSide(Item2).P );
Result := Result - Integer( TSide(Item1).P < TSide(Item2).P );


 
Игорь Шевченко ©   (2004-11-19 01:28) [12]

Defunct ©   (19.11.04 01:14) [11]


> Result := Integer( TSide(Item1).P > TSide(Item2).P );
> Result := Result - Integer( TSide(Item1).P < TSide(Item2).P
> );


Сравни по ясности с

 if TSide(Item1).P > TSide(Item2).P then
   Result := 1
 else if TSide(Item1).P < TSide(Item2).P then
   Result := -1
 else
   Result := 0;


Как ты думаешь, сколько времени потребуется программисту (вне зависимости от квалификации), чтобы понять, что оба фрагмента кода выполняют одно и то же ?
К тому же второй код выполняется быстрее.


 
Defunct ©   (2004-11-19 02:18) [13]

> Как ты думаешь, сколько времени потребуется программисту (вне зависимости от квалификации), чтобы понять, что оба фрагмента кода выполняют одно и то же ?


Не знаю, задача не имеет решения ;>


 
GuAV ©   (2004-11-19 02:44) [14]

Игорь Шевченко ©   (19.11.04 1:28) [12]
К тому же второй код выполняется быстрее.

И к тому же по F7 понятно что происходит :)


 
Defunct ©   (2004-11-19 02:47) [15]

> К тому же второй код выполняется быстрее.
> И к тому же по F7 понятно что происходит :)
К тому же если это функция защиты, то ее проще взломать ;)


 
VMcL ©   (2004-11-19 07:23) [16]

>>GuAV ©
>>Defunct ©

Хакеры доморощенные :-)


 
Игорь Шевченко ©   (2004-11-19 11:26) [17]

Defunct ©   (19.11.04 02:18) [13]

Задача имеет одно-единственное решение. Код должен быть ясный и понятный. Иногда в ущерб производительности, но всегда ясный и понятный программисту, вне зависимости от квалификации последнего.


 
Verg ©   (2004-11-19 12:21) [18]


if TSide(Item1).P = TSide(Item2).P then
  Result := 0
else
  Result := ord(TSide(Item1).P > TSide(Item2).P) * 2 - 1;


 
Sha ©   (2004-11-19 13:49) [19]

> Гаврила ©   (18.11.04 23:01) [3]
> Result:=TSide(Item1).P - TSide(Item2).P;

Этот код ошибочен для целых чисел
(в нем не учитывается возможность целочисленного переполнения)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.036 c
1-1101107709
uny
2004-11-22 10:15
2004.12.05
Алгоритм - как выделить число


1-1101258444
bulanov
2004-11-24 04:07
2004.12.05
Как быстро передвинуть Image?


14-1100502344
AlexG
2004-11-15 10:05
2004.12.05
У кого есть набор статистических функций?


14-1100693022
infom
2004-11-17 15:03
2004.12.05
Кто нидь в этом участвет ?


3-1099735417
Black
2004-11-06 13:03
2004.12.05
Как передать названия таблиц с сервера на клиент?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский