Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2009, 20:32   #1
SUPERGREEN_SENSO
 
Регистрация: 29.09.2009
Сообщений: 3
Восклицание Поиск по ассоциациям

Парни срочно нужна прога, которая будет делать поиск по ассоциациям!! То есть!! У нас есть массив слов!!! НАм нужно найти слово начинающееся на букву "А"! Программа должна искать только там где у нас находятся слова начинающиеся на букву "А"!
Добавляю свои наработки!

[DELPHI]
Код:
procedure TForm3.BitBtn1Click(Sender: TObject);
var
s: string;
i: integer;
begin
 s:=edit1.Text;
  for i := 0 to n - 1 do
  if s=gor[i] then ShowMessage('Город: ' + gor[i] + #13 + 'Государство: ' + gos[i] +#13 + 'Столица: ' + st[i] + #13 + 'Континент: ' + cont[i])
end;
 
procedure TForm3.FormCreate(Sender: TObject);
var
list:TStringList;
g, i, k, index: integer;
s, s1, slovo, sl: string;
dec: integer;
begin
AssignFile(t, 'goroda.gdb');
  {$I-}
  Reset(t);
  {$I+}
   if IOResult<>0 then
        begin
          if MEssageDlg('Не найден файл базы данных' + #13 + 'Создать новый?', mtWarning,[mbOk,mbCancel],0)=mrOk then
             begin
               rewrite(t);
             end;
          cpgm:=true;
         end
    else
      cpgm:=false;
      closefile(t);
 
list:= TStringList.Create;
list.LoadFromFile('goroda.gdb');
list.Sorted:=true;
n:=list.Count;
SetLength(gor,n);
SetLength(st,n);
SetLength(gos,n);
SetLength(cont,n);
 
///массив с городами
for i := 0 to n-1 do
 begin
 s:=List.Strings[i];
 s1:=copy(s,1,pos('#',s)-1);
 gor[i]:=s1;
  ///массив с государствами
  s1:=copy(s,pos('#',s)+1,pos('$',s)-pos('#',s)-1);
  gos[i]:=s1;
 ///массив со столицами
  s1:=copy(s,pos('$',s)+1,pos('&',s)-pos('$',s)-1);
  st[i]:=s1;
 ///массив с континентами
  s1:=copy(s,pos('&',s)+1,1000);
  cont[i]:=s1;
 end;
///распределение по ассоциациям
index:=0;
dec:=1;
repeat
case decperv of
1: sl:='А';
2: sl:='Б';
3: sl:='В';
4: sl:='Г';
5: sl:='Д';
6: sl:='Е';
7: sl:='Ё';
8: sl:='Ж';
9: sl:='З';
10: sl:='И';
11: sl:='Й';
12: sl:='К';
13: sl:='Л';
14: sl:='М';
15: sl:='Н';
16: sl:='О';
17: sl:='П';
18: sl:='Р';
19: sl:='С';
20: sl:='Т';
21: sl:='У';
22: sl:='Ф';
23: sl:='Х';
24: sl:='Ц';
25: sl:='Ч';
26: sl:='Ш';
27: sl:='Щ';
28: sl:='Э';
29: sl:='Ю';
30: sl:='Я';
end;
for k:= 0 to n - 1 do begin
slovo:=gor[k];
if slovo[1]<>sl then
begin
decperv:=decperv+1;
asc[decperv]:=k-1;
end; end;
until decperv>30;
for g := 1 to decperv do
Memo1.Lines.Add(IntToStr(asc[dec]))
end;

[/DELPHI]

Последний раз редактировалось Stilet; 26.11.2009 в 08:01.
SUPERGREEN_SENSO вне форума Ответить с цитированием
Старый 26.11.2009, 05:37   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
if ANSIUppercase(s)[1]='А' then //первая буква строки А(или слова)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.11.2009, 08:03   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Дополню коллегу:
Код:
if ANSIUppercase(gor[i])[1]='А' then //первая буква строки А
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск Screame Microsoft Office Excel 11 20.08.2009 12:42
Поиск БД Михаил Юрьевич БД в Delphi 5 17.08.2009 15:33
Поиск-? Evgenii БД в Delphi 8 31.07.2009 16:27
Поиск StartMis Общие вопросы Delphi 5 26.08.2008 13:48
Поиск по БД. Шурик БД в Delphi 1 18.09.2007 02:04