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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2008, 19:36   #1
user_jasser
я не ~
Пользователь
 
Аватар для user_jasser
 
Регистрация: 19.09.2008
Сообщений: 58
По умолчанию индексирование или хешь

Подскажите оптимальный способ индексирования переменных строкой. чтоб строке пресваивался уникальный номер. на данный момент использую TStringList как кантейнир и функцию IndexOf...подозреваю что способ нубский...
user_jasser вне форума Ответить с цитированием
Старый 27.10.2008, 19:56   #2
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

как ты ищешь в СтрингЛисте нужную строку? если с помощью его номера - то .Names[x], если знаешь её значение, то через IndexOf
хотя я имею не такой уж и большой опыт работы со строками... мож спецы подскажут... ты главное обьясни как именно тебе нужно искать строку
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 28.10.2008, 01:01   #3
user_jasser
я не ~
Пользователь
 
Аватар для user_jasser
 
Регистрация: 19.09.2008
Сообщений: 58
По умолчанию

нужно строке присвоить индекс(integer), и потом использовать строку как указатель на массив.
user_jasser вне форума Ответить с цитированием
Старый 28.10.2008, 07:50   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

А разве TStringList не поддерживает Strings[Index: Integer] ? Вроде то что нужно.
BOBAH13 вне форума Ответить с цитированием
Старый 28.10.2008, 11:31   #5
user_jasser
я не ~
Пользователь
 
Аватар для user_jasser
 
Регистрация: 19.09.2008
Сообщений: 58
По умолчанию

да все хороше.. но я видел както модуль быстрого хеширования написанный на паскале.
принцип: кождый символ имеет число при определеной формуле они выводят упорядаченный результат типо - 1, 2, 3..
можеть и на делфи чтото такое есть.?
user_jasser вне форума Ответить с цитированием
Старый 28.10.2008, 11:37   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Я лично понять не могу, что вам надо получить в результате ?!
BOBAH13 вне форума Ответить с цитированием
Старый 28.10.2008, 12:38   #7
user_jasser
я не ~
Пользователь
 
Аватар для user_jasser
 
Регистрация: 19.09.2008
Сообщений: 58
По умолчанию

ну место индекса массива использовать строку. Это иногда необходима при работе с текстовыми файлами.
вот отрывок из кода:

присваивает списку имя:

Код:
          if FLibList.IndexOf(word) = -1 then begin
             FLibList.Add(word);
             index:= FLibList.IndexOf(word);
             SetLength(FLibrary, FLibSize+1);
             New(FLibrary[index]);
             FLibSize:= FLibSize + 1;
             FLibrary[index]^.SName:= word;
             FLibrary[index]^.SCount:= 0;
             FLibrary[index]^.SClassList:= TStringList.Create;
находит список по имени:

Код:
 SetName:= FLibrary[FLibList.IndexOf(word)]^.SName;
            ....
но вот как происходит поиск нужной строки в TStringList методом IndexOf
для меня не понятно. вот и решил спросить оптимальный способ для этого дела...
user_jasser вне форума Ответить с цитированием
Старый 28.10.2008, 16:53   #8
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Т.е. как я понял вы не можете навести мышь на IndexOf и зажав CTRL кликнуть по этому слову ? а там вы увидите что класс TStringList делает... Поиск это всеголиш тот же цикл for по "массиву строк" и сравнивая строки или просто = или SameText и т.п. и когда даст положительный результат, тогда и заносите индекс текущий как результат функции поиска и выходите из цикла - Break. Вот и все.
BOBAH13 вне форума Ответить с цитированием
Старый 28.10.2008, 18:06   #9
user_jasser
я не ~
Пользователь
 
Аватар для user_jasser
 
Регистрация: 19.09.2008
Сообщений: 58
По умолчанию

ок... я понял что индексирование через TStringList это не совсем быстро.
user_jasser вне форума Ответить с цитированием
Старый 28.10.2008, 18:12   #10
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

tstringlist достаточно массивная штука, лучше опуститься чуть ниже и использовать хотя бы просто list, а еще лучше написать просто свой динамический список.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конвертер из png в jpg или gif или bmp Квэнди Мультимедиа в Delphi 8 04.10.2011 22:26
Access индексирование строк Melamory Microsoft Office Access 3 28.09.2008 19:18
Программное индексирование Рустам БД в Delphi 2 27.08.2007 09:34
Проблемы с графикой в Delphi, Индексирование цвета zzz(KOT)zzz Общие вопросы Delphi 8 20.06.2007 20:57