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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2014, 12:06   #1
Alexbmgn
Пользователь
 
Регистрация: 08.01.2011
Сообщений: 33
По умолчанию Поиск по DataSet (Delphi)

Здравствуйте, подскажите кто в состоянии, почему мой код не выполняет поиск по всем значениям столбца 'family' DataSet-a, в файле при помощи функции 'pos' ?

Код:
procedure TForm2.Button2Click(Sender: TObject);
Var f:TextFile;
st,st2:String;
st1,i:integer;
sl1:string;
begin
AssignFile(f,'E:\3_курс\клиент\1.txt');

Reset(f);

  While not EOF(f) do
   begin

   ReadLn(f,st);

    while not DBGrid1.DataSource.DataSet.Eof do

     begin
     sl1:=dBGrid1.DataSource.DataSet.fieldbyname('family').AsString;

      st1:=pos(sl1,st);
      if st1>0 then
       begin
       st2:=copy(st,st1,12);
       memo1.lines.add(st2);
       ShowMessage(st2);
       end;
   DBGrid1.DataSource.DataSet.next;
   end;

end;
CloseFile(f);
end;
Я просто в недоумении
Alexbmgn вне форума Ответить с цитированием
Старый 03.03.2014, 12:17   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А кто будет указатель записи на начало устанавливать в датасете перед
Цитата:
while not DBGrid1.DataSource.DataSet.Eof do
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.03.2014, 12:27   #3
Alexbmgn
Пользователь
 
Регистрация: 08.01.2011
Сообщений: 33
По умолчанию

Код:
DBGrid1.DataSource.DataSet.First;
я так понял?

Однако все равно не выводит сходные фамилии.. в переменной 'sl1' он четко записывает по порядочку все значения столба 'family', а вот дальше что не так с поиском и отображением происходит не могу проследить и понять...

Последний раз редактировалось Alexbmgn; 03.03.2014 в 12:32.
Alexbmgn вне форума Ответить с цитированием
Старый 03.03.2014, 12:36   #4
Alexbmgn
Пользователь
 
Регистрация: 08.01.2011
Сообщений: 33
По умолчанию

Хотя постой-ка дружище.. поиск он производит.. сейчас поковыряюсь попробую понять что к чему и верно ли он это делает
Alexbmgn вне форума Ответить с цитированием
Старый 03.03.2014, 13:08   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

pos('и', 'Иванов')=0
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 03.03.2014, 13:11   #6
Alexbmgn
Пользователь
 
Регистрация: 08.01.2011
Сообщений: 33
По умолчанию

Послушай Аватар.. спасибо тебе конечно огромедное просто, все функционирует... вы знаете я лишь один вопрос хотел бы задать всем: поиск он проводит, постоянно отображая в моем DBgrid-e это беганье по строкам столбца... и самое главное-поиск проходит ужасно долго ( у меня в БД около 2000 записей и в файле около 2400 строк) это нормально ли или просто мой алгоритм поиска просто настолько ужасен ??

Цитата:
Сообщение от evg_m Посмотреть сообщение
pos('и', 'Иванов')=0
Хотите сказать, что в данном случае важен регистр? впрочем если оно и так, то у меня подразумевается поиск по слову, написаному как в БД так и в файле индентично относительно регистра..

Цитата:
Сообщение от Аватар Посмотреть сообщение
А кто будет указатель записи на начало устанавливать в датасете перед
Спасибо тебе конечно огромедное просто, все функционирует... вы знаете я лишь один вопрос хотел бы задать всем: поиск он проводит, постоянно отображая в моем DBgrid-e это беганье по строкам столбца... и самое главное-поиск проходит ужасно долго ( у меня в БД около 2000 записей и в файле около 2400 строк) это нормально ли или просто мой алгоритм поиска просто настолько ужасен ??

Последний раз редактировалось Stilet; 04.03.2014 в 16:29.
Alexbmgn вне форума Ответить с цитированием
Старый 03.03.2014, 13:19   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
это беганье по строкам столбца
Перед поиском DataSource.Enable в False, после поиска в True. Бегать не будет и ускорится. Но все равно такой поиск это говнокод. Не знаю какая СУБД, но загнал бы список в таблицу и все это реализовал бы запросом. Некоторые СУБД и с текстовым файлом могут работать как с таблицей, тогда еще проще - не нужно список загонять в таблицу, а на прямую сделать все запросом
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.03.2014, 13:28   #8
Alexbmgn
Пользователь
 
Регистрация: 08.01.2011
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Перед поиском DataSource.Enable в False, после поиска в True. Бегать не будет и ускорится. Но все равно такой поиск это говнокод. Не знаю какая СУБД, но загнал бы список в таблицу и все это реализовал бы запросом. Некоторые СУБД и с текстовым файлом могут работать как с таблицей, тогда еще проще - не нужно список загонять в таблицу, а на прямую сделать все запросом
Имеешь ввиду, что занес бы данные из тхт файла в таблицу и выполнял бы поиск запросом к БД? Но мне необходимо в данном случае производить это именно с тхт файлом и я так понимаю в таком случае скорость поиска мне кардинально не увеличить
Alexbmgn вне форума Ответить с цитированием
Старый 03.03.2014, 15:07   #9
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

DisableControls/EnableControls
eval вне форума Ответить с цитированием
Старый 04.03.2014, 08:04   #10
Alexbmgn
Пользователь
 
Регистрация: 08.01.2011
Сообщений: 33
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
DisableControls/EnableControls
Спасибо, но кардинального прироста скорости конечно же нет :\ при имеющемся тхт и беганья по нему данных из моей БД ничего не поменять кардинально да ?
Alexbmgn вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ADO Delphi и Dataset KoliyR БД в Delphi 6 28.01.2012 20:40
Строку из одного DataSet в другой DataSet Abbath1349 Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 0 22.05.2011 19:26
Из DataSet работающего по циклу в DataSet maroder22 БД в Delphi 1 05.09.2010 23:22
Delphi 7. Ошибка "ADODataSet1: Cannot perform this operation on a closed dataset" Vind Помощь студентам 6 20.04.2009 22:47