:: Visual Foxpro, Foxpro for DOS
Убрать цифровую подпись
tata
Автор

Сообщений: 3458
Откуда: Казань
Дата регистрации: 23.10.2005
Не получается. После закрывающего тэга </ФайлПФР> (он единственный во всем файле) надо убрать все символы до EOF.
Вот кусочек кода.
poz1=AT("</ФайлПФР>",FILETOSTR(lcFName))
poz2=poz1+9
inf1=FOPEN(lcFName,2)
IF inf1<0
MESSAGEBOX("Файл "+lcfName+" не открывается!")
retu
ELSE
inf1=FCHSIZE(inf1,poz2-1) ** обрезаем лишние символы до конца файла
prizn=FCLOSE(inf1) && Close file
IF prizn=-1
MESSAGEBOX("Файл "+ lcfname+" не удалось закрыть после попытки удаления цифровой подписи!")
RETURN
endif
ENDIF
*** во второй раз открываем файл, чтобы поменять системный номер и создать реестр обратных файлов
inf=FOPEN(lcFName)
IF inf<0
MESSAGEBOX("Файл "+lcfName+" не открывается!")
retu
ELSE

Так вот, prizn =.f., а вовсе не -1 .
Что происходит - не совсем поняла, а задача срочная.
Ratings: 0 negative/0 positive
Re: Убрать цифровую подпись
akvvohinc

Сообщений: 4201
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
Так вот, prizn =.f., а вовсе не -1 .

FCLOSE() и не должен возвращать -1.

Цитата:
If the file is successfully closed, FCLOSE( ) returns true (.T.) and releases the file handle. If the file cannot be closed, FCLOSE( ) returns false (.F.).



Исправлено 1 раз(а). Последнее : akvvohinc, 23.01.18 02:34
Ratings: 0 negative/0 positive
Re: Убрать цифровую подпись
tata
Автор

Сообщений: 3458
Откуда: Казань
Дата регистрации: 23.10.2005
akvvohinc
FCLOSE() и не должен возвращать -1.
Так, хорошо, поняла. И все-таки, почему после обрезания файл нельзя закрыть?
Я что-то не то делаю с EOF?



Исправлено 1 раз(а). Последнее : tata, 23.01.18 06:12
Ratings: 0 negative/0 positive
Re: Убрать цифровую подпись
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
inf1=FCHSIZE(inf1,poz2-1)

По моему указатель на файл затерли.
Ratings: 0 negative/0 positive
Re: Убрать цифровую подпись
tata
Автор

Сообщений: 3458
Откуда: Казань
Дата регистрации: 23.10.2005
Нашла. Изменяю дескриптор файла, это раз.
Ну и poz2-1 затирает скобку закрывающую тэг. Это два.
Исправила, работает
Ratings: 0 negative/0 positive
Re: Убрать цифровую подпись
akvvohinc

Сообщений: 4201
Откуда: Москва
Дата регистрации: 11.11.2008
Думаю, больше смысла в проверке poz1, а также результата выполнения FCHSIZE(), чем FCLOSE().
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 22 (Гостей: 22)

© 2000-2024 Fox Club 
Яндекс.Метрика