Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
g3nchik
6 / 6 / 0
Регистрация: 17.08.2012
Сообщений: 170
1

регистро независимость/поиск по листбоксу

19.10.2012, 16:59. Просмотров 619. Ответов 12
Метки нет (Все метки)

Сделал поиск по listbox'у, как теперь сделать регистро независимость ?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure TForm1.Edit1Change(Sender: TObject);
var
i :integer;
Upper, Lower, S: string;
begin
if Edit1.Text <> '' then begin
  for i:=0 to listbox1.Count-1 do begin
   S:= Edit1.Text;
   Upper:= Edit1.Text[1];
   Delete(S, 1,1);
   Lower:= S;
   if Pos(Upper+Lower, ListBox1.Items[i]) = 1 then begin
     ListBox1.Selected[i]:= true;
     exit;
    end
    else begin
 
    end;
  end;
 end;
end;


Примерное содержание listbox'а
Код
Доски
Верстак
Палки
Факел
Печка
Сундук
Сундук Края
Стол Зачарования
Светящийся Камень
Шерсть
ТНТ
Плита
Ступени
Снежный блок
Глиняный блок
Кирпичный блок
Каменный киприч
Книжный шкаф
Песчаник
Гладкий песчаник
Декоративный песчаник
Светильник Джека
Топор
Кирка
Лопата
Мотыга
Огниво
Ведро
Компас
Карта
Часы
Удочка
Ножницы
Огненный шар
Меч
Лук
Стрела
Шлем
Кираса
Поножи
Ботинки
Вагонетка
Вагонетка с двигателем
Вагонетка с сундуком
Рельсы
Электрические рельсы
Нажимные рельсы
Лодка
Дверь
p.s. это рецепты крафта для игры minecraft
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2012, 16:59
Ответы с готовыми решениями:

Независимость программы от разрешения экрана
Мастера помогите. Что нужно сделать, чтобы работа программы не зависела от...

Поиск по листбоксу
как реализовать поиск по лист боксу? ( как можно детальнее, пожалуйста) в...

Каким образом можно доказать попарную независимость и независимость в совокупности?
Пусть U = {u1,u2,u3,u4,u5,u6} - пространство элементарных исходов некоторого...

программный Recordset - листбоксу
Такое вобще возможно - программно назначить источником данных для листбокса...

Биндинг коллекции к листбоксу в xaml
У меня есть коллекция public ObservableCollection&lt;MyClass&gt; MyCollection у...

12
angstrom
2470 / 1846 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
19.10.2012, 17:02 2
Так устроит?
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Edit1Change(Sender: TObject);
var
  I  : Integer;
begin
  if Edit1.Text <> '' then
  begin
    I := ListBox1.Items.IndexOf(Edit1.Text);
    if I <>  -1 then
      ListBox1.Selected[I] := True;
  end;
end;
0
g3nchik
6 / 6 / 0
Регистрация: 17.08.2012
Сообщений: 170
19.10.2012, 17:08  [ТС] 3
а если через Pos ? ваш вариант, ищет по точному совпадению..а мне нужно по совпадению.
0
angstrom
2470 / 1846 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
19.10.2012, 17:10 4
А вы почитайте как работает IndexOf в справке.
0
g3nchik
6 / 6 / 0
Регистрация: 17.08.2012
Сообщений: 170
19.10.2012, 17:15  [ТС] 5
а я не просил через IndexOf. + Справка на англ у меня.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26129 / 17522 / 6949
Регистрация: 22.10.2011
Сообщений: 30,859
Записей в блоге: 6
19.10.2012, 17:20 6
Цитата Сообщение от g3nchik Посмотреть сообщение
как теперь сделать регистро независимость ?
Привести и первый и второй параметры Pos вот в этой строке:
Delphi
1
   if Pos(Upper+Lower, ListBox1.Items[i]) = 1 then begin
к одному регистру (либо AnsiUpperCase обоим, либо AnsiLowerCase), тогда поиск будет регистронезависимым.
0
g3nchik
6 / 6 / 0
Регистрация: 17.08.2012
Сообщений: 170
19.10.2012, 17:30  [ТС] 7
Ну изначально был код таким:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure TForm1.Edit1Change(Sender: TObject);
var
i :integer;
Upper, Lower, S: string;
begin
if Edit1.Text <> '' then begin
  for i:=0 to listbox1.Count-1 do begin
   S:= Edit1.Text;
   Upper:= AnsiUpperCase(Edit1.Text[1]);
   Delete(S, 1,1);
   Lower:= AnsiLowerCase(S);
   if Pos(Upper+Lower, ListBox1.Items[i]) = 1 then begin
     ListBox1.Selected[i]:= true;
     exit;
    end
    else begin
 
    end;
  end;
 end;
end;
но, как вы видите, там есть слова такие как:
Код
ТНТ
Сундук Края
Стол Зачарования
Светящийся Камень
0
angstrom
2470 / 1846 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
19.10.2012, 17:42 8

Не по теме:

Цитата Сообщение от g3nchik Посмотреть сообщение
а я не просил через IndexOf. + Справка на англ у меня.
У меня тоже. :)


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Edit1Change(Sender: TObject);
var
  I  : Integer;
begin
  if Edit1.Text <> '' then
    for I := 0 to ListBox1.Count - 1 do
      if AnsiLowerCase(ListBox1.Items[I]) = AnsiLowerCase(Edit1.Text) then
      begin
        ListBox1.Selected[I] := True;
        Break;
      end;
end;
0
g3nchik
6 / 6 / 0
Регистрация: 17.08.2012
Сообщений: 170
19.10.2012, 18:26  [ТС] 9
Цитата Сообщение от g3nchik Посмотреть сообщение
ваш вариант, ищет по точному совпадению..а мне нужно по совпадению.
......
0
xNeKiToSx
330 / 83 / 16
Регистрация: 10.01.2011
Сообщений: 516
Записей в блоге: 1
19.10.2012, 18:37 10
есть функция Upcase(Ch : Char):Char; указываем в качестве параметра символ и получаем букву в большоооом регистре) циклим слово по буковкам и делаем его большим

Добавлено через 26 секунд
то есть всегда работаем с большим регистром и запросы делаем (переводим) в верхний регистр

Добавлено через 1 минуту
Delphi
1
2
3
str:='ПрИвЕтИк';
for i:=1 to length(str) do
 str2:=str2+UpCase(str[i]);
0
g3nchik
6 / 6 / 0
Регистрация: 17.08.2012
Сообщений: 170
19.10.2012, 18:52  [ТС] 11
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26129 / 17522 / 6949
Регистрация: 22.10.2011
Сообщений: 30,859
Записей в блоге: 6
19.10.2012, 19:10 12
g3nchik, я написал тебе, что надо делать. ОБА параметра приводить к одному регистру. На каком еще языке написать, чтоб ты увидел?

Delphi
1
2
3
4
5
6
7
8
9
10
11
if Edit1.Text <> '' then
begin
  for i:=0 to listbox1.Count-1 do
  begin
    if Pos(AnsiUpperCase(Edit1.Text), AnsiUpperCase(ListBox1.Items[i])) > 0 then
    begin
      ListBox1.Selected[i]:= true;
      exit;
    end;
  end;
end;
1
g3nchik
6 / 6 / 0
Регистрация: 17.08.2012
Сообщений: 170
19.10.2012, 19:17  [ТС] 13
Извините, не понял предыдущий ваш пост. Сейчас, именно в коде понял. Спасибо.
0
19.10.2012, 19:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2012, 19:17

Как к листбоксу подключить запрос?
Есть листбокс, есть запрос. Нужно, чтобы данные из запроса отображались в...

Привязка поля к листбоксу, которые черпает данные из двух таблиц
Здравствуйте. Форма, на ней листбокс, отображающий данные из двух таблиц:...

Линейная независимость
Для каких значений а є С последовательность ({(a, -4i, -i)}^{T} , {(4i, -6i,...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru