On-line: Pasha, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
постоянный участник


Пост N: 5
Зарегистрирован: 13.09.07
ссылка на сообщение  Отправлено: 10.01.08 12:23. Заголовок: Глюк в Harbour в комплекте функций FTTEXT


В Harbour с недавнего времени появилась реализация замечательных функций для обработки текстовых файлов, которая давно реализована в xHarbour и перекочевавшая туда из известной библиотеки Nanfor.lib.
Имею ввиду комплект функций из FTTEXT.C. Так вот сегодня наткнулся на ошибку, связанную с обработкой конца файла. Как известно, каждая строка текстового файла заканчивается на символы с кодами 13+10, хотя может быть и просто символ с кодом 10. В моем файле было подряд две строки, в которых ничего не было кроме 10. Функция Ft_FEof() восприняла такую ситуацию как конец файла и, таким образом, значительная часть информации оказалась проигнорированной. В xHarbour все оказалось отлично. Может кто уже встречался с такой ситуацией и знает как исправить ошибку?


Спасибо: 0 
Профиль
Ответов - 4 [только новые]


постоянный участник


Пост N: 359
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 10.01.08 20:20. Заголовок: leo пишет: Может кт..


leo пишет:

 цитата:
Может кто уже встречался с такой ситуацией



Похоже, что никто не встречался я так понял, не пользуются, так, что небольшой пример с Вашей стороны не помешал бы ( я имею ввиду код, Memowrit( "test.txt", "line 1;" + Replicate( Chr( 10 ), 2 ) + "line 2" ) не нужно )


leo пишет:

 цитата:
и знает как исправить ошибку?



Если Вы 100% уверены в неглючности xHb кода и совместимости с Clipper Nanfor - просто сделайте "borrowed from xHarbour" , т.е замените FTTEXT.C из поставки Harbour на FTTEXT.C из поставки xHarbour, сделайте соответствующие изменения и перекомпилируйте библиотеку (если Вы ничем подобным еще не занимались, дайте свой email или напишите мне на myorg63 [at] mail.ru - я вышлю Вам модифицированный исходник).




Спасибо: 0 
Профиль
постоянный участник




Пост N: 397
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.01.08 21:00. Заголовок: leo пишет: замечате..


leo пишет:

 цитата:
замечательных функций для обработки текстовых файлов, которая давно реализована в xHarbour и перекочевавшая туда из известной библиотеки Nanfor.lib.



А написать что за функции можно ? А то не видел нигде и не знаю про них !
(всего и не узнаешь за всю жизнь......)

Спасибо: 0 
Профиль
постоянный участник




Пост N: 398
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.01.08 21:00. Заголовок: leo пишет: замечате..


leo пишет:

 цитата:
замечательных функций для обработки текстовых файлов, которая давно реализована в xHarbour и перекочевавшая туда из известной библиотеки Nanfor.lib.



А написать что за функции можно ? А то не видел нигде и не знаю про них !
(всего и не узнаешь за всю жизнь......)

Спасибо: 0 
Профиль
постоянный участник


Пост N: 360
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 13.01.08 01:06. Заголовок: leo пишет: В Harbou..


leo пишет:

 цитата:
В Harbour с недавнего времени появилась реализация замечательных функций для обработки текстовых файлов, которая давно реализована в xHarbour и перекочевавшая туда из известной библиотеки Nanfor.lib.
Имею ввиду комплект функций из FTTEXT.C. Так вот сегодня наткнулся на ошибку, связанную с обработкой конца файла.


Вообще, то функции FT_F* для Harbour существуют давно
19990528-21:00 WIB Andi Jahja <andij@aonlippo.co.id>
..
+ source/tools/hb_f.c
nanforum ft_f*() clones

Но настоящее портирование библиотеки Nanfor.lib сделано совсем недавно
2007-10-23 13:30 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
..
! FT_F*() functions fully ported from original NFLIB.
Pls test.
..

Сейчас в состав xHb входит FTTEXT.C полностью переписанный тем же Andi Jahja в 2005 году.
* Nanforum Toolkit simulation of text file handlers
* Ideas by Brice de Ganahl and Steve Larsen
* Total rework using xHarbour array implementation by Andi Jahja

Причем, это действительно лишь "вариации на тему" - IMHO полная несовместимость с Clipper Nanfor, добавлены некоторые функции, не реализованные в исходной библиотеке, но это не проблема, главная проблема заключается в том, что функции возвращают не тот результат, который бы можно было ожидать используя Clipper Nanfor.lib.
Для примера в исходной библиотеке функция FT_FUSE() возвращает handle открытого файла или 0 в случае неудачи, в xHb libnf таже функция возвращает в зависимости от результата TRUE/FALSE.
Также функции получают различное число параметров (например FT_INSERT - в Clipper функцию должен быть передан 1 параметр, для xHb их уже 2).

Но даже тем пользователям, которые не портируют свои приложения из Clipper, а пишут новые програмы используя libnf.lib из состава xHb придется немного понервничать.
Так типичный пример, взятый из Nanfor.NG не будет работать:
ft_fUse( "text.txt" )
ft_fUse()
в xB перед работой нужно вызывать ft_fselect( 1 )

Сл.пример приведет к GPF:
PROCEDURE main()
? ft_fdeleted()
ft_fselect( 1 )
ft_fUse( "text.txt" )
ft_fUse()

Функция FT_FUSE() без параметров в некоторых случаях приводит к memory leaks.
Так что качество реализации и совместимость однозначно желают лучшего.

Но в данном примере действительно Harbour FT_F* спотыкается на некоторых файлах ( CHR(0)+CHR(0)?), в xHb - без проблем ( к сожалению, я сейчас не могу проверить связку Clipper + nanfor.lib - как там обстоят дела ).

Будем надеяться, что разработчики Harbour разберутся с этой ошибкой.
Пользователи xHb вообще попали в пикантную ситуацию - сделав FT_F* функции совместимыми с Clipper Nanfor, можно потерять совместимость с xHb, кто-то же наверняка использовал их с 2005 года.

Я для себя сделал порт xHb FTTEXT.C для Harbour, если кому нужно (перешел на Harbour или планирует перейти и не хочет сильно переписывать исходники) - могу выслать.

Спасибо: 0 
Профиль
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 108
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет