Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Сравнение строк введенных в грид и строк из массива, при совпадении запись в список / 7 сообщений из 7, страница 1 из 1
05.01.2020, 13:59
    #39910961
Леон4ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение строк введенных в грид и строк из массива, при совпадении запись в список
У меня есть массив с строками.(максимальная длина строки 8 символов, минимальная длина 3 символа). Также есть stringgrid в который я вписываю текст. Текст я вписываю в каждую строку в одном столбце. Нужно сделать, чтобы при совпадении введенного текста с элементом массива он отобразился в списке, будь это combobox или listbox, без разницы. Проверка ввода по событию SetEditText. Вот что успел сделать. cmd - массив. В массиве строки в верхнем регистре все. Помогите дописать.
Код: pascal
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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
procedure TFMain.ComboBox1Change(Sender: TObject);
begin
//edit1.Text:=IntToStr(length(combobox1.Text));
showcombo(combobox1.Text);
end;
 
procedure TFMain.SGmainSetEditText(Sender: TObject; ACol, ARow: Integer;
  const Value: string);
var s1, s2,str:string; i,row,crow,ccol,top,left,width,x,y :integer;r:trect;
begin
R := SGMain.CellRect(ACol, ARow);
      R.Left := R.Left + SGMain.Left;
      R.Right := R.Right + SGMain.Left;
      R.Top := R.Top + SGMain.Top;
      R.Bottom := R.Bottom + SGMain.Top;
      ComboBox1.Left := R.Left + 1;
      ComboBox1.Top := R.Top + 1;
      ComboBox1.Width := (R.Right + 1) - R.Left;
      ComboBox1.Height := (R.Bottom + 1) - R.Top;
      ComboBox1.Visible := True;
      combobox1.SetFocus;
      combobox1change(FMain);
      //combobox1.Text:=SGMain.Cells[acol,arow];
      //edit1.Text:=combobox1.Text;
      //Edit1.Text:=IntToStr(length(str));
      //showcombo(str);}
   end;
 
procedure TFMain.showcombo(text: string);
var i,len,c:integer;b,s:string;
begin
addcombo;
len:=length(text);
//Edit1.Text:=IntToStr(len);
for i:= 0 to 231 do begin
b:=combobox1.Items[i];
if length(b)>=len then begin
s:='';
for c := 1 to len do
  s:=s+b[c];
if s<>AnsiUpperCase(text) then combobox1.Items[i]:='';
end;
end;
combobox1.Items.Clear;
 
 
{if (Value='') then begin
   setAll('',Arow);
   end
   else begin
   for i:=Low(cmd) to High(cmd) do begin
      if cmd[i,1]=AnsiUpperCase(Value) then begin
   SGmain.Cells[1,Arow]:=cmd[i,1];
   setAll(cmd[i,0],Arow);
end;end;
   end;}
end;
 
procedure TFMain.addcombo;
var i:integer;
begin
for i:= 0 to 231 do
combobox1.Items.Add(cmd[i,1]);
end;
...
Рейтинг: 0 / 0
05.01.2020, 14:04
    #39910970
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение строк введенных в грид и строк из массива, при совпадении запись в список
Леон4ik> Помогите дописать.

C чем конкретно из перечисленного проблемы?

> for i:= 0 to 231 do begin
> b:=combobox1.Items[i];
> if length(b)>=len then begin
> s:='';
> for c := 1 to len do
> s:=s+b[c];
> if s<>AnsiUpperCase(text) then combobox1.Items[i]:='';
> end;
> end;
> combobox1.Items.Clear;

Зачем всё вот это вот?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.01.2020, 14:05
    #39910971
Леон4ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение строк введенных в грид и строк из массива, при совпадении запись в список
Гаджимурадов Рустам,

Проблема в том, что все выше приведенное не работает.
Я пытался сравнивать введенный текст с строкой из массива, ища сначала длину введенного текста, потом отсеивая элементы массива с меньшей длиной, а потом уже сравнивал по совпадению символов, и если есть совпадение, то добавить в список. Но получается ерунда. Хоть алгоритм вроде рабочий, но не робит почему то. Вас я прошу только найти ошибки и предложить как их исправить
...
Рейтинг: 0 / 0
05.01.2020, 14:08
    #39910972
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение строк введенных в грид и строк из массива, при совпадении запись в список
Леон4ikНо получается ерунда.

Всё правильно, когда маешься ерундой, получается ерунда. Просто сравнивай строки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.01.2020, 14:11
    #39910973
Леон4ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение строк введенных в грид и строк из массива, при совпадении запись в список
Dimitry Sibiryakov, сравнивать полностью строки можно, только тогда когда уже все введено, а нужно чтоб в список выводились варианты того что можно ввести, т.е. например я ввел в грид букву M, а мне он дал варианты mov, mvi и т.д. По сути алгоритм как в поисковике в браузере
...
Рейтинг: 0 / 0
05.01.2020, 14:24
    #39910976
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение строк введенных в грид и строк из массива, при совпадении запись в список
А просто включить AutoComplete не судьба?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.01.2020, 18:11
    #39911013
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение строк введенных в грид и строк из массива, при совпадении запись в список
Леон4ik
Dimitry Sibiryakov, сравнивать полностью строки можно, только тогда когда уже все введено, а нужно чтоб в список выводились варианты того что можно ввести, т.е. например я ввел в грид букву M, а мне он дал варианты mov, mvi и т.д. По сути алгоритм как в поисковике в браузере

Код: pascal
1.
2.
3.
4.
  ...
  { http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.SysUtils.TStringHelper.StartsWith }
  if b.StartsWith(text, True) then    
    ...
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Сравнение строк введенных в грид и строк из массива, при совпадении запись в список / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]