Про принцип слышал, а как этот принцип реализовать?
Вид для печати
по кругу будем ходить?
Первая строка первой вошла, первой и выходить, освободить место новой информации
Я не понимаю как это реализовать. Какими операциями? В файле как удалить первые строки? Добавить в файл строки - понятно. Заменить строки в файле - тоже понятно. Но как удалить - не понятно.
SysFileGetPos и SysFileSetPos в помощь, символ конца строки думаю сами отыщите
Как при этом уменьшится размер файла?
Я так понимаю, Вы предлагаете сделать циклическую запись. Т.е. когда достигли предела - начали писать с начала. Можно конечно и такой вариант, но не очень нравится, что свежие данные окажутся в середине файла.
И второе - это необходимо строго определить размер данных (читай строки). Иначе будем затирать прежние.
я уже называл эту идею бредом, Вы не создаете искусственный интеллект, плк у Вас не будет сам придумывать текст сообщений, скорее всего это определенный набор фраз с вставленными значениями показаний датчиков, так какого хрена записывать их в файл, если достаточно записать индекс, размером в байт и например температуру - 4 байта, хотя если речь о выходе за диапазон, то какая разница какая будет температура, главное что больше установленной границы, поэтому можно сохранять только код сообщения, соответственно решаются все проблемы, Вы будете знать что конкретно произошло и размерность будет один байт на сообщение.
ЗЫ если попадалась любая книга по созданию баз данных, то должны понять о чем я сейчас говорил (по поводу идентификаторов фраз)
Можно и так. Кодировать фразы и т.д. - это хорошо. Но если фраз более 10 - то уже под руками надо иметь расшифровку этих фраз. Я же хочу записать саму фразу с параметром на русском (а не код фразы) языке, что бы прочитать ее мог каждый и сразу все понять без обращения к расшифровкам. Все, что нужно - это прочесть список файлов.
Странно, что такая простая функция не поддерживается. Тем более, что через тот же ПЛК браузер видно список файлов. plc_io так же умеет получать список файлов. Значит реализация этой функции в принципе есть.
зы. я догадываюсь в чем дело... я не указал, для чего мне это надо и Вы предлагаете вариант, который можно легко использовать при условии, что дальнейший анализ архивных данных будет автоматизированным. Поправлюсь: Надо получить простой текст (произвольной длины), который можно будет открыть любым текстовым редактором.
ззы. можно завести файл в котором будут сохранены имена файлов. Но опять же криво это. Есть же уже файловая система. И обращаться лучше к исходным данным, а не к их возможным отображениям.
так кто Вам мешает в проекте иметь стандартный проиндексированный набор фраз в константах. Возьмите любую крупную библиотеку под КДС и не зря я упоминал про БД, этот принцип используется повсеместно, хранят необходимый минимум, всё остальное легко преобразуется в удобочитаемую форму при визуализации
да предвосхищаю еще один момент, забыл указать, что в моем методе необходима еще метка времени, которая занимать будет четыре байта
Да, нужно писать в бинарном виде с фиксированным размером записей по кругу. Ритэйном тогда хранить текущую позицию в файле. plc_io — консольная, автоматизации поддаётся легко; нужно набросать ещё одну консольную прогу, которая будет из бинарника делать текстовый файл — дело пяти минут, а потом их уже обе одним bat-ником вызывать.