Главная страница
    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.48 MB
Время: 0.036 c
2-1132570964
Apachi
2005-11-21 14:02
2005.12.11
TWebBrowser как прочитать содержимое


4-1128594625
NikNet
2005-10-06 14:30
2005.12.11
Как добавить скин для ТоолБар?, Помогите кодом


2-1132915316
De
2005-11-25 13:41
2005.12.11
Возможны ли извраты с PopupMenu?


2-1132476842
The One
2005-11-20 11:54
2005.12.11
Как получить обратиться к полю класса (private) из регулярной...


1-1131704477
DelphiLexx
2005-11-11 13:21
2005.12.11
DosToWin





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский