Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.037 c
1-1087746305
g-l-u-k
2004-06-20 19:45
2004.07.04
Загрузка позиции TrackBar из файла


3-1086679198
Ratiborr
2004-06-08 11:19
2004.07.04
Нужен совет по DataModule


1-1087573200
killer
2004-06-18 19:40
2004.07.04
Вставлять изображение (bmp) справа строки ListBox-а


1-1087380796
Игорь
2004-06-16 14:13
2004.07.04
Какой смысл указывать атрибуты файлов в FindFirst?


6-1084340571
Hangook
2004-05-12 09:42
2004.07.04
Telnet -клиент





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский