Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.12.2008, 17:04
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию Имя переданной переменной

Всем доброго....
Вопрос заключается в следующем:
Есть некоторая функция типа shortstring:
SomeFunction(bool_FuncParam: boolean):shortstring;
из разных мест программы в нее могут передаваться четыре переменные (Parall, Ortho, Blinding, Select), соответственно имеющие значение true or false, требуется на выходе функции получить имя входящей переменной при значении true этой входящей переменной, т.е.
Код:
function SomeFunction(bool_FuncParam: boolean):shortstring;
begin
   if not bool_FuncParam then Result:='Nothing' else
   begin
     if .........{bool_FuncParam Name as Parall} then Result:='Parall';
     if .........{bool_FuncParam Name as Ortho} then Result:='Ortho';
     if .........{bool_FuncParam Name as Blinding} then Result:='Blinding';
     if .........{bool_FuncParam Name as Select} then Result:='Select';
   end;
end;

передача значения осуществляется соответственно

Memo1.Lines.Add(SomeFunction(Parall));
Memo1.Lines.Add(SomeFunction(Ortho));
Memo1.Lines.Add(SomeFunction(Blinding));
Memo1.Lines.Add(SomeFunction(Select));

Какие могут быть соображения по данному вопросу?
__________________
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard
Ответить с цитированием
  #2  
Старый 16.12.2008, 18:34
lmikle lmikle сейчас на форуме
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,026
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Если идти таким путем, то никак, т.к. имена параметров внутри функции никак не соотвносятся с переменными, переданными извне.
вариант решения - передавать некоторый класс. Тогда можно получить имя класса.

Например:
Код:
type
  TBaseVar = class
     Value : Boolean;
  end;

 Parall = class(TBaseVar) end;
 Ortho = class(TBaseVar) end;
 ...

function SomeFunction(AVar : TBaseVar) : String;
begin
  Result := AVar.ClassName;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  C : TBaseVar;
begin
  C := Parall.Create;
  ShowMessage(SomeFunction(C));
  C.Free;
end;
Ответить с цитированием
  #3  
Старый 16.12.2008, 18:47
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

хм, в эту сторону я даже и не копал.... спасибо за подсказку,
соответственно экземплярам класса присваивают значения
Код:
Parall.Value:=true;
Ortho.Value:=false;
...и т.п.
проверю, еще раз спасибо за помощь
__________________
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard
Ответить с цитированием
  #4  
Старый 16.12.2008, 18:58
lmikle lmikle сейчас на форуме
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,026
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Да, именно так.
Я ж там написал проверку. просто попробуй и все.
Ответить с цитированием
  #5  
Старый 16.12.2008, 19:19
Аватар для 0nni
0nni 0nni вне форума
Начинающий
 
Регистрация: 13.12.2008
Адрес: Туапсе
Сообщения: 161
Репутация: 20
По умолчанию

А 3ачем вообще Boolean передвать? передавайте byte например...
__________________
...сказал, и загрустил от бесспорной своей правоты
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:50.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter