Форум: "Основная";
Текущий архив: 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.014 c