![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
SkyRideR |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 15 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот прога, цель создать отчёт о метеонаблюдеениях, свой тип я сделал, это без проблем, а вот 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. |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Это Дельфийская функция, из модуля SysUtils, а у тебя какой компилятор?
|
SkyRideR |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 15 Пол: Мужской Репутация: ![]() ![]() ![]() |
Стандартный паскалевский, который при установке ставится. Я вчера читал, что вроде этой функцией в паскале можно пользоваться.
Сообщение отредактировано: SkyRideR - 22.01.2008 9:47 |
klem4 |
![]()
Сообщение
#4
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
напиши свой file_exists, открывая файл для чтений, юзая директиву {$I-}, а потом анализируя результат IOResult
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Вот и я про это. Значит, функцию FileExists тебе придется написать самостоятельно, или обойтись без функции: воспользоваться директивой {$I-} и функцией IOResult для определения, успешно ли открылся файл на чтение. Если открытие на чтение (reset) закончилось ошибкой (IOResult <> 0) - значит открывать файл на запись (rewrite)...
|
SkyRideR |
![]()
Сообщение
#6
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 15 Пол: Мужской Репутация: ![]() ![]() ![]() |
ну в общем модуль с функцией 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. |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Цитата там где фигурные скобки и жирным шрифтом,говорит что error in expression Правильно говорит, ибо Reset - это не функция, а процедура, и не может участвовать в выражениях... |
SkyRideR |
![]()
Сообщение
#8
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 15 Пол: Мужской Репутация: ![]() ![]() ![]() |
а как бы тогда сделать, что бы если файл уже открыт, он(курсор) перемещался в конец файла, просто seek тоже ошибку выдал 122, вот я и встрял
|
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
begin Если файл уже был и открылся через reset, то filesize вернет его размер и ты перейдешь в конец файла. Если же файл только что был создан rewrite-ом, то filesize вернет 0, и ты останешься в самом начале (он же - конец) пустого файла... А вот перед чтением надо вернуться хотя бы на одну запись "назад" (ближе к началу файла), иначе при попытке чтения за концом файла твоя программа завершится аварийно. Кстати, что у тебя творится в модуле? Оно ж не будет компилироваться... Это во первых. Во-вторых, описание типа TMeteo, которое в модуле и которое в основной программе - это разные типы (для Паскаля, конечно) так что как пить дать ты получишь где-нибудь ошибку "несовместимый тип", сразу предупреждаю... Лучше убери описание из основной программы, оставь только в модуле... |
SkyRideR |
![]()
Сообщение
#10
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 15 Пол: Мужской Репутация: ![]() ![]() ![]() |
уже сделал, понял что лишнее и убрал(это про тип), а модуль компилируется, но в нём по ходу косяк, пока не понял где именно.
п.с. короче он не как надо работает, не проверят ни чего, каждый раз по новой файл этот создаёт. Сообщение отредактировано: SkyRideR - 23.01.2008 0:27 |
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Цитата а модуль компилируется, но в нём по ходу косяк Повторяю еще раз: в том виде, в котором ты его привел, модуль компилироваться не будет (ну вот нельзя делать предварительное описание функции без имени, вот такой вот Паскаль капризный), поэтому разбирайся с косяками сам (если ты привел сюда одно, а работаешь - с другим, то и косяк может быть не тот, что виден здесь, а другой!) |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 14:09 |