Страница 1 из 1

добавление байта=0 в строку для записи в файл

СообщениеДобавлено: Чт янв 21, 2010 3:16 am
golportret
Коллеги, подскажите, плиз, как добавить в строку, предназначенную для записи в файл, символ (байт), равный 0? StringChar(0) - увы, не работает((
Спасибо.

СообщениеДобавлено: Чт янв 21, 2010 7:37 am
Klinkmann_Msk
To golportret:
А как Вы определили, что StringChar(0) не работает?

Если верить доке:
In a script, you can convert characters of a string to ASCII codes and ASCII codes back to characters by using the StringChar() and StringASCII() functions.
These functions do not support multiple byte character sets. Only characters in the range of 0-255 are supported.

СообщениеДобавлено: Чт янв 21, 2010 7:59 am
golportret
Klinkmann_Msk писал(а):To golportret:
А как Вы определили, что StringChar(0) не работает?

Если верить доке:
In a script, you can convert characters of a string to ASCII codes and ASCII codes back to characters by using the StringChar() and StringASCII() functions.
These functions do not support multiple byte character sets. Only characters in the range of 0-255 are supported.


Например: при записи в файл этой строки: StringTemp = StringChar(49)+StringChar(0)+StringChar(51) - в файл запишется только 1 и 3 - серединка не запишется(( Мне на самом деле нужно сформированную двоичную строку дополнить до конца строки нулями.
В доке действительно указывается дипазон 0-255, но увы...
Кстати, откуда-то скачивал русскую доку, называется - ITScriptsAndLogic_ru_10_300408.pdf

СообщениеДобавлено: Чт янв 21, 2010 8:18 am
Klinkmann_Msk
To golportret:
Ну, нулевой символ, так же как #10, #13 не отображается.

Кстати, откуда-то скачивал русскую доку, называется - ITScriptsAndLogic_ru_10_300408.pdf
Есть такая. А что в ней особенного???

СообщениеДобавлено: Чт янв 21, 2010 8:38 am
golportret
Klinkmann_Msk писал(а):To golportret:
Ну, нулевой символ, так же как #10, #13 не отображается.

Кстати, откуда-то скачивал русскую доку, называется - ITScriptsAndLogic_ru_10_300408.pdf
Есть такая. А что в ней особенного???


В доке ничего особенного. Думал - вдруг полезно будет)

А нулевой символ не просто не отображается - он НЕ ПИШЕТСЯ! -> счётчик числа байтов указывает в данном случае 2, а не 3. К тому же файл всегда можно посмотреть, например - HexEditorViewer - нет там нуля(( В реальности записываю, например, 80 байтов, из которых только 7 значащих - остальные 73 - должны быть нулями - файл докладывает, что в него записано 7 байтов, отнюдь не 80!

СообщениеДобавлено: Чт янв 21, 2010 8:56 am
Klinkmann_Msk
To golportret:
Протестировал, Вы правы. Баг. Ещё один :)
А зная, кто переводил эту доку, предпочитаю пользоваться оригинальной :D

СообщениеДобавлено: Чт янв 21, 2010 9:39 am
golportret
Klinkmann_Msk писал(а):To golportret:
Протестировал, Вы правы. Баг. Ещё один :)
А зная, кто переводил эту доку, предпочитаю пользоваться оригинальной :D


баг-то баг, а что делать? Как-то и не думалось, что аж в InTouch могут быть баги :shock:
А ведь в доке (оригинальной) пишется, что последний параметр функции LineFeed=1 означает запись в текстовый файл, значит предполагается, что бывают и бинарные? :)

СообщениеДобавлено: Чт янв 21, 2010 10:14 am
Klinkmann_Msk
To golportret:
А ведь в доке (оригинальной) пишется, что последний параметр функции LineFeed=1 означает запись в текстовый файл, значит предполагается, что бывают и бинарные?
Там лишь говорится, что LineFeed=1 записывает символ перевода строки (LF) после записи мессаджа в файл.

Что делать?
1. Можно запросить совет у техподдержки Wonderware
2. Написать свой ActiveX, который будет делать корректную запись в файл.
3. Смириться :twisted:

Как-то и не думалось, что аж в InTouch могут быть баги
А чем InTouch лучше другого софта, например Майкрософтского? :)

СообщениеДобавлено: Чт янв 21, 2010 10:43 am
golportret
Klinkmann_Msk писал(а):To golportret:
А ведь в доке (оригинальной) пишется, что последний параметр функции LineFeed=1 означает запись в текстовый файл, значит предполагается, что бывают и бинарные?
Там лишь говорится, что LineFeed=1 записывает символ перевода строки (LF) после записи мессаджа в файл.

Что делать?
1. Можно запросить совет у техподдержки Wonderware
2. Написать свой ActiveX, который будет делать корректную запись в файл.
3. Смириться :twisted:

Как-то и не думалось, что аж в InTouch могут быть баги
А чем InTouch лучше другого софта, например Майкрософтского? :)

InTouch, как и любая Скада - это система реального времени, не имеющая права иметь баги, по моему мнению! :? (говорят, что на ней автоматизирован тоннель под Ла-Маншем)
Klinkmann_Msk, спасибо большое за поддержку. :)