Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Ответ
 
Опции темы
Старый 25.07.2011, 12:34   #1
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Адрес: Украина, г. Киев
Сообщений: 414
Репутация: 55
Восклицание Одинаковые значения в enumeration

Привет всем!!!
Есть 2-ва enumeration
Код:

...
type
   TEnum1 = (None, N1, N2);
   TEnum2 = (None, M1, M2);
...

Что надо сделать что бы не было:
[Error] Test.pas(39): Identifier redeclared: 'None' ???

P.S. Переименование None не подходит.
__________________
Нет невыполнимых задач, всё дело времени...
D-mon вне форума   Ответить с цитированием
Старый 25.07.2011, 12:58   #2
grafgrial
Просто хороший
Участник клуба
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Адрес: Башкирия, Туймазы
Сообщений: 557
Репутация: 12

icq: 447370260
По умолчанию

а пробовал типа такого, ну это примерчик. правда писал прямо сюда
Код:

type
 TEnum = (N1, N2, M1, M2);

var
 Enum: set of TEnum;

procedure TForm1.FormCreate(Sender: TObject);
const
 X_ENUM: array [TEnum] of string = ('N1', 'N2', 'M1', 'M2');
var
 i: LongInt;
begin
 Enum:= Enum + [N1];
 Enum:= Enum + [N2];

 For i:= 1 to High(TEnum) do // <- Incompatible types.
   If TEnum(i) in Enum then Caption:= Caption + ', ' + X_ENUM[TEnum(i)];
end;

__________________
Помог, нажми весы слева
grafgrial вне форума   Ответить с цитированием
Старый 25.07.2011, 13:11   #3
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Адрес: Украина, г. Киев
Сообщений: 414
Репутация: 55
По умолчанию

Как вариант, слить все перечисления в одно.
И все проперти в моём классе, которые наследуются от перечислений, наследовать только от этого одного сборного перечисления.

а если это на стадии разработки и все перечисления сидят в WSDL????

а вот и сами перечисления:
Код:

{ "http://tempuri.org/" }
  eTerm = (None, d15, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, year);

  { "http://tempuri.org/" }
  ePriveleg = (None, VOV, invalid, chernobil, pension);

  { "http://tempuri.org/" }
  eDiscount = (None, till10, till20, more20);

  { "http://tempuri.org/" }
  eZona = (None, kiyv, moreMillion, more5th, more1th, low1th, borispol, other);

  { "http://tempuri.org/" }
  eTypeAuto = (None, b1, b2, b3, b4, a1, a2, c1, c2, d1, d2, f, e, b, a, c, d);

  { "http://tempuri.org/" }
  eInsurantBlankStatus = (None, markToPrint, goodPrint, badPrint);

__________________
Нет невыполнимых задач, всё дело времени...
D-mon вне форума   Ответить с цитированием
Старый 25.07.2011, 15:25   #4
JTG
я получил эту роль
Профессионал
 
Аватар для JTG
 
Регистрация: 25.05.2007
Адрес: тут темно и с потолка капает
Сообщений: 3,695
Репутация: 2224

icq: III 37373860
По умолчанию

Получается путаница с неймспейсами на этапе компиляции, delphi вообще болезненно работает с перечислениями, ругаясь Identifier redeclared даже если его точно нигде больше не видно (например, strict private type).

Вот так съест, но это какой-то бег по граблям

Код:

unit NS1;

interface

type
   TEnum1 = (None, N1, N2);

implementation

end.

Код:

unit NS2;

interface

type
   TEnum2 = (None, M1, M2);

implementation

end.

Код:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, NS1, NS2, Typinfo;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var Enum1: TEnum1;
    Enum2: TEnum2;
begin
  ShowMessage('TEnum1 (0): ' + GetEnumName(TypeInfo(TEnum1), 0));
  ShowMessage('TEnum2 (0): ' + GetEnumName(TypeInfo(TEnum2), 0));
end;

end.

---

А не, эта грязная попытка обмануть компилятор работает в режиме read-only, т.к. None будет из последнего объявленного модуля и его не дадут присвоить переменной Enum1.
__________________
пыщь

Последний раз редактировалось JTG; 25.07.2011 в 15:34.
JTG вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
qos или SOCKET_USAGE_TYPE Enumeration Master255 Работа с сетью в Delphi 0 17.07.2010 16:47
Выполнение нескольких рандомов дает одинаковые значения byte916 Помощь студентам 5 18.01.2010 12:26
Считать одинаковые значения Волк Microsoft Office Excel 10 26.03.2009 12:18
Одинаковые элементы kodov Общие вопросы Delphi 3 11.08.2008 14:03
Убрать одинаковые значения D-mon БД в Delphi 1 23.08.2007 10:55


23:40.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru