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

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

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

 
 Ответить  Открыть новую тему 
> Обработка файла, Создание и обработка файла
R@f
сообщение 28.11.2005 17:09
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

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


Доброго времени суток! Такая задача:
"Дан файл, содержащий сведения об автомобилях: марка, номер и фамилия владельца. Найти фамилии владельцев и номера всех автомобилей данной марки."
Прога написана. Но я не могу правильно создать к ней файл. Пробовал вводить в файл построчно такую инфу: MERCEDES А001АА Путин. А он ругается, что предпринята попытка чтения после конца файла. Так как мне создать файл и в нём ли проблема?

Const n=10;
found:boolean=false;
Type info=record
brand:string[15];
number:string[15];
surname:string[15];
end;
Var car:info;
f:file of info;
z:string[20];
i:1..n;
Begin
assign(f,’car.txt’);
reset(f);
write(‘Введите заглавными буквами марку автомобиля: ‘);
readln(z);
wile not EoF(f)do
begin
read(f,car);
with car do
if brand=z then
begin
found:=true;
writeln(surname:20,number:20)
end
end;
if not found then write (‘Автомобиль данной марки не найден: ‘);
Readln
End.


Сообщение отредактировано: volvo - 28.11.2005 17:11
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 28.11.2005 17:18
Сообщение #2


Гость






R@f, чтобы вводить в файл информацию, надо пользоваться вот такой процедурой:


Type
info=record
brand:string[15];
number:string[15];
surname:string[15];
end;

Var
f: file of info;

Procedure CreateFile(name: string);
var r: Info;
begin
assign(f, name);
rewrite(f);

repeat
with r do begin
write( 'auto: ' ); readln(brand); { Для окончания ввода данных - пустая строка }
if brand <> '' then begin
write( 'number: ' ); readln(number);
write( 'surname: ' ); readln(surname);
write(f, r);
end;
end;
until r.brand = '';

close(f);
end;

begin
CreateFile('car.txt');
end.


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

Сообщение отредактировано: volvo - 28.11.2005 18:02
 К началу страницы 
+ Ответить 
R@f
сообщение 28.11.2005 17:54
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

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


Volvo, что-то не получается ничего. Эту процедуру вставить в свою прогу или создать новую? Если в свою, то куда именно?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 28.11.2005 17:59
Сообщение #4


Гость






Зависит от того, нужно ли тебе каждый раз создавать файл заново (тогда вставляй в свою программу) или достаточно создать его один раз и потом им пользоваться многократно (тогда - отдельно)...

Что именно не получается? Посмотри выше, я сделал из своей процедуры полноценную программу...
 К началу страницы 
+ Ответить 
R@f
сообщение 28.11.2005 18:36
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

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


Ну всё, вроде домучил, прога просто супер – справочник. yes2.gif Спасибо, большое. В этом файле каракули – это так и должно быть, скорее всего? Можно их нормально прочитать, кодировку сменив что ли?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 28.11.2005 18:40
Сообщение #6


Гость






Цитата
В этом файле каракули – это так и должно быть, скорее всего?

yes2.gif
Цитата
Можно их нормально прочитать, кодировку сменив что ли?

Нет, я только сегодня уже отвечал на подобный вопрос smile.gif

Только открывая файл как типизированный и читая запись за записью...
 К началу страницы 
+ Ответить 
R@f
сообщение 28.11.2005 18:53
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

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


У меня последний вопрос. Как делать, чтоб связывая файл с переменной assign(f,’car.txt’) не писать допустим 'C:\BP\car.txt’ а работать с катологом, в котором сохранён исходник проги? По идее надо писать просто ’car.txt’. Но паскаль не хочет так работать. Может где-то в настройках надо опцию какую-то с каталогом настроить?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 28.11.2005 19:01
Сообщение #8


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


для этого файл должен находиться в одной папке с экзешником ...


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
R@f
сообщение 28.11.2005 19:07
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

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


Как экзешник создать тогда?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 28.11.2005 19:20
Сообщение #10


Гость






Меню -> Compile -> Destination выбрать "Disk", еще раз откомпилировать программу, и искать EXE-файл в папке, записанной в
Options -> Directories -> EXE & TPU Dir
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 27.07.2025 2:58
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"