![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | 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));Какие могут быть соображения по данному вопросу?  | 
| 
		 
			 
			#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; ...и т.п.  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Да, именно так. 
		
	
		
		
		
		
		
	
		
		
	
	
	Я ж там написал проверку. просто попробуй и все.  | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 А 3ачем вообще Boolean передвать? передавайте byte например... 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 |