Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.16;
Скачать: CL | DM;

Вниз

Помогите разобраться с 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
14-50961
blackweber
2002-08-21 19:36
2002.09.16
Присуждают ли Нобелевскую премию в области математики.


8-50864
BorisMor
2002-05-15 10:58
2002.09.16
наложение BMP


1-50836
stas_a
2002-09-03 16:21
2002.09.16
Удалить себя


1-50664
R_F$29{n}xp
2002-09-04 13:51
2002.09.16
Мастера подскажите как можно сохранить компонент TTree View?


1-50809
Ola
2002-09-03 08:58
2002.09.16
ShiftState