Fseek глюк | |
---|---|
danton1973 Сообщений: 122 Откуда: Пермь Дата регистрации: 10.08.2020 |
При запуске программы определяю размер конфигурационного файла с помощью fseek(m.gnIniFile,0,2). При первом запуске выдаёт 0. Не закрывая отладчик, запускаю снова - получаю реальный размер файла.....
Где собака порылась? ![]() |
Re: Fseek глюк | |
---|---|
VeterVFP Сообщений: 408 Откуда: Москва Дата регистрации: 26.12.2006 |
Показывает размер нормально. А ваш код какой? ![]() |
Re: Fseek глюк | |
---|---|
danton1973 Сообщений: 122 Откуда: Пермь Дата регистрации: 10.08.2020 |
![]() |
Re: Fseek глюк | |
---|---|
VeterVFP Сообщений: 408 Откуда: Москва Дата регистрации: 26.12.2006 |
=FSEEK(rFile, 0, 2)
покажет 0, если файл в этот момент открыт/заблокирован где-то. Хотя при этом и rFile вернет -1 Исправлено 1 раз(а). Последнее : VeterVFP, 26.05.22 09:04 ![]() |
Re: Fseek глюк | |
---|---|
akvvohinc Сообщений: 4001 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Надо проверять результат. Если файл по каким-то причинам не открылся (rFile = -1), то FSEEK() и вернёт 0 (ошибки не будет):
Исправлено 2 раз(а). Последнее : akvvohinc, 26.05.22 20:21 ![]() |
Re: Fseek глюк | |
---|---|
of63 Сообщений: 24629 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
...почему не FSIZE... и более АПИшные... а зачем это все вот это вот?
![]() |
Re: Fseek глюк | |
---|---|
akvvohinc Сообщений: 4001 Откуда: Москва Дата регистрации: 11.11.2008 |
Судя потому, что файл открывается в режиме Read/Write, то ТС требуется не только узнать размер, но и писать в этот файл. К тому же FSIZE() для получения размера файла требуется играть с настройкой SET COMPATIBLE, что не слишком удобно. Я бы пользовался обычным ADIR():
![]() |
Re: Fseek глюк | |
---|---|
of63 Сообщений: 24629 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
бред Все сводится к АПИ винды Исправлено 1 раз(а). Последнее : of63, 27.05.22 18:04 ![]() |
Re: Fseek глюк | |
---|---|
VeterVFP Сообщений: 408 Откуда: Москва Дата регистрации: 26.12.2006 |
Если взять, например, файл архива и открыть его архиватором (то он будет заблокирован). После этого rFile= FOPEN(cLogFlNm, 12) вернет -1, а FSEEK вернет 0. И что тут бред? ![]() |
Re: Fseek глюк | |
---|---|
akvvohinc Сообщений: 4001 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата: Если сделать именно то, что вы описали, то файл архива заблокирован не будет. Более того, при открытом, допустим, в winrar архиве с помощью FWRITE() можно записывать в этот файл, если открыть его и на запись. И наоборот, если в VFP открыть файл архива на запись, то архиватор его не откроет, а если только на чтение - откроет. Не будет проблемы также, если этот файл открывать на чтение в нескольких экземплярах VFP или других программ. Другое дело, если файл где-то уже открыт на запись... Тогда FOPEN() "не сработает". В общем, дело не в собственно открытом файле, а в режиме его открытия. ![]() |
Re: Fseek глюк | |
---|---|
VeterVFP Сообщений: 408 Откуда: Москва Дата регистрации: 26.12.2006 |
Согласен про режим. Я тестировал на 7zip - с ним была именно описанная мной ситуация. Возможно, он (оболочка менеджера 7zip) открывает его сразу в режиме записи. ![]() |
Re: Fseek глюк | |
---|---|
of63 Сообщений: 24629 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Имел ввиду, что пользоваться FSEEK для определения доступности файла - это невозможно без операции открытия файла FOPEN (в каком-то режиме доступа), и на этапе открытия все определится - можно пользоваться файлом в этом режиме или нет... Может, я не понял проблы... Доб. () глюков, кстати, прибавилось, после перехода на 10ку. Не могу понять их, хотя, в силу "возраста" много с чем ковырялся. Просто тупо делаю "костыли" (типа, многократного запроса к АПИ/функции_фокс, было недавно, после покупки накопителя нового. С сетью что-то связано, бывает). На "диске Це" проблем, которые помню, не встречал вроде... Исправлено 1 раз(а). Последнее : of63, 31.05.22 20:07 ![]() |
Re: Fseek глюк | |
---|---|
Taran Автор Сообщений: 13586 Откуда: Красноярск Дата регистрации: 16.01.2008 |
Проблы не понял никто
(ни в коем случае не для обиды ТС, а скорее наоборот). Размер файла или что другое - не важно. Вопрос то можно развернуть шире. Нет же зациклились на размере файла. ![]() |
© 2000-2023 Fox Club  |