powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Сравнение строк введенных в грид и строк из массива, при совпадении запись в список
7 сообщений из 7, страница 1 из 1
Сравнение строк введенных в грид и строк из массива, при совпадении запись в список
    #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
Сравнение строк введенных в грид и строк из массива, при совпадении запись в список
    #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
Сравнение строк введенных в грид и строк из массива, при совпадении запись в список
    #39910971
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам,

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

Всё правильно, когда маешься ерундой, получается ерунда. Просто сравнивай строки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сравнение строк введенных в грид и строк из массива, при совпадении запись в список
    #39910973
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, сравнивать полностью строки можно, только тогда когда уже все введено, а нужно чтоб в список выводились варианты того что можно ввести, т.е. например я ввел в грид букву M, а мне он дал варианты mov, mvi и т.д. По сути алгоритм как в поисковике в браузере
...
Рейтинг: 0 / 0
Сравнение строк введенных в грид и строк из массива, при совпадении запись в список
    #39910976
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А просто включить AutoComplete не судьба?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сравнение строк введенных в грид и строк из массива, при совпадении запись в список
    #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
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Сравнение строк введенных в грид и строк из массива, при совпадении запись в список
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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