Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2011, 07:04   #1
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию Выполнить список функций в цикле

Доброго времени суток.

У меня около 100 проверочных функции... по сути проверочная программа...

функции записаны в столбик как

Код:
if  fun1 then
if  fun_dat then
// и так  в низ 100 раз :)
когда их было мало было удобно..но с каждым днём из всё больше... объединить их нельзя.. ибо они часто меняются... да и править не удобно.

вопрос как можно их записать компактнее... чтобы удобно было с ними работать... Лучше в массив... и в цикле его бы прогнать.... Но не знаю как функцию записать в массив.

Хочется примерно так

Код:
const a: arrey[0..100] of ?????  = (fun1,fun_dat)
begin
 for I=0 to 100 do
  if (not a[i]) then break;
end;
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 04.04.2011, 07:45   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Лучше в массив
Легко:
Код:
 type fun=function (i:integer):integer;

 function q(i:integer):integer;begin Result:=i;end;
 function w(i:integer):integer;begin Result:=i*2;end;

 var a:array[1..2] of fun;k,i:integer;

begin
 a[1]:=q;a[2]:=w;
 for i:=1 to 2 do k:=k+a[i](i);
 writeln(k);readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
Единственное что придется в массив эти функции заводить, но это можно и в отдельном модуле сделать. И вторая сложность - описание всех таких функций должно быть однотипным.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.04.2011, 08:15   #3
xexxex
Пользователь
 
Регистрация: 31.07.2010
Сообщений: 52
По умолчанию

Может чутка подправить и попробовать так
Код:
 type fun=function (const i:array of const):integer;
 function q(const i:array of const):integer;
 begin Result:=i[0].VInteger; Result := Result + StrToInt(string(i[1].VAnsiString)) end;
 function w(const i:array of const):integer;begin Result:=i[0].VInteger*2;end;
 var a:array[1..2] of fun;k,i:integer;
xexxex вне форума Ответить с цитированием
Старый 04.04.2011, 08:48   #4
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

кажет начинаю понимать.... функции у меня все boolean и выдают true или false
и если не трудно можно пояснить что и зачем жирным выделено.

Код:
 function q(i:integer):integer;begin Result:=i;end;
 function w(i:integer):integer;begin Result:=i*2;end;
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 04.04.2011, 08:58   #5
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от BARNEY Посмотреть сообщение
кажет начинаю понимать.... функции у меня все boolean и выдают true или false
еще список параметров должен быть одинаковым
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 04.04.2011, 09:43   #6
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

тут легче им параметры не передаются... они глобальные они сами их берут какие надо т.е. надо тупо выполнять по 1 ..если вернёт false то цикл прерывается и идёт след запись.

такая запись это и даёт.... но это не удобно в коде и ошибки ловить тоже
Код:
if  fun1 then
if  fun_dat then
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 04.04.2011, 12:07   #7
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

может сразу взять dUnit?
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 04.04.2011, 15:58   #8
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

veniside
можете считать меня извращенцем.... но я пользуюсь только стандартными компонентами... ибо костыли надоели...при переходу из версии в версию.

подскажите что пихать в

Код:
function q:boolean;begin Result:=??? end;
 function w:boolean;begin Result:=??? end;
или я не так чего понял?
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 04.04.2011, 16:24   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да это я так для примера дал, мол массив с функциями у которых тела разные
Что тебе туда пхать уже твое дело, я показал только как их можно в цикле вызвать
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.04.2011, 16:45   #10
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> я пользуюсь только стандартными компонентами

dUnit входит во все версии Дельфи, начиная с 2005
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Список функций .dll Johnson Общие вопросы Delphi 2 21.12.2010 17:10
Составить программу вычисления значений функций, используя приём "цикл в цикле" Chaynik011091 Помощь студентам 5 22.06.2009 21:33
Построение графиков функций С++ (методы аппроксимации функций) amdbodia Общие вопросы C/C++ 0 24.05.2009 15:28
использование функций в качестве параметров других функций mono Помощь студентам 0 20.04.2009 18:25
Список функций прерываний Arhe Помощь студентам 5 22.02.2008 01:05