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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2019, 22:01   #11
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Так мой смайлик улыбается счастливо (а не ехидно) по случаю окончания маршрута у ледника где-то на границе с Грузией в середине 80-х. А бошка теперь, конечно, не так быстра и остра, как в молодости, но парадоксально - если бы лет 40 назад, когда моя фотоморда не раз Доской почета отмечалась как лучший инженегр - так вот я тогда и половины не знал того, что знаю и умею теперича. Но увы... Ну иногда студню-лентяю прогу накрейтю или себе дивайсик спаяю какой-нить - чтоб мозга шевелилась.
digitalis вне форума Ответить с цитированием
Старый 16.08.2019, 01:39   #12
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от NNK_RTR Посмотреть сообщение
Вы это имели ввиду?
Конечно нет. Т.е. под описанием задачи я не имел в виду только "описание", но конкретизацию того, для чего вам нужно "из некоторой процедуры вызвать другую, заранее неизвестную процедуру (или одну из известных)".
P.S. А по поводу "усыхания мозгов" это вы перебарщиваете.
northener вне форума Ответить с цитированием
Старый 16.08.2019, 11:02   #13
NNK_RTR
Пользователь
 
Регистрация: 14.08.2019
Сообщений: 16
По умолчанию

Все равно, изложив предысторию мне легче конкретизировать.
Функция (пусть будет "First"), та, что перебирает файлы в каталогах (папках) и ищет файлы соответствующие некоторому критерию, используется несколько раз (точнее 8). В написанных 10 лет назад программах, действия, которые нужно выполнять с каждым найденным файлом описаны непосредственно в теле этой функции.
Сейчас я хочу оформить действия в восьми разных процедурах и вызывать нужную для каждого найденного файла. Но как объяснить функции "First", какую из 8 процедур нужно вызывать? Оптимальный вариант - указывать имя процедуры в параметре функции "First" при ее вызове. Понимаю, что выполнение программы замедлится на время вызова и возврата (передачи параметра - Push, вызова - Call и возврата - Ret). И это для каждого найденного файла. Не хотелось бы дополнительно увеличивать это время, добавив оператор выбора (case) в функцию "First". В связи с этим и был задан вопрос.
Использовать в параметре процедурный тип здесь не получается. Процедурный тип и процедура - разные типы (или я чего-то не понимаю, тогда попрошу пример кода, пожалуйста), пока остановился на операторе выбора (подумал, ну подумаешь всего 8 вариантов).
Теперь, после конкретизации, если Вы можете подсказать другое, более оптимизированное решение, то подскажите, только с учетом, что перед Вами любитель и как всякий любитель имеет далеко неполные знания, в том, что ему интересно - может быть дока, а в других близколежащих темах - полный профан. Если нужно еще что нибудь уточнить, то я с удовольствием.
И отдельно:
Спасибо разработчикам сайта. Очень удобна кнопочка расширения поля ввода сообщения. И вообще, сайт прекрасно структурирован - легко можно найти нужную информацию. На других сайтах с этим делом все намного сложнее, иногда информацию проще найти в поисковике, причем она будет найдена на этом же сайте.
NNK_RTR вне форума Ответить с цитированием
Старый 16.08.2019, 11:49   #14
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
Процедурный тип и процедура - разные типы (или я чего-то не понимаю,
https://www.programmersforum.ru/show...08&postcount=5

Код:
type TMyParamProc  =procedure(p1: integer; p2: boolean); //описание процедурного типа
Код:
//описание реальной процедуры типа СООТВЕТСТВУЮЩЕЙ процедурному типу
procedure mycalc(a: integer; b: boolean); // ОДНА ИЗ процедур которые мы хотим вызывать (число и типы параметров в соответсвии с TmyParamProc)
begin
...// а уж использовать их или нет ?!
end;
Цитата:
Код:
procedure First(param1:integer;param2: ?;
Какой тип параметра param2? (если это вообще возможно)
Код:
procedure first(x: integer; testproc: TMyParamProc); // задание параметра -процедуры и использование внутри
begin
  ...
  testproc(x, true); // вызов переданной процедуры  число и типы параметров в соответствии c TmyParamProc
 ...
end;
Код:
//при вызове мы указываем ИМЯ реальной процедуры с какой надо будет(хотим) работать
first(40, mycalc); //и мы указываем  имя процедуры с которой будем работать
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 16.08.2019 в 12:01.
evg_m вне форума Ответить с цитированием
Старый 16.08.2019, 14:34   #15
NNK_RTR
Пользователь
 
Регистрация: 14.08.2019
Сообщений: 16
По умолчанию

Спасибо.
Разобрался, все получилось.
Сейчас даже не могу понять, почему я сразу отбросил возможность использовать процедурный тип.
С уважением, Николай.
NNK_RTR вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызвать функцию(с++) Sterben Помощь студентам 13 29.09.2015 09:01
написать программу массивы (C++) - Написать функцию выводящую на экран указанную часть таблицы умножения Саша1990 Помощь студентам 1 02.02.2015 08:01
Как вызвать функцию.. Аделинкка Общие вопросы Delphi 10 21.12.2012 10:47
Як вызвать функцию из dll в C# ? Dr.Pauliss Помощь студентам 5 26.09.2011 12:42
Как вызвать функцию? blackstersl Общие вопросы Delphi 10 07.06.2009 19:22