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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2008, 20:39   #1
fudzy79
Пользователь
 
Регистрация: 01.02.2008
Сообщений: 15
По умолчанию Поиск в *.txt по критерию

приветствую мастеров Делфи!
Подскажите советом, решаю такую задачку:
1. Сформировать файл со структурой (Марка авто, Цвет, год, страна, цена)
а. вывести список имеющихся авто
б. организовать поиск авто по критерию (марка авто или страна)
в. определить самый дорогой и самый дешевый авто.

С пунктом "а" я справился без проблем, заполнение файла организовал с помощью комбобокса(первые 4 наименования) и едита (цена). Данные файла выглядят примерно так:

BMW желтый 1997 Италия 250000
AUDI синий 2001 Германия 325
ЗиЛ белый 1999 Россия 658420
ВАЗ зеленый 2004 Англия 214000
ГАЗ желтый 2002 Япония 219000
Aston Martin красный 2003 США 365000
ЗиЛ вишня 2001 Франция 56300

Вывод списка в происходит в мемо1.
Застрял на поиске по критерию, марка авто запрашивается через inpitbox(), а вот как это привязать к текстовому файлу - недогоняю.
Это моя писанина:
Код:
procedure Tzast.RG1Click(Sender: TObject);
var
  n: integer;
  krit: string;
  marka, cvet, god, strana, cena: string;
begin
  marka:= cb1.Text;
  cvet:= cb2.Text;
  god:= cb3.Text;
  strana:= cb4.Text;
  cena:= edit1.Text;
  AssignFile(F, 'C:\basa-avto.txt');
  {$I-}
  reset(F);
  {$I+}
  if IOResult <> 0 then
    Rewrite(F);
  n:= RG1.ItemIndex;
  case n of
    0:  begin
          S:= marka + #32 + cvet + #32 + god + #32 + strana + #32 +
              cena +  #13;
          Append(F);
          Writeln(F, S);
          CloseFile(F);
          showmessage('Данные об авто приняты и записаны в базу');
          rg1.ItemIndex:= -1;
          memo1.Clear;
        end;
    1:  begin
          Reset(F);
          Memo1.Visible:= True;
        while not Eof(F) do
          begin
            Readln(F, S);
            Memo1.Lines.Add(S);
          end;
          CloseFile(F);
        end;
    2:  begin
          Memo2.Visible:= true;
          Reset(F);
          krit:= inputbox('Поиск тачки', 'Введите марку машины', marka);
              begin
                if marka = krit then
                  Memo2.Lines.Add(S)
                else
                  showmessage('Такого сарая в базе нет!');
              end;
          CloseFile(F);
        end;
    3:  begin

        end;
    4:  begin

        end;
    5:  Close;
  end;
end;

end.
Подможите советом или подскажите в каку сторону бежать
fudzy79 вне форума Ответить с цитированием
Старый 01.02.2008, 20:45   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Для начала стоит разбивать табуляциями (хотя бы) чтобы избежать таких явлений:
Aston Martin красный 2003 США 365000
B_N вне форума Ответить с цитированием
Старый 01.02.2008, 20:52   #3
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

Загрузите текстовый файл в дополнительный Memo. Перебирайте строчки этого Memo применяйте к ним функцию Pos, если функция вернула не ноль - строка отвечает критерию.

Pos('Критерий', Memo1.Lines.Strings[i]);
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"

Последний раз редактировалось AlDelta; 01.02.2008 в 20:55.
AlDelta вне форума Ответить с цитированием
Старый 02.02.2008, 11:19   #4
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Ой... Как геморойно всё сделано...
Используйте типизированные файлы!
Код:
type 
 TAvto = record
 marka:string[25]; //марка
 color:string[20]; //цвет
 year:integer; //год
 cost:integer; //цена
 end;

var temp:TAvto;
    f:file of TAvto; //типизированный файл

...

read(f,temp); //чтение структры

write(f,temp); //запись структуры
...
Это вкрадце.
zetrix вне форума Ответить с цитированием
Старый 02.02.2008, 17:15   #5
fudzy79
Пользователь
 
Регистрация: 01.02.2008
Сообщений: 15
По умолчанию

Цитата:
Сообщение от zetrix Посмотреть сообщение
Ой... Как геморойно всё сделано...
Используйте типизированные файлы!
Я бы с радостью, но использование типизированных файлов у меня в другой задаче, а в этой надо сформировать просто файл
fudzy79 вне форума Ответить с цитированием
Старый 04.02.2008, 09:14   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Я бы с радостью, но...
Но можно применить ченить типа TStringList, который чуть ли не специально для этого предназначен
(Если конечно препод не будет против)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите плз. Необходимо взять данные из файлов по критерию. Rom1k06 Microsoft Office Excel 5 30.07.2008 12:57
Поиск в бд KAKTYC SQL, базы данных 3 25.07.2008 13:21
макрос VBA EXCEL - деление ряда чисел по заданному критерию Обыватель Microsoft Office Excel 10 30.01.2008 14:36
Поиск по FTP Averss PHP 4 04.09.2007 20:37
поиск Lonix Общие вопросы Delphi 2 04.04.2007 01:59