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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2014, 16:01   #1
Mik92
Пользователь
 
Регистрация: 25.08.2014
Сообщений: 87
По умолчанию Как передать параметр функции в const?

Хочу сделать функцию которая передает при вызове строку в const функции, но вылетает ошибка

Код:
function func(function, Name: String): Boolean;
const
  TheFunction = function;
begin
  ...
end;

ошибка
Код:
[dcc32 Error] Unit4.pas(69): E2026 Constant expression expected
Что не так?

Последний раз редактировалось Mik92; 30.11.2014 в 16:03.
Mik92 вне форума Ответить с цитированием
Старый 30.11.2014, 16:07   #2
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Зарезервированные слова нельзя использовать в качестве имен переменных.
Iron Monk вне форума Ответить с цитированием
Старый 30.11.2014, 17:26   #3
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

И даже если бы было не зарезервированное слово function, все равно так нельзя.
Нельзя константу определять переменной.

Можно так
Код:
function func(Name: String): Boolean;
const
  TheFunction = 'какая то строка';
begin
// ...
Или так
Код:
const STROKA='какая то строка';
// ...
function func(Name: String): Boolean;
const
  TheFunction = STROKA;
begin
// ...
И вообще непонятно, что именно надо.
Может быть, создать тип, например
Код:
type  TyFunction = function(x:Double):Double;
И тогда этот переменную этого типа можно передавать какой-нибудь функции
Код:
function func(funForm:TyFunction):Integer;
Естественно, при вызове func в качестве фактического параметра (вместо формального funForm) передавать имя функции, которая должна быть уже описана.
type_Oleg вне форума Ответить с цитированием
Старый 30.11.2014, 17:33   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Можно так записать:

function func(const Name: String): Boolean;

И будет у нас внутри константа, а передавать можно переменную. Передача происходит по ссылке.
Arigato вне форума Ответить с цитированием
Старый 30.11.2014, 19:20   #5
Mik92
Пользователь
 
Регистрация: 25.08.2014
Сообщений: 87
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
И даже если бы было не зарезервированное слово function, все равно так нельзя.
Нельзя константу определять переменной.

Можно так
Код:
function func(Name: String): Boolean;
const
  TheFunction = 'какая то строка';
begin
// ...
Или так
Код:
const STROKA='какая то строка';
// ...
function func(Name: String): Boolean;
const
  TheFunction = STROKA;
begin
// ...
И вообще непонятно, что именно надо.
Может быть, создать тип, например
Код:
type  TyFunction = function(x:Double):Double;
И тогда этот переменную этого типа можно передавать какой-нибудь функции
Код:
function func(funForm:TyFunction):Integer;
Естественно, при вызове func в качестве фактического параметра (вместо формального funForm) передавать имя функции, которая должна быть уже описана.
Спасибо вариант 2 помог) но все же хотел использовать это как функцию чтобы не создавать множество таких решил все в одну но если так нельзя то придется жертвовать местом)
Mik92 вне форума Ответить с цитированием
Старый 30.11.2014, 20:16   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

В чем принципиально желание использовать константы? Используйте переменные.
Arigato вне форума Ответить с цитированием
Старый 30.11.2014, 20:42   #7
Mik92
Пользователь
 
Регистрация: 25.08.2014
Сообщений: 87
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
В чем принципиально желание использовать константы? Используйте переменные.
В моем случае использовать переменные не удобно
Mik92 вне форума Ответить с цитированием
Старый 30.11.2014, 22:24   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Mik92 Посмотреть сообщение
В моем случае использовать переменные не удобно
параметр уже переменная и уже есть.
константа инициализируется константой.

не меняйте свою переменную вот и все.

кстати еще есть конст параметры.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.12.2014, 16:56   #9
Mik92
Пользователь
 
Регистрация: 25.08.2014
Сообщений: 87
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
параметр уже переменная и уже есть.
константа инициализируется константой.

не меняйте свою переменную вот и все.

кстати еще есть конст параметры.
спасибо возьму на заметку
Mik92 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передать строку как параметр или альтернатива Dozent Общие вопросы Delphi 5 14.09.2013 20:25
Как передать параметр в выборку Predator199 PHP 10 02.07.2012 19:30
Как передать параметр в поток? Pack Общие вопросы Delphi 3 22.02.2012 12:09
Как передать правильно параметр. ZHDN Общие вопросы Delphi 4 01.08.2011 14:22
Как передать параметр? Иллидан Общие вопросы Delphi 8 12.07.2008 12:57