![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Hiori |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 29.3.2016 Репутация: нет Всего: нет |
В классе TStringList есть функция IndexOf, возможно ли как-то извлечь последнюю строку с таким текстом?
для примера: Sys1_name Sys2_name Sys3_name Sys1_name как получить в данном случае 3, а не 0? |
|||
|
||||
| Vas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 4 Всего: 28 |
Скорее только перебором в цикле
Это сообщение отредактировал(а) Vas - 29.3.2016, 14:16 -------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
|||
|
||||
| ZBugz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
А там помойму есть .count, вот это и будет последняя строка
|
|||
|
||||
| Hiori |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 29.3.2016 Репутация: нет Всего: нет |
||||
|
||||
| dnek |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 0 Регистрация: 1.4.2013 Репутация: нет Всего: нет |
используйте цикл
для сравнения строк используйте SameStr или CompareStr Этот ответ добавлен с нового Винграда - http://vingrad.com |
||||
|
|||||
| seertrue |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 0 Регистрация: 12.12.2010 Репутация: нет Всего: нет |
какой перебор?
у нас есть соunt
Если вам надо получить максимальный индекс строки с одинаковым содержимым сначала попробуйте сортировку. А вообще, в том объеме как рассказано в вопросе задача не имеет смысла, вам надо что-то менять в архитектуре. Если есть желание, опишите, зачем вам это? Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
| Hiori |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 29.3.2016 Репутация: нет Всего: нет |
есть файл строк, формат записи: key 78 байт size 4 байта string <size> байт не придумала ничего умнее, как взять 2 TStringList, в одном ключи, в другом значения если ключ повторяется, то второе (третье, хоть сотое) значение считается истинным, изменить этого я не могу, так как с авторами продукта контакта нет и быть не может, они вообще корейцы Это сообщение отредактировал(а) Hiori - 30.3.2016, 20:24 |
|||
|
||||
| dnek |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 0 Регистрация: 1.4.2013 Репутация: нет Всего: нет |
В Вашем случае лучше использовать TDictionary<String, String>. При заполнении проверять Dictionary.ContainsKey(key) и если существует просто заменять его значение. Если Вас интересуют и предыдущие значения по повторяющемуся ключу - используйте TDictionary<String, TStringList>
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
| Hiori |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 29.3.2016 Репутация: нет Всего: нет |
это, насколько я поняла, некий аналог TValueListEditor? собственно, пока искала решение наткнулась на этот компонент. есть ли какие-то кардинальные отличия?
|
|||
|
||||
| Hiori |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 29.3.2016 Репутация: нет Всего: нет |
да, забыла добавить, скорость доступа к конкретному ключу для меня критична, так как этот массив данных вспомогательный, и при обработке каждого элемента других файлов производится до 5 обращений к массиву строк
|
|||
|
||||
| dnek |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 0 Регистрация: 1.4.2013 Репутация: нет Всего: нет |
Нет, это не так. Это некая хэш-таблица. Объявлена она в System.Generics.Collections. Скорость поиска довольно высокая т.к. внутри вся работа идет с хэш-кодами. Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
| Hiori |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 29.3.2016 Репутация: нет Всего: нет |
давайте я опишу задачу в целом. иначе мы говорим беспредметно.
есть некая игра, онлайн ессно, контент которой основывается на 50+ файлов данных. конечно их больше, но именно тех файлов, которые я хотела бы обрабатывать порядка пятидесяти. собственно, проект, который я пишу предназначен для работы с этими базами игры. все db файлы имею равнозначную структуру, читать/писать их не представляет труда. для каждого предмета, скилла, брони и т.п. существует своя запись. но основной проблемой является именно файл строк, в нем слишком много данных. возьмем пример предмета (условно его ID 220001), для него существует: Sys220001_name - название Sys220001_name_plural - множественное название Sys220001_shortnote - описание (на предмете может существовать 0-6 статов, каждый из которых имеет название) Sys516001_name - Стат 1 Sys516002_name - Стат 2 Sys516008_name - Стат 3 Sys516019_name - Стат 4 так же у предмета может быть скилл комплекта (2-8 предметов, одетые одновременно являются комплектом, который имеет свое название) Sys770001_name - название комплекта и это не предел обращения к записям строк, условия значений я описала выше. скорость чтения/записи не особо важны, главное - время обращения к указанному ключу и перебор всех ключей (для поиска). я пишу в delphi 7, что нужно конкретно мне, чтобы работать с классами, которые вы указываете в постах? |
|||
|
||||
| dnek |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 0 Регистрация: 1.4.2013 Репутация: нет Всего: нет |
Надо было это в самом начале указать. TDictionary<> появился только в Delphi 2009. Вам бы я посоветовал написать что-то свое или поискать уже готовые решения, связанные с реализацией hashmap-ов, например TDynArrayHashed из Synopse Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
| Hiori |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 29.3.2016 Репутация: нет Всего: нет |
спасибо, TDynArrayHashed то что нужно, вопрос решен
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |