Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];

Вниз

Как определить целочисленный тип, принимающий значения -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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.038 c
1-1131962564
Дмитрий_05
2005-11-14 13:02
2005.12.11
Окно программы не высвечивается в таскбаре


3-1130435799
BigSerg
2005-10-27 21:56
2005.12.11
Unicode+Ado+Oracle


10-1108721885
kblc
2005-02-18 13:18
2005.12.11
OLEContainer and MDIChild


1-1132131172
Wolferio
2005-11-16 11:52
2005.12.11
Обработка Ошибок


14-1132655028
Dmitrij_K
2005-11-22 13:23
2005.12.11
SFTP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский