Главная страница
    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.014 c
1-50833
Dmitry1
2002-09-04 09:54
2002.09.16
Аналог функции барсика - format


1-50811
mvg_first
2002-09-03 16:19
2002.09.16
Помогите отучить TVideoGrabber от наг-скрина!


3-50590
progger
2002-08-25 10:44
2002.09.16
Помогите с Query


1-50665
KARNAGE
2002-09-04 18:20
2002.09.16
как из программы выделить все записи DbGrid?


3-50603
Gaber
2002-08-26 10:57
2002.09.16
Русский шрифт в Database Desktop





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