Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2012, 22:30   #1
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию собственный числовой тип

Где-то видел пару недель назад строку примерно такого вида f=byte[1..4]; или f=[1..4]of byte;
точно немогу вспомнить, но смысл был в том, что я создавал собственный числовой тип. Кто нормально знает что это было - исправьте пожалуйста.
пыжок

Последний раз редактировалось maloun; 16.06.2012 в 22:39.
maloun вне форума Ответить с цитированием
Старый 16.06.2012, 22:40   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,220
По умолчанию

Информация: http://it-starter.ru/content/tseloch...-yazyke-pascal
Arigato на форуме Ответить с цитированием
Старый 16.06.2012, 22:43   #3
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

f = 1..4;
вспомнил - тема закрыта

Цитата:
Сообщение от Arigato Посмотреть сообщение
спасибо за полезную информацию var a: 1..3; ещё лучше
пыжок
maloun вне форума Ответить с цитированием
Старый 16.06.2012, 23:22   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

В результате f будет иметь тип Byte, а не Ваш собственный.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 16.06.2012, 23:48   #5
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
В результате f будет иметь тип Byte, а не Ваш собственный.
Не совсем Byte как-то...
Код:
{$APPTYPE CONSOLE}

type f = 1..4;

procedure p(x: Byte); overload;
begin
  WriteLn('Byte');
end;

procedure p(x: f); overload;
begin
  WriteLn('f');
end;

var
  varByte: Byte = 1;
  varF: f = 1;
begin
  p(varByte);
  p(varF);
  ReadLn;
end.
Somebody вне форума Ответить с цитированием
Старый 17.06.2012, 00:01   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Уткин, не придирайтесь, там всетаки есть разница, а меньше байта мы не адресуем.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.06.2012, 00:27   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,220
По умолчанию

Интервальные типы имеют значение только на этапе компиляции. Во время выполнения можно спокойно выйти за пределы интервала.
Код:
type f = 1..4;
var varF: f = 4;
begin
  varF := varF + 1;
  WriteLn ('varF = ', varF);
  ReadLn;
end.

Последний раз редактировалось Arigato; 17.06.2012 в 00:32.
Arigato на форуме Ответить с цитированием
Старый 17.06.2012, 10:45   #8
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Интервальные типы имеют значение только на этапе компиляции. Во время выполнения можно спокойно выйти за пределы интервала.
А если так:
Код:
{$R+}
type f = 1..4;
var varF: f = 4;
begin
  varF := varF + 1;
  WriteLn ('varF = ', varF);
  ReadLn;
end.
s-andriano вне форума Ответить с цитированием
Старый 17.06.2012, 11:32   #9
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,220
По умолчанию

В первом случае:



Во втором:

Arigato на форуме Ответить с цитированием
Старый 17.06.2012, 12:05   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Arigato, помоему итак понятно что проверка границ требует дополнительного кода.
правда это дело как то криво идет, не понимаю зачем inc,dec последовательно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 17.06.2012 в 12:08.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ОЧЕНЬ нужно создать собственный тип данных в Delphi Dima_Dima Общие вопросы Delphi 4 16.01.2011 00:45
две задачи на тип INTEGER и тип CHAR inspiron13 Помощь студентам 5 04.01.2011 00:17
две задачи на тип INTEGER и тип CHAR inspiron13 Паскаль, Turbo Pascal, PascalABC.NET 3 04.01.2011 00:08
Собственный тип в С L_M Общие вопросы C/C++ 7 02.05.2009 22:53
Перевести тип String в тип PChar (Delphi 7) ScorpioN_T Помощь студентам 2 28.10.2008 22:13