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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.07.2015, 09:47   #31
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
var  x: integer;

procedure callback(const s: string);
область видимости имен объявленныx в
interface везде
implementation в пределах uint
procedure ... в пределах данной процедуры

переменные процедуры размещены в стеке и "живут"(имеют адреса) исключительно во время ЕЕ выполнения.
код процедуры размещен постоянно и доступен в любое время (если у вас есть ее адрес), а узнать адрес можно только во время выполнения процедурЫ где данная процедура видна(известно ее имя).

Цитата:
процедурЫ где данная процедура
Здесь речь про ДВЕ разные процедуры, вторая есть ЛОКАЛЬНАЯ процедура. (также как локальная переменная, НО... есть отличия читай выше)
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 31.07.2015, 10:08   #32
ResourceSpace
Форумчанин
 
Аватар для ResourceSpace
 
Регистрация: 30.06.2015
Сообщений: 353
По умолчанию

В общем Делфи7 не поддерживает подобные статик-функции.

Нашёл, вроде похожее: http://www.gunsmoker.ru/2015/05/task-18-answer.html
Цитата:
Попробуйте скомпилировать этот код для x64. В отличие от кода x32, который для доступа к переменным просто смещается по стеку на заранее известное смещение от собственных локальных переменных, код x64 иначе производит доступ к локальным переменным ...
Цитата:
Nested procedures and functions (routines declared within other routines) cannot be used as procedural values, nor can predefined procedures and functions.
Не используйте локальные подпрограммы в качестве callback-ов.
ResourceSpace вне форума Ответить с цитированием
Старый 31.07.2015, 10:21   #33
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Цитата:
Если не сложно, можете объяснить, как такое вложение функций называется, и почему для этого не нужно писать var перед _PROC?
Автор, ты ответил на свой вопрос - это вложенные функции.
Объявление вложенных функций возможно только а синтаксисе Делфи. К сожалению "братский" язык программирования не поддерживает такую возможность.
Свойство вложенных функций:
1. Как правильно заметил ResourceSpace они не принадлежат ни классу ни объекту. Это как бы автономные программные вставки... которыми я очень часто пользуюсь
2. Вложенные функции отличаются от обычных тем, что они "закрыты" для доступа извне, включая секцию implementation текущего файла

п.с. одного не понимаю, зачем нужен вызов такой функции ?
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 31.07.2015, 15:28   #34
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Спасибо всем, кто помогал.
Цитата:
Сообщение от JUDAS Посмотреть сообщение
п.с. одного не понимаю, зачем нужен вызов такой функции ?
Чтоб к ней не было доступа извне, и она находилась как бы в классе. Жаль, что Delphi 7 не поддерживает статик функций, тогда это можно было бы сделать нормально.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
На С++ написать программу с реализацией в виде вызова функции по ссылке: Функция должна вернуть не одно, а ДВА(или более) значения Raitek Помощь студентам 2 23.01.2015 07:41
Процедура и функция Ken_Watanabe Помощь студентам 9 09.09.2014 16:27
Сделать чтобы функция стандартная String.Delete работала в классе потомке от TStringList? nick17 Общие вопросы Delphi 4 09.11.2010 14:17
Метод обратного вызова? Altera Общие вопросы Delphi 20 11.08.2010 18:27
Функция обратного вызова и таймер на WinApi flug Win Api 4 17.09.2009 16:06