IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Записи, работа с файлами
сообщение
Сообщение #1


Гость






Вот процедура расширенного поиска. Точнее это разработка, т.е. есть данные по мобильным телефонам, пользователь вводит условия, а прога находит ему подходящий вариант.

Идея реализации: Считывать данные введённые пользователем, потом сравнивать с данными которые есть в файле, если одинаковы, то записывать в файл, потом старый файл удалять, а новый переименовывать... и дальше идти по запросам.

В чём проблема: вроде всё правильно написанно, но прога тупо выводит значение последней записи, а не той которой нужно. Подскажите что можете.

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


Гость






Ребят помогите с проблемой. Уже сижу 2-ой день. Курсовую сдавать на след. неделе. Плиз! !help.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


seek(flast,n+1)
Первое что в глаза бросилось. Где n получает значение?

Сообщение отредактировано: Client -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Ну, в данном случае нигде. Но это же не имеет значение, т.к. это вывод данных. Мне нужно сделать правильную запись данных, т.е. по запросам, а вывести я всегда успею. Я думаю, что не в этом ошибка smile.gif Есть ещё предложения?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Цитата
Но это же не имеет значение, т.к. это вывод данных.
В первом посте ты что написап?
Цитата
В чём проблема: вроде всё правильно написанно, но прога тупо выводит значение последней записи, а не той которой нужно.
Это, по-твоему, уже не вывод?

Это во-первых. Во-вторых, ты в цикле
  For i:=1 to filesize(flast) do
Begin
...
ничего из файла flast не читаешь, а выводишь... Что? Правильно, содержимое записи ST, то есть, последней прочитанной из старого файла... Добавь чтение данных из flast... А Seek в том цикле тебе вообще не нужен. Да и вообще, с чего вдруг работа с файлом ведется через цикл For?

Кстати, V у тебя тоже нигде не инициализируется.

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Спасибо большое! Помогло smile.gif
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 30.11.2020 14:35
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name