Всем привет. Пытаюсь освоить системные бибилиотеки. А именно SysLibFile. Файл открывается. Возвращается количество записанных байт. Удаляется. Считывается. А вот закрыть не удаётся...Не знаю где собака порылась.
Всем привет. Пытаюсь освоить системные бибилиотеки. А именно SysLibFile. Файл открывается. Возвращается количество записанных байт. Удаляется. Считывается. А вот закрыть не удаётся...Не знаю где собака порылась.
Это ошибка в реализации библиотеки. На самом деле файл закрывается.
Функция Close на самом деле возвращает DWORD. - Слова Филоненко Александра, с какой-то темы. Но если установить переменной (присвающей значение SysFileClose)тип DWORD. то компилятор выдаёт ошибку несоответствия типов. ???
Да...похоже не очень популярный вопрос я задал. Никто из ОВЕНа не отозвался. Теперь следующие вопросы к производителям ПЛК 154. В приведённом ниже примере файл прекрасно пишется и закрывается.
Но есть два вопроса:
1) Функция записи работает только в режиме 'W'. В режиме 'a' выдаёт ошибку 100.
2) Так и не ясно , что возвращает xReturn := SysFileClose(dwHandle) в случае ошибки и возвращает ли, что либо ещё кроме FALSE. Мои эксперименты показали, что в случае удачного закрытия файла возвращается FALSE, а не TRUE как в описании. Добиться момента когда произойдёт ошибка мне не удалось.
Хотелось бы понять это ошибки самой библиотеки или же в контроллере не полностью реализованы эти функционалы?
День, добрый. Скажем так, не очень много пользователей используют данный функционал. Попробуйте мой пример с архивом поглядеть. У меня все работало:
http://www.owen.ru/forum/showpost.ph...7&postcount=45
1. SysWrite действительно работает только в режимах w и r. Которые и описаны в документации. Других режимов в документации не описано. Это не библиотечная функция C!
1а. Режим A можно реализовать самому, вызвав после открытия функцию SysFileSeek()
2. Документацию желательно читать ДО.
3. SysFileClose всегда закрывает файл. Причин ей помешать нет.
P.S. Я Владислав
Мне 'a' не нужно было, но вы меня заинтриговали, вот что говорит доступная мне документация (F1 в CoDeSys):
==================
Access mode:
w write (File will be updated or created newly)
r read (File will only be opened for reading; if the file does not exist, an error will be returned)
rw read and write (File will be updated; if the file does not exist, an error will be returned)
a append (File will be opened like described for 'w', but the written data will be appended at the end of the file)
==================
Слово в слово содержимое файла SysLibFile_E.pdf и перевод в SysLibFile_RU.pdf. Хотя вы правы, я не поленился проверить - оно действительно не работает.
Источник PDF'ок файл Bibl_CoDeSys.zip, откуда слил не помню, но с огромной долей вероятности с www.owen.ru.
Смотрим описание тут:
SysLibFile_RU.zip
В приведенном по ссылке файле явно указаны режимы "rw" при открытии файла.
Больше двух лет проблеме и она до сих пор не решена?
Ну хоть описание поддерживаемых функций поправьте.