Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизКак обойти подводный Камень приведения к типу Найти похожие ветки
← →
Sairex (2010-03-05 14:53) [0]Привет, Госпада.
Столкнулся с оттакой интересной ситуацией. Есть вот такое перечисление:
TMyTest = (
m0 = 0,
m1= 1,
m2 = 5,
m3 = 25
);
Все вроде бы нормально, но...
var MyParam:Byte; MyTest, I:TMyTest;
Res:Boolean;
.....
MyParam:=4;
MyTest:=TMyTest(MyParam);
Res:=false;
for I:=low(MyTest) to High(MyTest) do
if MyTest = I then Res:=true;
.....
Результат будет True. Как обойти это?
Через case делать не шибко хочется....
← →
12 © (2010-03-05 15:13) [1]ээ..может делать не так, а более по человечески? :)
← →
Sairex © (2010-03-05 15:13) [2]через рекорды?
← →
Медвежонок Пятачок © (2010-03-05 15:15) [3]type TMyTest = (m0, m1, m2, m3);
const arr : array[TMyTest] of Integer = (0,1,5,25);
← →
Медвежонок Пятачок © (2010-03-05 15:19) [4]хотя правильный ответ зависит от того, чего же ты хочешь на самом деле.
возможно лучше подойдет вообще set of byte
← →
Sairex © (2010-03-05 16:51) [5]Еще вопросик, а то котелок совсем не варит :(
Можно ли в const массив запихать рекорды?
Ну наподобии:
type MyRecord = record
id:Integer;
Value:String;
end;
const Ar:Array [0..1] of Myrecord=(тут незнаю что и как писать*);
---------
* в си можно записать (.ID = 1, .Value = "text")
← →
Игорь Шевченко © (2010-03-05 16:59) [6]
> Можно ли в const массив запихать рекорды?
можно. синтаксис описан в справке
← →
Sairex © (2010-03-05 17:35) [7]Разобрался. Спасибо
← →
wallaby (2010-03-07 11:10) [8]перечисление TMyTest = (m0 = 0, m1= 1, m2 = 5, m3 = 25); содержит 26 значений от 0 до 25 из которых 4 именованные. Подробнее здесь:
http://docwiki.embarcadero.com/RADStudio/en/Simple_Types#Enumerated_Types_with_Explicitly_Assigned_Ordinality
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.06 c