artash05
Junior Member / Новичок
Участник № / Member № 5793
отправлено / posted
Здравствуйте!
Для записи текущих аргументов канала CALL использую атрибут "Запись в файл (129, WFile)". Запись данных происходит успешно. Однако, результирующий файл каждый раз создается заново. Есть ли возможность настроить данную операцию так, чтобы данные дописывались в конец существующего файла, не уничтожая уже имеющиеся данные в файле?
Gennady
Junior Member / Новичок
Участник № / Member № 6305
отправлено / posted
Добрый день!
При использовании канала CALL и атрибута 129 запись для сохранения аргументов в файлы *.dat аргументы типа Lreal сохраняются с округлением после запятой Где можно изменить настройки для сохранения в файл .dat аргументов Lreal с максимальным количеством разрядов после запятой т. е. без округления?
Сообщения / Posts 27 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
если аргумент константа( не привязан к каналу) то в LReal аргументах плавающее число хранится как Real(4 байта)
Сообщения / Posts 873 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Сл-но, надо привязать LReal-аргумент канала CALL к атрибуту канала DFloat, например, к ВХОДНОМУ_ЗНАЧЕНИЮ.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Gennady
Junior Member / Новичок
Участник № / Member № 6305
отправлено / posted
У меня программа выдает результаты вычислений в аргументы экрана, и в канал CALL c типом вызова ChGroupReq для записи результатов в фал .dat. Проблема в том что на экране я могу выводить любое количество разрядов (цифр) после точки просто указывая количество цифр после точки (например: %.4f или %.15f)используя настройки формата отображения и никакого канала DFloat для этого не требуется. Но когда мы открываем файл *.dat то там совсем другая картина и в место как на экране( например: 103.250524638293154), будет записано 103.25 что нас не устраивает.
Извините, не совсем понятен ваш ответ. У меня 133 аргумента и будет еще больше, мне нужно для каждого создавать канал DFoat?
К тому же все аргументы уже привязаны к программе и там нет возможности сделать вторую привязку!?
Мне всего лишь нужно чтобы дробная часть значения аргументов точно записывались в файл, со всеми цифрами после точки (у Lreal их 15).
Сообщения / Posts 27 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Аргумент канала CALL, не привязанный к атрибуту канала с типом данных DFloat, всегда будет передавать 4-байтовое число (на отображение, в документ, на запись в файл). На экране значение такого аргумента (с типом данных LREAL) может отображаться с большим числом знаков, но реально точное отображение будет в пределах формата Float.
Gennady
Junior Member / Новичок
Участник № / Member № 6305
отправлено / posted
Дело в том что полученные на экране результаты вычислений перепроверяют, используя данные записанные в файле и результаты проверки отличаются в третьем четвертом знаке после точки. Если же у исходных данных брать все значения после точки с экрана, то всё точно получается.
Сообщения / Posts 27 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Различие в точности отображения на экране и записи в файл уже объяснены. Для чего надо записывать вычисленные данные в файл? Как это будет использоваться в реальном процессе?
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Gennady
Junior Member / Новичок
Участник № / Member № 6305
отправлено / posted
Если не использовать каналы DFLOAT в качестве носителей данных соответствующего формата (как было предложено в посте от 16.03.2015), экспортировать в файл данные в формате DFLOAT не удастся.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |