|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
Имя переданной переменной
Всем доброго....
Вопрос заключается в следующем: Есть некоторая функция типа 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
|
|||
|
|||
Если идти таким путем, то никак, т.к. имена параметров внутри функции никак не соотвносятся с переменными, переданными извне.
вариант решения - передавать некоторый класс. Тогда можно получить имя класса. Например: Код:
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
|
||||
|
||||
хм, в эту сторону я даже и не копал.... спасибо за подсказку,
соответственно экземплярам класса присваивают значения Код:
Parall.Value:=true; Ortho.Value:=false; ...и т.п. Понять, что хочет заказчик - бесценно, ведь он платит MasterCard |
#4
|
|||
|
|||
Да, именно так.
Я ж там написал проверку. просто попробуй и все. |
#5
|
||||
|
||||
А 3ачем вообще Boolean передвать? передавайте byte например...
...сказал, и загрустил от бесспорной своей правоты |