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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2012, 10:46   #1
Arlain
 
Регистрация: 21.04.2012
Сообщений: 3
Вопрос [Delphi] сортировка массива

Всем добрый день!
У меня есть 2 таблицы - table1( в ней содержатся id и название организации) и table2(id организации, s1 и s2 - шв соседних организаций)
В программе на delphi 7, на форме у меня есть запрос с некоторыми(не всеми) организациями, мне необходимо найти среди них соседние.
Я примерно сделал это, но работает очень медленно и в результате очень много повторений..
Например выводится организация и соседняя с ней:
школа №1 - школа №4
школа №1 - школа №7 и т.д.
как мне можно сделать чтоб было "школа №1 - школа №4 - школа №7" т.е. без повторений "школа №1"

Вот сам код если необходимо:
Код:
n:=Query2.RecordCount;
Query2.First;
  for i:=1 to n do begin
  a[i]:=Query2.Fields[4].Value; // в a[i] записываем id организации из 5 столбца запроса
  query2.FindNext;
  end;
  for i:=1 to n do begin
  Query2.FindFirst;
    name:=Table1.Lookup('id_org',a[i],'name'); // находим название
    res:=Table2.Lookup('id_org',a[i],'s1');  //находим id соседа 1
    res2:=Table2.Lookup('id_org',a[i],'s2');  //находим id соседа 2
    for j:=1 to n do  begin
      name2:=Table1.Lookup('id_org',query2.Fields[4].Value,'Name');
      s1:=Table2.Lookup('id_org',query2.Fields[4].Value,'s1');
      s2:=Table2.Lookup('id_org',query2.Fields[4].Value,'s2');
      if (a[i] = query2.Fields[4].Value) and (name <> name2) then memo2.Lines.Add(name+' '+name2)
      else if ((res = query2.Fields[4].Value) or (res2 = query2.Fields[4].Value)) and (name <> name2) then begin b[i]:=name2; memo2.Lines.Add(name+' '+name2) end
      else if ((res = s1) or (res2 = s1) or (res = s2) or (res2 = s2)) and (name <> name2) and (s1<>s2) then begin b[i]:=name2; memo2.Lines.Add(name+' '+name2) end;
      query2.FindNext;
      end;
  end;
Arlain вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива в Delphi Ника_1 Помощь студентам 6 13.11.2011 02:48
Сортировка массива(Delphi 3.0) SUMR04 Помощь студентам 0 16.12.2009 19:09
Delphi. Сортировка массива eluminat Помощь студентам 4 30.06.2009 11:55