Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.11;
Скачать: CL | DM;

Вниз

Как определить целочисленный тип, принимающий значения -1 и 1?   Найти похожие ветки 

 
Mike0902 ©   (2005-11-21 13:39) [0]

Как определить целочисленный тип, принимающий значения -1 и 1?


 
MBo ©   (2005-11-21 13:48) [1]

Это нужно?

type TPlusMinus = (MinusOne=-1, PlusOne=1);


 
Mike0902 ©   (2005-11-21 14:10) [2]

спасибо, направление нужни было задать


 
Reindeer Moss Eater ©   (2005-11-21 14:55) [3]

>тип, принимающий значения -1 и 1?

Тип TPlusMinus может принимать значения MinusOne и PlusOne.


 
Mike0902 ©   (2005-11-21 15:52) [4]

Согласен. Все равно приобразовывать придется. Нельзя наверно определить такой тип


 
Anatoly Podgoretsky ©   (2005-11-21 16:25) [5]

Mike0902 ©   (21.11.05 14:10) [2]
Не обязательно, можно и type TPlusMinus = (PlusOne=1, MinusOne=-1);


 
Leonid Troyanovsky ©   (2005-11-21 16:45) [6]


> Mike0902 ©   (21.11.05 15:52) [4]
> Согласен. Все равно приобразовывать придется. Нельзя наверно
> определить такой тип


А зачем? Boolean вполне хватает.

--
Regards, LVT.


 
Reindeer Moss Eater ©   (2005-11-21 16:55) [7]

C приведением типов этот тип может напринимать много разных значений.
Ноль, сто, экземпляр TButton, False и т.д.


 
Reindeer Moss Eater ©   (2005-11-21 17:05) [8]

Отсюда вывод: такой тип не нужен вообще.


 
Кефир87 ©   (2005-11-21 22:47) [9]


type
TPlusMinus = -1..1;

???


 
Zeqfreed ©   (2005-11-21 23:27) [10]

Кефир87 ©   (21.11.05 22:47) [9]
Неа, нолик лишний :(


 
Джо ©   (2005-11-22 03:29) [11]

В некоторой мере стёб, но иногда бывает уместно нагородить и так:

 IPlusMinus = interface
   function GetValue: Integer;
   property Value: Integer read GetValue;
   function Equals (PlusMinus: IPlusMinus): Boolean;
 end;

 function Plus: IPlusMinus;
 function Minus: IPlusMinus;

implementation

type
 TPlusMinus = class (TInterfacedObject, IPlusMinus)
 private
   FValue: Integer;
   function GetValue: Integer;
   function Equals (PlusMinus: IPlusMinus): Boolean;
 public
   constructor Create (AValue: Integer);
 end;

function Plus: IPlusMinus;
begin
 Result := TPlusMinus.Create(1);
end;

function Minus: IPlusMinus;
begin
 Result := TPlusMinus.Create(-1);
end;

{ TPlusMinus }

constructor TPlusMinus.Create (AValue: Integer);
begin
 inherited Create;
 Assert ( (AValue=1) or (AValue=-1), "Incorrect value in assignment");
 FValue := AValue
end;

function TPlusMinus.Equals(PlusMinus: IPlusMinus): Boolean;
begin
 Result := FValue = PlusMinus.Value
end;

function TPlusMinus.GetValue: Integer;
begin
 Result := FValue
end;

Бредовенький пример:

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
var
 Direction: IPlusMinus;
begin
 case Button of
   mbLeft: Direction := Minus;
   mbRight: Direction := Plus;
   mbMiddle: raise Exception.Create("Incorrect button pressed");
 end;

 // так
 ShowMessageFmt ("Direction: %d",[Direction.Value]);

 // или так
 if Direction.Equals(Minus) then
   ShowMessage ("This is a minus direction")
 else
   ShowMessage ("This is a plus direction")
end;


Главное, нужные методы (в зависимости от области применения) задать в интерфейсе. Или принимать параметр типа IPlusMinus в других методах, выполняющих то или иное действие в зависимости от значения. В принципе, иногда выглядит очень наглядно.



Страницы: 1 вся ветка

Текущий архив: 2005.12.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.034 c
2-1133069841
Separator
2005-11-27 08:37
2005.12.11
Проблема с move


14-1132427628
YurikGL
2005-11-19 22:13
2005.12.11
Помогите с мат. моделью.


2-1132835209
fast2
2005-11-24 15:26
2005.12.11
Как узнать дату создания файла?


2-1132643044
Juice
2005-11-22 10:04
2005.12.11
Как закрыть форму из ее же метода ?


9-1121760721
google_na_otdyhe
2005-07-19 12:12
2005.12.11
Кто что написал