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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2021, 16:21   #1
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 623
По умолчанию Параметр без типа

Нужно сделать чтобы в процедуре был параметр, который может быть любого типа
Код:
Procedure qqq(var a {без типа})
Внутри же процедуры надо определить тип переменной и сделать действие в зависимости от ее типа
Цитата:
case {тип переменной а} of
{Числовой} : a:=123;
{Строковый} : a:='345';
{TEdit} : a.Text:='567';
{TOpenDialog} : a.FileName:='789';
Как такое реализовать?
Kronos913 на форуме Ответить с цитированием
Старый 23.04.2021, 16:42   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

есть такой тип как variant
Код:
var a: variant;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 23.04.2021, 17:04   #3
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 623
По умолчанию

Что-то у меня не особо получается...
Мне нужно так, чтобы в процедуру через var можно было завести переменную любого типа
Kronos913 на форуме Ответить с цитированием
Старый 23.04.2021, 17:13   #4
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 623
По умолчанию

Вообще, суть задачи такая

Поскольку процедуры не хотят напрямую возвращать параметры Edit.Text, OpenDialog.FileName, и т.д., то нужно сделать так, чтобы выходная переменная s2 была любого типа

А дальше из процедуры определить ее тип и
Если строка: s2:='123';
Если TEdit: s2.Text:= '123'
И так далее
Kronos913 на форуме Ответить с цитированием
Старый 23.04.2021, 18:04   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

зачем все это.
вам уже говорили.
работайте через переменную.

Код:
s:=opendialog.Filename;
finddirSeaarch(,,,, s, ...);
Edit1.Text:=s;
P.S. процедурный тип может быть и функцией.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 23.04.2021, 23:03   #6
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 623
По умолчанию

Вообще, я сейчас занимаюсь оптимизацией в принципе работающей программы, выносом общих кусков кода в отдельные процедуры
И скорее проблема в том, что нагромождение с еще одной переменной, уже не даст оптимизации
Kronos913 на форуме Ответить с цитированием
Старый 24.04.2021, 03:09   #7
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

Цитата:
Сообщение от Kronos913 Посмотреть сообщение
Вообще, суть задачи такая

Поскольку процедуры не хотят напрямую возвращать параметры Edit.Text, OpenDialog.FileName, и т.д., то нужно сделать так, чтобы выходная переменная s2 была любого типа

А дальше из процедуры определить ее тип и
Если строка: s2:='123';
Если TEdit: s2.Text:= '123'
И так далее
Вы бы почитали бы учебник. Чтобы понять разницу между переменной и свойством класса.
northener на форуме Ответить с цитированием
Старый 24.04.2021, 07:19   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

скорее всего не даст оптимизации "нагромождение" кода
Код:
if <это строка>
else if <это TEdit>
else if ...
внутри процедуры (даже если бы это было возможно).

а переменные("простых" типов) для того и существуют чтобы оптимизировать как вычисления, так и написание программ(модулей, функций).
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 24.04.2021, 10:06   #9
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

для "оптимизации" написания вызовов процедур существует
1. перегрузка процедур
2. параметры по умолчанию
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Используя параметр строка открытого типа, отсортировать по нарастанию строки из 10 и 12 символов. function Помощь студентам 1 27.02.2019 19:12
Функция без указанного типа cossack5 Общие вопросы C/C++ 3 16.01.2014 09:34
Работа со временем без типа Data monty "2" Помощь студентам 7 31.03.2010 18:54