Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Получение индекса по строке в массиве. [D7, Win95/98]


мозг_умер ©   (2004-06-21 21:20:00) 

Здравствуйте, Мастера. Есть такая конструкция:


type
 TSomeType = (stOne, stTwo, stThree, stFour);

const
 SomeTypeStrings: array[TSomeType] of string = ('One', 'Two',
   'Three', 'Four');


Как по строковому значению из SomeTypeStrings получить индекс в TSomeType. Например, 'Three' должен возвратить 2. Заранее благодарен.

P.S: Возможно есть некие неточности в терминологии - не судите строго, у меня проблемы с запоминанием терминов.


мозг_умер   (2004-06-21 22:59:00) [1]

;))

Ага, а если так:


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');


?


Igorek   (2004-06-21 22:43:00) [2]


>    if GetEnumName(TypeInfo(TSomeType), I) = 'st' + stName then


мозг_умер   (2004-06-21 22:29:00) [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 21:52:00) [4]

TypInfo.GetEnumName - тогда порядок в наборе и массиве может не совпадать


Johnmen   (2004-06-21 21:24:00) [5]

Перебор. А ты что думал ?
:)


Наверх

Титульная страница Поиск, карта сайта Написать письмо