Форум » [x]Harbour » Изменение размера открытого файла » Ответить

Изменение размера открытого файла

ort: Всем привет! На Клиппере у меня есть функция изменения размера открытого файла ChFileSize() CLIPPER ChFileSize() { _retl( !chsize(_parni(1),_parnl(2)) ); } Ей передается дескриптор и новый размер файла. Все прекрасно работает. Переписал код для Харбора - не работает. HB_FUNC( CHFILESIZE ) { hb_retl( !chsize(hb_parni(1),hb_parnl(2)) ); } Может как-то по другому нужно?

Ответов - 10

ort: Нашел функцию hb_fsTruncAt ─ она урезает файл до нужного размера. Описана в C:\hb32\include\hbapifs.h: extern HB_EXPORT HB_BOOL hb_fsTruncAt ( HB_FHANDLE hFileHandle, HB_FOFFSET nOffset ); /* truncate file to given size */ Но никак не могу ее прилинковать. Вставил #include "hbapifs.h" Ошибка компиляции: c:\hb32\include\hbdefs.h(50) Error F0029 Can't open #include file 'stdarg.h' Подскажите, что делать?

nick_mi: ort пишет: c:\hb32\include\hbdefs.h(50) Error F0029 Can't open #include file 'stdarg.h' Так этот файл в компиляторе (BORLAND). Может пути не прописаны ??? Да и сам вызов должен быть в #pragma BEGINDUMP ...... #pragma ENDDUMP

ort: hb_fsTruncAt нельзя вызывать как обычную функцию Харбора? Что-то не пойму...


SergKis: ort пишет Но никак не могу ее прилинковать ф-я встречается в файлах rtl\filebuf.c rtl\filesys.c вам надо сделать HB_FUNC на примере аналогично из rtl\filesys.c[pre2] HB_FUNC( HB_DISABLEWAITLOCKS ) { hb_retl( hb_fsDisableWaitLocks( hb_parldef( 1, -1 ) ) ); } [/pre2] Если сами собираете hb, то можно в самом rtl\filesys.c, в своем проекте, как сказал nick_mi Какие #include включить не скажу, но можно выбрать из используемых в rtl\filesys.c или поискать в примерах для прбы

ort: SergKis, спасибо, вечером попробую.

nick_mi: Вот здесь http://www.kresin.ru/hrbfaq_3.html#Doc7 Кресин прописал разные функции, в том числе pHndl := hb_vfOpen (namefile) laa := hb_vfTrunc( pHndl , nSize) hb_vfClose (pHndl)

ort: nick_mi, спасибо за наводку!

Dima: ort пишет: На Клиппере у меня есть функция изменения размера открытого файла ChFileSize() Не пойму а каково практическое применение такой функции , обрисуй на примере , если не сложно. Сколько времени кодю и не помню что бы такое понадобилось.

ort: Dima, была у меня проблема с dbf-файлами, после аварийного завершения программы портились шапки файлов. Отсюда два варианта - исправить количество записей в шапке или исправить размер файла на основе количества записей в шапке.

Vlad04: Правильно - определить количество записей, размер базы и все занести в шапку DBF. Когда-то давно, давно приходилось так делать. Даже какие-то утилиты были. Но сейчас на Харборе базы перестали сыпаться.



полная версия страницы