Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887

Как найти индекст строки, если известно только ее часть.

15.02.2010, 16:18. Показов 3083. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть TStringList;
В TStringList есть строка "Семь стариков и одна девушка".
Теперь как узнать индекс этой строки, если известно только слово "Семь". Остальная часть строки за ранее не известна.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.02.2010, 16:18
Ответы с готовыми решениями:

Как найти архив если известна только часть имени
Есть несколько архивов 7704228075_40702810138000063958_824_10_18092017.zip 7704228075_40702810138000063961_075_13_18092017.zip ...

Как в word-е перейти в начало определенной строки, если положение курсора не известно?
Как в word-е перейти в начало определенной строки, если положение курсора не известно?

Как найти файл, если известно его имя
Допустим мы знаем как называется файл, и каталог где искать, но в нем могут быть подкаталоги. Можно ли как то найти этот файл рекурентно?

28
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
15.02.2010, 16:27
C++
1
2
3
4
5
6
7
int Index = -1;
for(int i = 0; i < List->Count;i++){
  if(List->Strings[i].Pos("Семь")){
    Index = i;
    break;
  }
}
2
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
15.02.2010, 16:31  [ТС]
Способ хороший и работающий. А без цикла можно как-нибудь. Просто, если мало строк, то пойдет. А если строк много? Да, я знаю, что есть ProcessMessage();, но все равно, хотелось бы узнать.
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
15.02.2010, 16:33
p_cM, ну если знать всю строку, то можно IndexOf использовать, но вам этот метод не подходит, вам по части строки надо
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
16.02.2010, 14:18  [ТС]
Про IndexOf я знаю. Просто думал, может функция какая-нибудь есть по поиску куска строки, но увы. Но все равно спасибо. Буду так делать.

Добавлено через 21 час 43 минуты
Слушай, Lord_Voodoo, а как тогда устроен TComboBox. Там вводишь первые несколько символов и он находит тебе всю строку.
Теперь я более конкретно обьясню, что мне нужно:
В TStringList записанно очень много строк.
Я знаю только первые 4 символа строки, остальные - нет.
И по этим 4 символам мне нужно найти всю строку целиком и занести в TEdit.
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
16.02.2010, 15:07
p_cM, ну так в комбике, вполне возможно, реализован метод, похожий на тот, что я тебе же написал
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
16.02.2010, 15:10  [ТС]
Вот черт! И больше ни каких вариантов нет?
0
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
16.02.2010, 15:13
Цитата Сообщение от p_cM Посмотреть сообщение
Там вводишь первые несколько символов и он находит тебе всю строку.
В том-то и дело что вводишь первые несколько символов. А если ввести три символа из середины строки, тогда вряд ли ComboBox отобразит нужную строку.

P.S. Вопрос действительно хороший, я сам над этим недавно думал, если найдёшь ответ, отпишись или в личку или в тему, поможешь здорово.
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
16.02.2010, 15:28  [ТС]
Так мне и известны первые 4 символа строки. Вариант есть како-нибудь. Хоть бредовый, хоть не работающий?
Например через TComboBox?

Добавлено через 13 минут
Как программно сделать автовыбор в ComboBox?
Ну, ComboBox1->Text="Семь";
И чтобы он автоматически нашел строку, начинающуюся с "Семь".
0
 Аватар для Ex_Soft
213 / 107 / 15
Регистрация: 28.01.2009
Сообщений: 481
16.02.2010, 15:43
Цитата Сообщение от p_cM Посмотреть сообщение
а как тогда устроен TComboBox
C $(BCB)\Source\vcl
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
16.02.2010, 15:51  [ТС]
И какой их них относится к TComboBox?
0
 Аватар для Ex_Soft
213 / 107 / 15
Регистрация: 28.01.2009
Сообщений: 481
16.02.2010, 16:33
Цитата Сообщение от p_cM Посмотреть сообщение
И какой их них относится к TComboBox?
Ну Вы как маленький, ей Богу! В конце-концов: Вы инженер или домохозяйка?
Code
1
grep TComboBox *.*
Далее смотрим, и анализируем. Начните с stdctrls.pas...
1
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
16.02.2010, 17:08  [ТС]
Наверное домохозяйка, я точно не уверен. И что с того, что я не знаю? Невозможно знать все! Даже инженеры в чем-то нубы.
И спасибо!

Добавлено через 7 минут
Ну, просмотрел. И что?
0
306 / 187 / 26
Регистрация: 14.02.2010
Сообщений: 547
16.02.2010, 17:31
s := 'Что-то';
idx := SendMessage(ListBox1.Handle, LB_FINDSTRING, -1, Integer(PChar(s)));
если idx <> LB_ERR (-1), то строчка, начинающаяся с 's' - в idx - элементе ListBox'а (первый элемент имеет индекс 0)
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
16.02.2010, 17:44  [ТС]
А как теперь ЭТО перевести в рабочий вариант?
0
306 / 187 / 26
Регистрация: 14.02.2010
Сообщений: 547
16.02.2010, 17:59
в смысле в рабочий?
в "s" помещаете то, что нужно найти, а потом уж смотрите, зачем Вам это надо.
И потом - все-таки Combo ли List-box? если Combo, то его messag'и начинаются с CB_ вместо LB_
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
16.02.2010, 18:01  [ТС]
Я про:
C++
1
SendMessage(ListBox1.Handle, LB_FINDSTRING, -1, Integer(PChar(s)));
Как это сделать рабочим вариантом?
При компиляции возникает ошибка из-за SendMessage();
В нужный вид я уже все привел:
C++
1
2
AnsiString s = "Что-то";
int idx = SendMessage(ListBox1->Handle, LB_FINDSTRING, -1, Integer(PChar(s)));
0
306 / 187 / 26
Регистрация: 14.02.2010
Сообщений: 547
16.02.2010, 18:08
в смысле какая ошибка? "uses Windows" не пробовали?

и, кстати, проверьте по справке, может это решение Вам и не подходит.
Точно не помню, но кажется для FINDSTRING список должен быть отсортирован
1
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
16.02.2010, 18:18  [ТС]
Вы и ex_soft гении!!!!!!!!!
Все работает просто великолепно!
Только можно один вопрос?
У этой функии есть какой-нибудь минус? Ну подходит она для частого использования?
0
306 / 187 / 26
Регистрация: 14.02.2010
Сообщений: 547
16.02.2010, 18:21
вообще-то сама Windows, насколько я знаю, вызывает ее для каждого Combo/List - списка при каждом нажатии на клавишу в нем
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.02.2010, 18:21
Помогаю со студенческими работами здесь

Найти I, если известно V и R V, если известно I и R R, если известно V и I
Найти I, если известно V и R V, если известно I и R R, если известно V и I Предусмотреть округление.

Как скопировать папку со всеми файлами, если известна только часть её имени?
есть папка &quot;CO 2016-08-02 15;38;15&quot;, где &quot;2016-08-02 15;38;15&quot; дата вплоть до секунды, эта дата меняется, а файл создается проuраммой...

Определить длину строки. Если длина строки >6, удалить часть строки в { } скобках.
Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши &quot;Ввод&quot;. Программа должна определить длину...

Строки. Определить длину введенной строки, если длина кратна 4, то первая часть строки меняется местами со второй
Ввести с клавиатуры строку символов.признак окончания ввода строки-нажатие клавиши ввод.Программа должна определить длину введенной строки...

Найти таблицы, если известно значение поля
Здравствуйте! Есть куча таблиц, среди которых есть таблицы с полем `name`. Делаю выборку этих таблиц так select table_name from...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru