Идея реализации: Считывать данные введённые пользователем, потом сравнивать с данными которые есть в файле, если одинаковы, то записывать в файл, потом старый файл удалять, а новый переименовывать... и дальше идти по запросам.
В чём проблема: вроде всё правильно написанно, но прога тупо выводит значение последней записи, а не той которой нужно. Подскажите что можете.
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;