Вот процедура расширенного поиска. Точнее это разработка, т.е. есть данные по мобильным телефонам, пользователь вводит условия, а прога находит ему подходящий вариант.
Идея реализации: Считывать данные введённые пользователем, потом сравнивать с данными которые есть в файле, если одинаковы, то записывать в файл, потом старый файл удалять, а новый переименовывать... и дальше идти по запросам.
В чём проблема: вроде всё правильно написанно, но прога тупо выводит значение последней записи, а не той которой нужно. Подскажите что можете.
Procedure MultiSearch;
Var
st:ykazatel;
MobileMark:string[30];
fo,f1,flast:file of ykazatel;
rez:char;
n,i,v,m:integer;
Begin
clrscr;
assign(f,filename);
assign(f1,'search.txt');
reset(f);
rewrite(f1);
writeln('***Расширенный поиск***');
writeln;
writeln('Введите данные, которые удовлетворяют вашему запросу!');
writeln('Если параметр для вас не важен, оставте его пустым.');
readln;
writeln('***Основные***');
writeln;
write('Марка телефона: '); readln(MobileMark);
If MobileMark<>' ' then
Begin
assign(fo,'search1.txt');
rewrite(fo);
while not eof(f) do
begin
read(f,st);
if MobileMark=st.MobileMark then
Begin
write(fo,st);
read;
v:=v+1;
End;
end;
truncate(fo);
close(fo);
close(f1);
erase(f1);
rename(fo,'search.txt');
end;
assign(flast,'search.txt');
reset(flast);
For i:=1 to filesize(flast) do
Begin
clrscr;
writeln('***Основные***');
writeln;
writeln('Марка телефона: ',st.MobileMark);
writeln('Модель телефона: ',st.Mobile);
writeln('Стоимость: ',st.Cost);
writeln('Дата выхода на рынок: ',st.Data);
writeln('Стандарт: ',st.Standart);
writeln('Размеры: ',st.Size);
writeln('Конструкция: ',st.Konstruk);
writeln('Экран: ',st.Ekran);
writeln;
seek(flast,n+1)
End;
readln;
End;
Ребят помогите с проблемой. Уже сижу 2-ой день. Курсовую сдавать на след. неделе. Плиз!
seek(flast,n+1)Первое что в глаза бросилось. Где n получает значение?
Ну, в данном случае нигде. Но это же не имеет значение, т.к. это вывод данных. Мне нужно сделать правильную запись данных, т.е. по запросам, а вывести я всегда успею. Я думаю, что не в этом ошибка Есть ещё предложения?
For i:=1 to filesize(flast) doничего из файла flast не читаешь, а выводишь... Что? Правильно, содержимое записи ST, то есть, последней прочитанной из старого файла... Добавь чтение данных из flast... А Seek в том цикле тебе вообще не нужен. Да и вообще, с чего вдруг работа с файлом ведется через цикл For?
Begin
...
Спасибо большое! Помогло