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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.07.2011, 12:34   #1
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
Восклицание Одинаковые значения в 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
Сообщений: 562
По умолчанию

а пробовал типа такого, ну это примерчик. правда писал прямо сюда
Код:
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
По умолчанию

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

а если это на стадии разработки и все перечисления сидят в 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,694
По умолчанию

Получается путаница с неймспейсами на этапе компиляции, 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 вне форума Ответить с цитированием
Ответ


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

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

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


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