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

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

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

> Не большая проблема с прогой, fileexists
SkyRideR
сообщение 21.01.2008 23:53
Сообщение #1


Новичок
*

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

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


Вот прога, цель создать отчёт о метеонаблюдеениях, свой тип я сделал, это без проблем, а вот fileexists говорит
unknown identifier, как я понял это функция какого-то модуля, но какого не знаю.
type
tMeteo = record
year, digit, vlazhn, atmdav : integer;
month, vsutok, napvet, osadki : string;
tempvoz, skorvet : real;
end;
var
pon : tMeteo;
f : file of tMeteo;
begin
assign(f,'c:\meteo.pog');
if fileexists('c:\meteo.pog') then
reset(f) else
rewrite(f);
if reset(f) then seek(filesize(f));
write(pon.year);
read(pon.year);
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 10)
volvo
сообщение 21.01.2008 23:58
Сообщение #2


Гость






Это Дельфийская функция, из модуля SysUtils, а у тебя какой компилятор?
 К началу страницы 
+ Ответить 
SkyRideR
сообщение 22.01.2008 9:45
Сообщение #3


Новичок
*

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

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


Стандартный паскалевский, который при установке ставится. Я вчера читал, что вроде этой функцией в паскале можно пользоваться.

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


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

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

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


напиши свой file_exists, открывая файл для чтений, юзая директиву {$I-}, а потом анализируя результат IOResult


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


Гость






Вот и я про это. Значит, функцию FileExists тебе придется написать самостоятельно, или обойтись без функции: воспользоваться директивой {$I-} и функцией IOResult для определения, успешно ли открылся файл на чтение. Если открытие на чтение (reset) закончилось ошибкой (IOResult <> 0) - значит открывать файл на запись (rewrite)...
 К началу страницы 
+ Ответить 
SkyRideR
сообщение 22.01.2008 23:02
Сообщение #6


Новичок
*

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

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


ну в общем модуль с функцией fileExists я сделал вроде работает, а вот с прогой опять косяк, там где фигурные
скобки и жирным шрифтом,говорит что error in expression. на уроке препод сказал что так вроде будет работать, а стал пробовать и фига с маслом,
unit sysunit;
interface
type
tMeteo = record
year, digit, vlazhn, atmdav : integer;
month, vsutok, napvet, osadki : string;
tempvoz, skorvet : real;
end;
function (opr : string): boolean;
implementation
function fileExists(opr : string): boolean;
var f : file of tMeteo;
begin
assign(f, 'opr');
{$I-}
reset(f);
if IOResult = 0 then begin close(f);
fileExists:= true end else
fileExists:= false;
{$I+}
end;
end.

program pogoda;
uses sysunit;
type
tMeteo = record
year, digit, vlazhn, atmdav : integer;
month, vsutok, napvet, osadki : string;
tempvoz, skorvet : real;
end;

var

pon : tMeteo;
f : file of tMeteo;
begin
assign(f,'c:\meteo.pog');
if fileexists('c:\meteo.pog') then
reset(f) else
rewrite(f);
{if reset(f) then seek(filesize(f)); }
write(pon.year);
read(pon.year);
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 22.01.2008 23:21
Сообщение #7


Гость






Цитата
там где фигурные скобки и жирным шрифтом,говорит что error in expression
Правильно говорит, ибо Reset - это не функция, а процедура, и не может участвовать в выражениях...
 К началу страницы 
+ Ответить 
SkyRideR
сообщение 22.01.2008 23:27
Сообщение #8


Новичок
*

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

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


а как бы тогда сделать, что бы если файл уже открыт, он(курсор) перемещался в конец файла, просто seek тоже ошибку выдал 122, вот я и встрял
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 22.01.2008 23:55
Сообщение #9


Гость






begin
assign(f,'c:\meteo.pog');
if fileexists('c:\meteo.pog') then reset(f)
else rewrite(f);

seek(f, filesize(f)); { <--- в любом случае... }
write(pon.year);
seek(f, filesize(f) - 1); { <--- читать будем то, что только что записали }
read(pon.year);
end.

Если файл уже был и открылся через reset, то filesize вернет его размер и ты перейдешь в конец файла. Если же файл только что был создан rewrite-ом, то filesize вернет 0, и ты останешься в самом начале (он же - конец) пустого файла... А вот перед чтением надо вернуться хотя бы на одну запись "назад" (ближе к началу файла), иначе при попытке чтения за концом файла твоя программа завершится аварийно.

Кстати, что у тебя творится в модуле? Оно ж не будет компилироваться... Это во первых.

Во-вторых, описание типа TMeteo, которое в модуле и которое в основной программе - это разные типы (для Паскаля, конечно) так что как пить дать ты получишь где-нибудь ошибку "несовместимый тип", сразу предупреждаю... Лучше убери описание из основной программы, оставь только в модуле...
 К началу страницы 
+ Ответить 
SkyRideR
сообщение 23.01.2008 0:11
Сообщение #10


Новичок
*

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

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


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

Сообщение отредактировано: SkyRideR - 23.01.2008 0:27
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 23.01.2008 9:04
Сообщение #11


Гость






Цитата
а модуль компилируется, но в нём по ходу косяк
Повторяю еще раз: в том виде, в котором ты его привел, модуль компилироваться не будет (ну вот нельзя делать предварительное описание функции без имени, вот такой вот Паскаль капризный), поэтому разбирайся с косяками сам (если ты привел сюда одно, а работаешь - с другим, то и косяк может быть не тот, что виден здесь, а другой!)
 К началу страницы 
+ Ответить 

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

 



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