Не большая проблема с прогой, fileexists |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Не большая проблема с прогой, fileexists |
SkyRideR |
Сообщение
#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. |
volvo |
Сообщение
#2
|
Гость |
Это Дельфийская функция, из модуля SysUtils, а у тебя какой компилятор?
|
SkyRideR |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 15 Пол: Мужской Репутация: 0 |
Стандартный паскалевский, который при установке ставится. Я вчера читал, что вроде этой функцией в паскале можно пользоваться.
Сообщение отредактировано: SkyRideR - |
klem4 |
Сообщение
#4
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
напиши свой 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 Пол: Мужской Репутация: 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. |
volvo |
Сообщение
#7
|
Гость |
Цитата там где фигурные скобки и жирным шрифтом,говорит что error in expression Правильно говорит, ибо Reset - это не функция, а процедура, и не может участвовать в выражениях... |
SkyRideR |
Сообщение
#8
|
Новичок Группа: Пользователи Сообщений: 15 Пол: Мужской Репутация: 0 |
а как бы тогда сделать, что бы если файл уже открыт, он(курсор) перемещался в конец файла, просто seek тоже ошибку выдал 122, вот я и встрял
|
volvo |
Сообщение
#9
|
Гость |
begin Если файл уже был и открылся через reset, то filesize вернет его размер и ты перейдешь в конец файла. Если же файл только что был создан rewrite-ом, то filesize вернет 0, и ты останешься в самом начале (он же - конец) пустого файла... А вот перед чтением надо вернуться хотя бы на одну запись "назад" (ближе к началу файла), иначе при попытке чтения за концом файла твоя программа завершится аварийно. Кстати, что у тебя творится в модуле? Оно ж не будет компилироваться... Это во первых. Во-вторых, описание типа TMeteo, которое в модуле и которое в основной программе - это разные типы (для Паскаля, конечно) так что как пить дать ты получишь где-нибудь ошибку "несовместимый тип", сразу предупреждаю... Лучше убери описание из основной программы, оставь только в модуле... |
SkyRideR |
Сообщение
#10
|
Новичок Группа: Пользователи Сообщений: 15 Пол: Мужской Репутация: 0 |
уже сделал, понял что лишнее и убрал(это про тип), а модуль компилируется, но в нём по ходу косяк, пока не понял где именно.
п.с. короче он не как надо работает, не проверят ни чего, каждый раз по новой файл этот создаёт. Сообщение отредактировано: SkyRideR - |
volvo |
Сообщение
#11
|
Гость |
Цитата а модуль компилируется, но в нём по ходу косяк Повторяю еще раз: в том виде, в котором ты его привел, модуль компилироваться не будет (ну вот нельзя делать предварительное описание функции без имени, вот такой вот Паскаль капризный), поэтому разбирайся с косяками сам (если ты привел сюда одно, а работаешь - с другим, то и косяк может быть не тот, что виден здесь, а другой!) |
Текстовая версия | 10.01.2025 5:26 |