PDA

Просмотр полной версии : Помогите разобраться с CAA FILE



serg_s
13.01.2016, 15:21
Здравствуйте.

Начал разбираться с библиотекой CAA FILE. Взял пример из справки. Не удается прочитать файл.
Посмотрите пожалуйста в чем проблема. На текущий момент программа зацикливается на чтении файла:
21731

capzap
13.01.2016, 15:42
а может ну его, посмотрите здесь вдруг поможет http://www.owen.ru/forum/showthread.php?t=17003&p=141820&viewfull=1#post141820

serg_s
13.01.2016, 15:51
а может ну его, посмотрите здесь вдруг поможет http://www.owen.ru/forum/showthread.php?t=17003&p=141820&viewfull=1#post141820

может... а по SysFile где почитать?

capzap
13.01.2016, 16:18
а примера проекта мало?

serg_s
13.01.2016, 16:47
а примера проекта мало?

думаю, разберусь.
другой вопрос возник: как можно найти файл по имени? каждые сутки создается новый архивный файл, именуется по дате, предполагается поиск данных в этих файлах.

Филоненко Владислав
13.01.2016, 17:33
Бинарный поиск рулит. По дате.

energvk
15.01.2016, 00:41
Кстати, а в чём отличие библиотек CAA File от SysFile? А есть ещё SysFileAsync. А то я в лёгком замешательстве какую использовать...

serg_s
15.01.2016, 09:02
И все-таки, может кто-нибудь пример дать с функциями SysFile? Пока разобрался только с чтением (спасибо capzap). Как увидеть конец файла? Как работать с позиционированием курсора, конкретно указать откуда и докуда читать? В идеале, если кто-нибудь даст пример со всеми функциями.

На счет конца файла - так можно?
x1:=SysFileEOF(hFile:=Handle);
получается: 1 - пока файл читается, 0 - конец файла, остальное - ошибки.

существование файла так можно? или есть подводные камни? вроде работает:
IF Handle=16#FFFFFFFF THEN FileExist:=FALSE; ELSE FileExist:=TRUE; END_IF;

и попутно вопрос:
обнаружил, что в массиве строк, значения не больше 80 символов - это ограничение? или в другом месте искать ошибку?

capzap
15.01.2016, 09:10
самый быстрый способ (для любого языка программирования) это загрузить целиком файл и уже с этим буффером работать, искать концы строк, нужную позицию и т.д.

serg_s
15.01.2016, 09:13
самый быстрый способ (для любого языка программирования) это загрузить целиком файл и уже с этим буффером работать, искать концы строк, нужную позицию и т.д.

ну так я это и пытаюсь сделать...
логика то у меня в голове сложилась, вопрос кода, как с бибкой работать...

capzap
15.01.2016, 09:15
Вы пытаетесь функциями обращаться к файлу каждый раз как захотели что то посмотреть, а я говорю - загрузили файл целиком в ОЗУ, в программе это будет массив байт и работаете с ним (массивмо), а не файлом

serg_s
15.01.2016, 13:11
Вы пытаетесь функциями обращаться к файлу каждый раз как захотели что то посмотреть, а я говорю - загрузили файл целиком в ОЗУ, в программе это будет массив байт и работаете с ним (массивмо), а не файлом

я собираюсь считывать в массив строк, но это очень большой массив получается, файл около 7 МБ.

САА FILE наверно дальше пытать буду...

capzap
16.01.2016, 10:04
прочтите http://rus-linux.net/MyLDP/consol/split.html и описание как работать с sysexeclib, надейюсь намек понятен