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

Вниз

Помогите разобраться с inc/dec   Найти похожие ветки 

 
Андрусь   (2002-09-03 12:51) [0]

Привет всем! Такая вот проблемка возникла:есть у меня процедуры 2х типов, различие между ними только в том, что первая исп. процедуру inc,вторая dec. Возникло естеств. желание не писать 2 проц.,а передавать параметром процедуру.
Сделал так -

type
TChangeProcedure=procedure (var item:integer);

Procedure ChangeProcedure(var item:integer);
Procedure TestChange(ChangeProcedure:TChangeProcedure);
.............................................

procedure TestChange(ChangeProcedure:TChangeProcedure);
var i:integer;
begin
i:=0;
ChangeProcedure(i);
end;

procedure ChangeProcedure(var item: integer);
begin
inc(item);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
TestChange(@ChangeProcedure);
end;


Всё там работает,но хотелось бы передавать сами проц.inc и dec. Я так понимаю тип просто не такой,а исх.inc/dec не видно.
Зараннее всем большое спасибо!


 
Alx2   (2002-09-03 12:52) [1]

inc и dec не процедуры. это а-ля макросы


 
Виктор Щербаков   (2002-09-03 12:53) [2]

Исходников inc и dec нет. Эти функции встроенные. Т.е. компилятор, встретив их, генерирует код.


 
Андрусь   (2002-09-03 12:56) [3]

Т.е. в моем случае ничего не придумаешь.


 
Alx2   (2002-09-03 12:58) [4]

>Андрусь © (03.09.02 12:56)
Ну если очень хочется, можно свои аналоги написаять для inc и dec (синтаксис в их есть Help). Но эффективность снизится.


 
Ученик   (2002-09-03 13:47) [5]

А поменять + на -, и использовать одну ?


 
Anatoly Podgoretsky   (2002-09-03 13:57) [6]

А еще лучше вместо ChangeProcedure(x) сразу написать inc(x)


 
RV   (2002-09-03 14:20) [7]

inc(x);
inc(x,-1);


 
Dimka Maslov   (2002-09-03 14:26) [8]

procedure Inc(var X: Integer);
asm
inc dword ptr [eax]
end;

procedure Dec(var X: Integer);
asm
dec dword ptr [eax]
end;



 
Alx2   (2002-09-03 14:29) [9]

Пошло-поехало :))
Внесу свою дурную лепту:

>RV © (03.09.02 14:20)
dec(x,-1);
dec(x);
8)

>Anatoly Podgoretsky © (03.09.02 13:57)
>А еще лучше вместо ChangeProcedure(x) сразу написать inc(x)
почему именно inc ? 8)

PS Сорри за мусор.


 
valery_f   (2002-09-03 15:02) [10]

Учитывая "накладные расходы" на вызов процедур, imho проще с inc/dec разбираться на месте, а еще лучше - определить переменную и записывать в нее "1" или "-1":

//инициализация
if ???
then increment := 1 //работаем на увеличение
else increment := -1; //работаем на уменьшение

//использование
inc(нечто,increment);



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

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

Наверх





Память: 0.46 MB
Время: 0.007 c
1-50854
Vint44
2002-09-04 12:23
2002.09.16
Добавление компонента в run-time


1-50757
jen_bond
2002-09-06 07:18
2002.09.16
Выбор ячейки в DBGrid


7-51004
Geser
2002-07-06 22:11
2002.09.16
Очистка корзины


1-50849
Valeris
2002-09-04 15:02
2002.09.16
Компонент для работы с Excel


3-50604
Bayram Annanurov
2002-08-26 10:33
2002.09.16
опечатка





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский