Форум: "Основная";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
ВнизПолучение индекса по строке в массиве. Найти похожие ветки
← →
мозг_умер (2004-06-21 21:20) [0]Здравствуйте, Мастера. Есть такая конструкция:
type
TSomeType = (stOne, stTwo, stThree, stFour);
const
SomeTypeStrings: array[TSomeType] of string = ("One", "Two",
"Three", "Four");
Как по строковому значению из SomeTypeStrings получить индекс в TSomeType. Например, "Three" должен возвратить 2. Заранее благодарен.
P.S: Возможно есть некие неточности в терминологии - не судите строго, у меня проблемы с запоминанием терминов.
← →
Johnmen © (2004-06-21 21:24) [1]Перебор. А ты что думал ?
:)
← →
Igorek © (2004-06-21 21:52) [2]TypInfo.GetEnumName - тогда порядок в наборе и массиве может не совпадать
← →
мозг_умер (2004-06-21 22:29) [3]Сделал так:
function GetSomeTypeIndex(const stName: string): Integer;
var
I: Integer;
begin
Result := 0;
for I := Ord(Low(TSomeType)) to Ord(High(TSomeType)) do
if GetEnumName(TypeInfo(TSomeType), I) = stName then
begin
Result := I;
Break;
end;
end;
Строка выделенная жирным неверна, так как идет сравнение между строковым значением из массива SomeTypeStrings и значением из TSomeType. Равны они, естесственно, не будут. Отсюда вывод: надо сопоставить строковое значение и значение из TSomeType. А вот как? Извините, мозг_совсем_умер.
← →
Igorek © (2004-06-21 22:43) [4]
> if GetEnumName(TypeInfo(TSomeType), I) = "st" + stName then
← →
мозг_умер (2004-06-21 22:59) [5];))
Ага, а если так:
type
TSomeType = (stOne, stTwo, stThree, stFour);
const
SomeTypeStrings: array[TSomeType] of string = ("Oh My God - This One", "Oh My God - This Two", "Oh My God - This Three", "Oh My God - This Four");
?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.049 c