![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите разобраться с inc/dec [D6, Win2k]
Андрусь © (2002-09-03 12:51:00)Привет всем! Такая вот проблемка возникла:есть у меня процедуры 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 не видно.
Зараннее всем большое спасибо!
valery_f (2002-09-03 15:02:00) [1]Учитывая "накладные расходы" на вызов процедур, imho проще с inc/dec разбираться на месте, а еще лучше - определить переменную и записывать в нее "1" или "-1":
//инициализация
if ???
then increment := 1 //работаем на увеличение
else increment := -1; //работаем на уменьшение
//использование
inc(нечто,increment);
Alx2 (2002-09-03 14:29:00) [2]Пошло-поехало :))
Внесу свою дурную лепту:
>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 Сорри за мусор.
Dimka Maslov (2002-09-03 14:26:00) [3]procedure Inc(var X: Integer);
asm
inc dword ptr [eax]
end;
procedure Dec(var X: Integer);
asm
dec dword ptr [eax]
end;
RV (2002-09-03 14:20:00) [4]inc(x);
inc(x,-1);
Anatoly Podgoretsky (2002-09-03 13:57:00) [5]А еще лучше вместо ChangeProcedure(x) сразу написать inc(x)
Ученик (2002-09-03 13:47:00) [6]А поменять + на -, и использовать одну ?
Alx2 (2002-09-03 12:58:00) [7]>Андрусь © (03.09.02 12:56)
Ну если очень хочется, можно свои аналоги написаять для inc и dec (синтаксис в их есть Help). Но эффективность снизится.
Андрусь (2002-09-03 12:56:00) [8]Т.е. в моем случае ничего не придумаешь.
Виктор Щербаков (2002-09-03 12:53:00) [9]Исходников inc и dec нет. Эти функции встроенные. Т.е. компилятор, встретив их, генерирует код.
Alx2 (2002-09-03 12:52:00) [10]inc и dec не процедуры. это а-ля макросы