Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 24.07.2009
Сообщений: 6

Вызов процедуры строкой

24.07.2009, 12:36. Показов 5213. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Корявое название,блин. В чем проблема-помню во время учебы препод показал как например строку "Procedure1" преобразовать и вызвать ее(если она описана и существует).
т.е. код был примерно такой
Pascal
1
2
3
4
5
6
7
8
9
10
...
procedure Proc1;
begin
...
end.
var str1:string;
begin
str1:='Proc1';
та самая функция\процедура(Str1);
end;
Напомните ее пожайлуста,и если можно ее альтернативы в делфии и с++
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.07.2009, 12:36
Ответы с готовыми решениями:

Вызов процедуры в процедуре
Собственно вопрос: можно ли в процедуре вызвать другую процедуру? И если можно, то как? У меня не получается. Это нужно проделать в...

Вызов пользовательской процедуры из процедуры по указателю
Такая задача: Нужно вызвать функцию с параметрами и передать ей указатель на другую функцию чтобы она в цикле вызывала сама функцию и...

Вызов процедуры из другой процедуры с параметрами
Не подскажете как вызвать процедуру StringGrid1KeyUp procedure TMainForm.StringGrid1KeyUp(Sender: TObject; var Key: Word; Shift:...

26
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
30.07.2009, 21:32
Студворк — интернет-сервис помощи студентам
С собакой не ругается.
0
⚽
Эксперт по компьютерным сетямЭксперт Pascal/Delphi
 Аватар для TAVulator
4191 / 1292 / 237
Регистрация: 27.07.2009
Сообщений: 3,962
30.07.2009, 21:36
Цитата Сообщение от Lolcht0 Посмотреть сообщение
тогда, может быть имеет смысл написать
Pascal
1
arr[1]:=@ar;
сработало! теперь и во Free Pascal запускается

Цитата Сообщение от Messenger of G. Посмотреть сообщение
Можно пойти другим путём: разделять процедуры двух типов и работать с адресами.
хмм... т.е. на сколько я понимаю - отдельно массив с указателями на процедуры и отдельно массив с тем, что брать?

Тогда каким образом вот в этом куске:
Pascal
1
2
arr[1]:=@A; types[1]:=proc1; {процедура берёт строку}
arr[2]:=@B; types[2]:=proc2; {процедура берёт число}
первая процедура берет именно строку, а вторая именно число?
0
0 / 0 / 0
Регистрация: 24.07.2009
Сообщений: 6
30.07.2009, 21:59  [ТС]
хм,оригинальноне знал что так можно
0
 Аватар для dim-hj
28 / 25 / 1
Регистрация: 28.07.2009
Сообщений: 109
31.07.2009, 06:37
Цитата Сообщение от 1vopros Посмотреть сообщение
я хочу это использовать в игре,для вызова процедур которые нужны не в данный момент а скажем через пару минут. в массив их добовлять и потом проверять по времени и если подошел момент то запускать.
Одновременно с коллбеком практически всегда передаётся указатель на данные для этого коллбека. Везде так. Любой WinAPI callback посмотришь, там всегда есть дополнительный параметр -- указатель на пользовательские данные.

Если прокрутить цепочку промежуточных преобразований, то в случае Turbo Pascal наиболее оптимальным вариантом оказывается сделать абстрактный класс TClosure с единственным публичным виртуальным методом. Ну и, на всякий случай, виртуальным деструктором. И затем оперировать указателями на потомков TClosure. Внутри потомков TClosure объявлять данные, которые нужны коллбеку, и использовать их из перегруженного метода естественным образом.

На процедурных типах та же схема делается сложнее.

В Delphi 2009 замыкания появились на уровне языка. Что удобно, управление памятью у них происходит автоматически, также, как и у строк.
0
0 / 0 / 0
Регистрация: 24.07.2009
Сообщений: 6
31.07.2009, 07:12  [ТС]
Теперь интересно как это в с++ сделать
0
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
31.07.2009, 09:30
Теперь интересно как это в с++ сделать
И какой смысл было в Паскале поститься?
0
0 / 0 / 0
Регистрация: 24.07.2009
Сообщений: 6
31.07.2009, 11:00  [ТС]
смысл был в том что я это видел точно в паскале и незнаю можно ли это применять в делфи или си.придеться скорее всего новый тред открыть со ссылкой сюда
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.07.2009, 11:00

Массивы. Загрузите программу, проверьте ее исполнение, замените вызов процедуры ввода на вызов присваивания и снова исполните программу
Загрузите программу lab11.pas, проверьте ее исполнение, замените вызов процедуры ввода на вызов присваивания и снова исполните программу: ...

Вызов функции по имени, заданному строкой
В некоторых языках возможен вызов функции по ее имени из строки, что весьма удобно. Как это реализовать на delphi? Если такого нет...

Вызов процедуры из процедуры (с параметрами)
Заранее, извиняюсь за свой вопрос - вполне может быть для кого то очевидный :) Если не трудно помогите. 1. Есть процедура ...

Вызов процедуры из хранимой процедуры
подскажите плз. кто сталкивался по теме. необходима так же передача параметров. За ранее всем благодарен

Вызов процедуры внутри процедуры
Здравствуйте, Как правильно это сделать? alter procedure . as BEGIN SELECT DateN FROM Nakl (По факту там одна строка....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru