powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как открыть файл с помощью fopen() несколько раз
4 сообщений из 4, страница 1 из 1
Как открыть файл с помощью fopen() несколько раз
    #32808638
Lena_yan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
У меня такая проблема.
Текстовый файл в dbf. Но это я сделала.
Но почему открыть файл функцией fopen() можно только один раз?
Запускаю программу -> данные переносяться -> потом чтобы еще раз повторить программу нужно закрыть FOX. Иначе идут пустые строки, т.е. файл как-бы открыт, но из него считываются пустые строки.
...
Рейтинг: 0 / 0
Как открыть файл с помощью fopen() несколько раз
    #32808648
Philin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
приведите код, пожалуйста...
как открываете файл, как его читаете и закрываете...
и не совсем понятно, что значит идут пустые строки
...
Рейтинг: 0 / 0
Как открыть файл с помощью fopen() несколько раз
    #32808685
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lena_yanЗдравствуйте!
У меня такая проблема.
Текстовый файл в dbf. Но это я сделала.
Но почему открыть файл функцией fopen() можно только один раз?
Запускаю программу -> данные переносяться -> потом чтобы еще раз повторить программу нужно закрыть FOX. Иначе идут пустые строки, т.е. файл как-бы открыт, но из него считываются пустые строки.
Немного теории по работе с файлами через fopen.
При открытии файла через fopen файл считывается в некоторый участок памяти и в программу возвращается идентификатор (номер) этого участка, т.е дескриптор файла. Указатель текущей позиции в файле устанавливается (естественно) на первый байт. При чтении происходит перемещение указателя на считанное число байт (позиций). Чтение прекращается при достижении специального символа конца файла. Попытка прочитать что-либо после этого символа не приводит к ошибке, но и не возвращает данных. Поэтому получается пустая строка.
Необходимости одновременного открытия двух экземпляров файла как правило не возникает. Поэтому, такая ситуация и рассматривается как ошибка (дескриптор файла равен -1).
Для повторной работы с файлом можно сделать следующее:
- закрыть файл командой fclose и открыть его же снова через fopen;
- переместить указатель на текущую позицию на начало файла при помощи функции fseek (описание смотри в Хелпе).
А вообще, хорошим тоном является проверять достижение файлом своего конца, то есть делать примерно следующее:

hfHandler=fopen(<Имя файла>)
do while !feof(hfHandler)
<Операции по чтению из файла >
enddo

If <Признак окончания работы с файлом и выхода из программы>
=fclose(hfHandler) && Закроем файл
else
=fseek(hfHandler,0,0) && Вернемся на начало файла
endif
...
...
Рейтинг: 0 / 0
Как открыть файл с помощью fopen() несколько раз
    #32809440
iwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по умолчанию fopen() открывает файл только для чтения, поиграйся с атрибутами. (см. хелп) может поможет
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как открыть файл с помощью fopen() несколько раз
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]