PDA

Просмотр полной версии : СПК107 - зависают операции с файлами



Сергей_Сарапул
11.01.2016, 15:37
Задача - сохранить до 20 файлов наборов параметров.
Есть или нет файл узнаю с помощью опроса его даты создания. По идее - если файла нет, будет ошибка.
Но при выполнении экземпляра CAA file.GetTime через раз уходит навсегда в xBusy - т.е. xDone и xError false а xBusy = true
Раз зависает, раз срабатывает. Пробовал перед каждым вызовом делать остановку типа fildate( xExecute:=FALSE).

Библиотека CAA file стоит версии 3.5.5.0, компилируется тоже под 3.5.5.0 а таргет-файл 3.5.4.20 - может в это дело ? Но других версий библиотеки CAA file у меня нет.
Путь активный, вижу что файл там создается, но записать уже не получается.


такой код

fildate: FILE.GetTime;


IF NOT fildate.xExecute THEN
fildate.sFileName:='/mnt/ufs/home/1.txt';
fildate( xExecute:=TRUE);
ELSE
IF NOT fildate.xBusy THEN
IF fildate.xDone THEN
dan.est:=FALSE;
dan.data:=fildate.dtLastModification;
dan.datastr:=DT_TO_WSTRING(dan[file_pos].data);
END_IF
IF fildate.xError THEN // ошибка
dan.est:=TRUE;
dan.datastr:="пусто";
END_IF
fildate( xExecute:=FALSE);

END_IF

GoodLuck
11.01.2016, 16:49
Тоже использую библиотеку CAAFile, у меня такая же фигня периодически возникает при чтении файла. Выдает ошибку, что файла якобы не существует на SD карте. Я обрабатываю эту ошибку в программе так: если 2 раза подряд возникает ошибка чтения, значит, файла действительно нет. Но со второго раза всегда читает.

Сергей_Сарапул
11.01.2016, 18:57
Да, так и пришлось сделать - только добавил анализ условия если не xBusy то опер. выполнена иначе повторить, вот только с file.close такое не прокатывает - там после выполнения и xDone и xError и xBusy в false и повтор не помогает.