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

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

15.02.2010, 16:18. Показов 3081. Ответов 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
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
16.02.2010, 18:23  [ТС]
Студворк — интернет-сервис помощи студентам
Значит это чудо-функия! Раз Windows использует, то и я буду!
СПАСИБО
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
16.02.2010, 19:37
p_cM,
C++
1
2
3
4
5
6
7
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
    ListBox1->Perform ( LB_SELECTSTRING, -1, (DWORD)Edit1->Text.c_str() );
}
//---------------------------------------------------------------------------
2
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
16.02.2010, 19:55  [ТС]
mirso, тебе Спасибо. Твой способ мне больше по душе.
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
23.02.2010, 15:34  [ТС]
После долгих мучений и изучения TStringList наткнулся на такие свойства, как Values, Names. Если кому интересно, вот как их использовать:
C++
1
2
3
4
5
6
TStringList *lst=new TStringList;
lst->Add("Step=123");
String i=lst->Values["Step"]; //В данном случае в i будет значение Step, то-есть 123
//Изменить значение можно так:
lst->Values["Step"]="Маленькая мертвая девочка";
//Тогда строка будет иметь вид "Step=Маленькая мертвая девочка"
По работе очень напоминает TValueListEditor. Если кто-то знает про эти свойства больше - мне интересно узнать!!!!
1
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
07.04.2010, 18:13  [ТС]
Цитата Сообщение от Maestro Посмотреть сообщение
В том-то и дело что вводишь первые несколько символов. А если ввести три символа из середины строки, тогда вряд ли ComboBox отобразит нужную строку.

P.S. Вопрос действительно хороший, я сам над этим недавно думал, если найдёшь ответ, отпишись или в личку или в тему, поможешь здорово.
Нашел!!! Недавно столкнулся опять с этой проблемой и пришлось искать ее решение. Долго думал, копался в функциях....... и появилась такая идея:
В Memo1 текст, в котором нужно найти индекс строки по слову
В Edit1 само слово
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
//Находим позицию нужного слова, заданного в Edit1->Text
  int pos=Memo1->Text.Pos(Edit1->Text);
//Вырезаем из Memo1->Text весь текст после pos
 String sub=Memo1->Text.SubString(pos,Memo1->Text.Length()-pos);
//Находим знак переноса строки
 int perenos=sub.Pos("\n")-2;
//Вырезаем весь текст до переноса
 sub=sub.SubString(0,perenos);
//В sub текст строки, на которой находится слово после слово :)))))
 
 //Теперь находим первую часть строки, которая идет перед словом
//А теперь пойдет такой бред, который я выдумал.....
//Вырезаем в sub2 весь текст до слова
 String sub2=Memo1->Text.SubString(0,pos+Edit1->Text.Length()-1);
//Отражаем текст!!! Блин, я сам в шоке, что за херню придумал
 String subsub=ReverseString(sub2);
 
//Находим символ переноса строки
 perenos=subsub.Pos("\n")+3;
//Бла-бла-бла
 sub2=subsub.SubString(0,perenos-4);
//Опять отражаем и получаем часть строки до слова
 sub2=ReverseString(sub2);
//Убираем 2 последних символа
 sub2=sub2.SubString(0,sub2.Length()-Edit1->Text.Length());
 
//ВСЕ!!!! В Edit1->Text индекс строки
 
    Edit1->Text = Memo1->Lines->IndexOf(sub2+sub);
И у меня 2 вопроса:
1. Как это все упростить???
2. Если нужное слово находится на последней строке, то оно не будет найденно. Как это исправить?
1
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
07.04.2010, 21:08
Цитата Сообщение от Ni'Tan Посмотреть сообщение
2. Если нужное слово находится на последней строке, то оно не будет найденно. Как это исправить?
Похоже тебе придётся задействовать:
C++
1
2
3
4
5
...
   // Общее кол-во строк и для последней строки
   // Использовать значение сохранённое в linecount
   int linecount =  Memo1->Lines->Count;
...
Какой заголовочный файл нужно подключить чтобы была доступна эта функция - ReverseString ?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
07.04.2010, 21:29
C++
1
#include "Strutils.hpp"
Добавлено через 17 минут
Цитата Сообщение от Ni'Tan Посмотреть сообщение
После долгих мучений и изучения TStringList наткнулся на такие свойства, как Values, Names. Если кому интересно, вот как их использовать:
C++
1
2
3
4
5
6
TStringList *lst=new TStringList;
lst->Add("Step=123");
String i=lst->Values["Step"]; //В данном случае в i будет значение Step, то-есть 123
//Изменить значение можно так:
lst->Values["Step"]="Маленькая мертвая девочка";
//Тогда строка будет иметь вид "Step=Маленькая мертвая девочка"
По работе очень напоминает TValueListEditor. Если кто-то знает про эти свойства больше - мне интересно узнать!!!!
А какие тебя именно свойства интерисуют?
1
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
08.04.2010, 13:30  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
А какие тебя именно свойства интерисуют?
Как узнать значение поля Name, если известно значение поля Value?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
08.04.2010, 14:37
Хм...ты знаешь я тебе даже ничё не могу посоветовать по этому вопросу, потому как самому этот компонент для меня вообще уникален. Во первых почему-то стандартными свойствами ему нельзя установить количество вводимых символов в ячейку

Код C++
1
2

ValueListEditor1->ItemProps["Инвентарный номер"]->MaxLength = 5;// а он даёт возможность установить только 1 символ

приходится изощрятся по всякому.
Во вторых я не нашёл свойства сделать не активной какую-либо ячейку или скрытой.
А не давно я узнал что вызывая контекстное меню на этом компоненте видятся дополнительные функции при копировании такие как ЗАКРЫТЬ IME, ОТКРЫТЬ IME, РЕКОНФЕСИЯ какая-то.

Ну вообщем уникальный компонент, даже на мой взгляд не доработанный
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.04.2010, 14:37
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
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
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru