<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Останні повідомлення форума : Bug tracker</title>
		<link>http://oscada.org/ua/forum/topics/bug_tracker/</link>
		<description>Bug tracker</description>
		<language>ua</language>
		<lastbuilddate>Wed, 13 May 2026 01:16:07 +0300</lastbuilddate>
		<generator>mm_forum powered by TYPO3</generator>
		<ttl>60</ttl>
		
		
		<item>
			<title>[Qt+Wayland] Loss combobox items after empty one</title>
			<link>http://oscada.org/ua/forum/posts///10424/</link>
			<pubDate>Sat, 14 Feb 2026 10:20:12 +0200</pubDate>
			<description>OpenSCADA:  &gt; UI.{QTCfg,Vision} Linux: Debian 12 64 Qt: 5.15.8 Resume: An environmental bug of the Qt in working on Wayland with representing empty items in the combobox list, which was reproduced on two devices. Workaround: Only use XOrg now.</description>
			<content:encoded><![CDATA[      <strong>OpenSCADA:</strong> [Work 1.0-r3xxx, LTS 0.9.8] &gt; UI.{QTCfg,Vision}<br />
<strong>Linux:</strong> Debian 12 64<br />
<strong>Qt:</strong> 5.15.8<br />
<strong>Resume:</strong> An environmental bug of the Qt in working on Wayland with representing empty items in the combobox list, which was reproduced on two devices.<br />
<strong>Workaround:</strong> Only use XOrg now.      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>[Qt] Crashing at insertion empty buffer to Text Areas</title>
			<link>http://oscada.org/ua/forum/posts///10423/</link>
			<pubDate>Sat, 14 Feb 2026 10:01:55 +0200</pubDate>
			<description>OpenSCADA:  &gt; UI.{QTCfg,Vision} Linux: Debian 12 64 Qt: 6.4.2 Resume: An environmental bug of the Qt in working with the copy-past buffer in Text Areas Workaround: The bug fixed in Qt 6.4 of bigger minors, but the broken version is frozen already in Debian 12, so there we build OpenSCADA there with Qt5 still.</description>
			<content:encoded><![CDATA[      <strong>OpenSCADA:</strong> [Work 1.0-r3xxx, LTS 0.9.7] &gt; UI.{QTCfg,Vision}<br />
<strong>Linux:</strong> Debian 12 64<br />
<strong>Qt:</strong> 6.4.2<br />
<strong>Resume:</strong> An environmental bug of the Qt in working with the copy-past buffer in Text Areas<br />
<strong>Workaround:</strong> The bug fixed in Qt 6.4 of bigger minors, but the broken version is frozen already in Debian 12, so there we build OpenSCADA there with Qt5 still.      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>[Sockets] Wrong holding the socket handler</title>
			<link>http://oscada.org/ua/forum/posts///10422/</link>
			<pubDate>Sat, 14 Feb 2026 09:37:48 +0200</pubDate>
			<description>The problem has not reproduced more up to 14.02.2026.</description>
			<content:encoded><![CDATA[      The problem has not reproduced more up to 14.02.2026.      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>FormEl table ceil color</title>
			<link>http://oscada.org/ua/forum/posts///10417/</link>
			<pubDate>Sat, 11 Oct 2025 21:54:56 +0300</pubDate>
			<description>  src/moduls/ui/Vision/vis_shapes.cpp -- tit-&gt;setData(Qt::BackgroundRole, QColor(wVl.c_str())); ++ tit-&gt;setData(Qt::BackgroundRole, getColor(wVl.c_str()));  -- tit-&gt;setData(Qt::ForegroundRole, QColor(wVl.c_str())); ++ tit-&gt;setData(Qt::ForegroundRole, getColor(wVl.c_str()));   Yes, I have added of using the standard OpenSCADA function getColor() for transparency here.   This doesn't solve the problem of identical display both on the web and locally, but it's better than before. Bonus: experience building from source.  And for that I have adapted UI.WebVision for parsing alfa value from OpenSCADA format and placing it to &quot;rgba(red, green, blue, alpha)&quot; in case of hex colors, due to named colors are needed of conversion to hex.</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;walhi&quot; wrote:<br /><br />
<div class="tx-mmforum-pi1-codeheader">JAVASCRIPT</div><div class="tx-mmforum-pi1-codeblock"><style type="text/css"><!----></style><pre style="margin:0px;">src/moduls/ui/Vision/vis_shapes.cpp
-- tit-&gt;setData(Qt::BackgroundRole, QColor(wVl.c_str()));
++ tit-&gt;setData(Qt::BackgroundRole, getColor(wVl.c_str()));
&nbsp;
-- tit-&gt;setData(Qt::ForegroundRole, QColor(wVl.c_str()));
++ tit-&gt;setData(Qt::ForegroundRole, getColor(wVl.c_str()));</pre></div><br />
</div><br />
Yes, I have added of using the standard OpenSCADA function getColor() for transparency here.<br />
<br />
<div class="tx-mmforum-pi1-pt-quote">&quot;walhi&quot; wrote:<br /><br />
This doesn't solve the problem of identical display both on the web and locally, but it's better than before. Bonus: experience building from source.<br />
</div><br />
And for that I have adapted UI.WebVision for parsing alfa value from OpenSCADA format and placing it to &quot;rgba(red, green, blue, alpha)&quot; in case of hex colors, due to named colors are needed of conversion to hex.      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>FormEl table ceil color</title>
			<link>http://oscada.org/ua/forum/posts///10416/</link>
			<pubDate>Thu, 09 Oct 2025 23:34:00 +0300</pubDate>
			<description> And that is obvious for different visualizers, which smoothing is not a bug fixing also but it is a feature appending.  As it turns out, the source code contains a function that solves the problem with displaying on the Qt, but it was not used in the code that populates the table cells. QColor OSCADA_QT::getColor( const string &amp;val )   src/moduls/ui/Vision/vis_shapes.cpp -- tit-&gt;setData(Qt::BackgroundRole, QColor(wVl.c_str())); ++ tit-&gt;setData(Qt::BackgroundRole, getColor(wVl.c_str()));  -- tit-&gt;setData(Qt::ForegroundRole, QColor(wVl.c_str())); ++ tit-&gt;setData(Qt::ForegroundRole, getColor(wVl.c_str()));   This doesn't solve the problem of identical display both on the web and locally, but it's better than before. Bonus: experience building from source.</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;roman&quot; wrote:<br /><br />
And that is obvious for different visualizers, which smoothing is not a bug fixing also but it is a feature appending.<br />
</div><br />
As it turns out, the source code contains a function that solves the problem with displaying on the Qt, but it was not used in the code that populates the table cells.<br />
<div class="tx-mmforum-pi1-codeheader">JAVASCRIPT</div><div class="tx-mmforum-pi1-codeblock"><style type="text/css"><!----></style><pre style="margin:0px;">QColor OSCADA_QT::getColor( const string &amp;val )</pre></div><br />
<br />
<div class="tx-mmforum-pi1-codeheader">JAVASCRIPT</div><div class="tx-mmforum-pi1-codeblock"><style type="text/css"><!----></style><pre style="margin:0px;">src/moduls/ui/Vision/vis_shapes.cpp
-- tit-&gt;setData(Qt::BackgroundRole, QColor(wVl.c_str()));
++ tit-&gt;setData(Qt::BackgroundRole, getColor(wVl.c_str()));
&nbsp;
-- tit-&gt;setData(Qt::ForegroundRole, QColor(wVl.c_str()));
++ tit-&gt;setData(Qt::ForegroundRole, getColor(wVl.c_str()));</pre></div><br />
<br />
This doesn't solve the problem of identical display both on the web and locally, but it's better than before. Bonus: experience building from source.      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>walhi</dc:creator>
		</item>
		
		<item>
			<title>FormEl table ceil color</title>
			<link>http://oscada.org/ua/forum/posts///10415/</link>
			<pubDate>Thu, 09 Oct 2025 19:05:24 +0300</pubDate>
			<description>  Just see the source code of the related visualizer before open bugs   The forum section description states that this section should be used to report errors and inaccuracies in the documentation. Since I couldn't find a description of this specific feature in the documentation, the original purpose of this post was to supplement the documentation. But as it turns out, this is more like a problem.  Firstly, OpenSCADA documentation cannot trace all specific of the visualization frameworks and changes in their structures! Secondary, that is not about errors in the documentation and for such its improvements created independent forum!     OK, and where there about bugs?  However, as it later turned out, the interfaces in WebVision and QtVision look different, something I only discovered now. I am attaching another screenshot showing the difference in display. The first example showed the working user interface on Qt.  And that is obvious for different visualizers, which smoothing is not a bug fixing also but it is a feature appending.  Your example just show the difference in the extending hex color on Qt and Web, that is the format is not standard in whole and even in Web appeared newly.</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;walhi&quot; wrote:<br /><br />
<div class="tx-mmforum-pi1-pt-quote">&quot;roman&quot; wrote:<br /><br />
Just see the source code of the related visualizer before open bugs <br />
</div><br />
The forum section description states that this section should be used to report errors and inaccuracies in the documentation. Since I couldn't find a description of this specific feature in the documentation, the original purpose of this post was to supplement the documentation. But as it turns out, this is more like a problem.<br />
</div><br />
Firstly, OpenSCADA documentation cannot trace all specific of the visualization frameworks and changes in their structures!<br />
Secondary, that is not about errors in the documentation and for such its improvements created independent forum! <br />
<br />
<div class="tx-mmforum-pi1-pt-quote">&quot;walhi&quot; wrote:<br /><br />
<div class="tx-mmforum-pi1-pt-quote">&quot;roman&quot; wrote:<br /><br />
OK, and where there about bugs?<br />
</div><br />
However, as it later turned out, the interfaces in WebVision and QtVision look different, something I only discovered now. I am attaching another screenshot showing the difference in display. The first example showed the working user interface on Qt.<br />
</div><br />
And that is obvious for different visualizers, which smoothing is not a bug fixing also but it is a feature appending.<br />
<br />
Your example just show the difference in the extending hex color on Qt and Web, that is the format is not standard in whole and even in Web appeared newly.      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>FormEl table ceil color</title>
			<link>http://oscada.org/ua/forum/posts///10414/</link>
			<pubDate>Thu, 09 Oct 2025 18:51:02 +0300</pubDate>
			<description> Just see the source code of the related visualizer before open bugs   The forum section description states that this section should be used to report errors and inaccuracies in the documentation. Since I couldn't find a description of this specific feature in the documentation, the original purpose of this post was to supplement the documentation. But as it turns out, this is more like a problem.   OK, and where there about bugs?  However, as it later turned out, the interfaces in WebVision and QtVision look different, something I only discovered now. I am attaching another screenshot showing the difference in display. The first example showed the working user interface on Qt.  </description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;roman&quot; wrote:<br /><br />
Just see the source code of the related visualizer before open bugs <br />
</div><br />
The forum section description states that this section should be used to report errors and inaccuracies in the documentation. Since I couldn't find a description of this specific feature in the documentation, the original purpose of this post was to supplement the documentation. But as it turns out, this is more like a problem.<br />
<br />
<div class="tx-mmforum-pi1-pt-quote">&quot;roman&quot; wrote:<br /><br />
OK, and where there about bugs?<br />
</div><br />
However, as it later turned out, the interfaces in WebVision and QtVision look different, something I only discovered now. I am attaching another screenshot showing the difference in display. The first example showed the working user interface on Qt.<br />
<br />
      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>walhi</dc:creator>
		</item>
		
		<item>
			<title>FormEl table ceil color</title>
			<link>http://oscada.org/ua/forum/posts///10413/</link>
			<pubDate>Thu, 09 Oct 2025 18:09:23 +0300</pubDate>
			<description>  And that is not a bug!!!  I am attaching an example of a table where this appears and a screenshot.  OK, and where there about bugs?  That is only the WebBrowser behavior at transmission the color in hex, which OpenSCADA treats in noway!  Just see the source code of the related visualizer before open bugs — http://oscada.org/svn/trunk/OpenSCADA/src/moduls/ui/WebVision/WebVisionVCA.js</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;walhi&quot; wrote:<br /><br />
<div class="tx-mmforum-pi1-pt-quote">&quot;roman&quot; wrote:<br /><br />
And that is not a bug!!!<br />
</div><br />
I am attaching an example of a table where this appears and a screenshot.<br />
</div><br />
OK, and where there about bugs?<br />
<br />
That is only the WebBrowser behavior at transmission the color in hex, which OpenSCADA treats in noway!<br />
<br />
Just see the source code of the related visualizer before open bugs — <a href="http://oscada.org/svn/trunk/OpenSCADA/src/moduls/ui/WebVision/WebVisionVCA.js" target="_blank" class="link_10">http://oscada.org/svn/trunk/OpenSCADA/src/moduls/ui/WebVision/WebVisionVCA.js</a>      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>FormEl table ceil color</title>
			<link>http://oscada.org/ua/forum/posts///10412/</link>
			<pubDate>Thu, 09 Oct 2025 16:08:36 +0300</pubDate>
			<description> And that is not a bug!!!  I am attaching an example of a table where this appears and a screenshot.  &lt;tbl colsWdthFit='1' sel = 'row'&gt;&quot; &lt;h&gt;&lt;s width = '45%'&gt;Цвет&lt;/s&gt;&lt;s width = '45%'&gt;Значение&lt;/s&gt;&lt;/h&gt; &lt;r&gt;&lt;s color='red-127'&gt;_&lt;/s&gt;&lt;s&gt;red-127&lt;/s&gt;&lt;/r&gt; &lt;r&gt;&lt;s color='red'&gt;_&lt;/s&gt;&lt;s&gt;red&lt;/s&gt;&lt;/r&gt; &lt;r&gt;&lt;s color='#FF0000-255'&gt;_&lt;/s&gt;&lt;s&gt;#FF0000-255, непрозрачный красный RGB-A&lt;/s&gt;&lt;/r&gt; &lt;r&gt;&lt;s color='#FF0000FF'&gt;_&lt;/s&gt;&lt;s&gt;#FF0000FF, непрозрачный красный RGBA&lt;/s&gt;&lt;/r&gt; &lt;r&gt;&lt;s color='#FFFF0000'&gt;_&lt;/s&gt;&lt;s&gt;#FFFF0000, непрозрачный красный ARGB&lt;/s&gt;&lt;/r&gt; &lt;r&gt;&lt;s color='#FF000040'&gt;_&lt;/s&gt;&lt;s&gt;#FF000040, прозрачный красный RGBA&lt;/s&gt;&lt;/r&gt; &lt;r&gt;&lt;s color='#40FF0000'&gt;_&lt;/s&gt;&lt;s&gt;#40FF0000, прозрачный красный ARGB&lt;/s&gt;&lt;/r&gt; &lt;/tbl&gt;</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;roman&quot; wrote:<br /><br />
And that is not a bug!!!<br />
</div><br />
I am attaching an example of a table where this appears and a screenshot.<br />
<br />
<div class="tx-mmforum-pi1-codeheader">HTML</div><div class="tx-mmforum-pi1-codeblock"><style type="text/css"><!----></style><pre style="margin:0px;">&lt;tbl colsWdthFit='1' sel = 'row'&gt;&quot;
&lt;h&gt;&lt;s width = '45%'&gt;Цвет&lt;/s&gt;&lt;s width = '45%'&gt;Значение&lt;/s&gt;&lt;/h&gt;
&lt;r&gt;&lt;s color='red-127'&gt;_&lt;/s&gt;&lt;s&gt;red-127&lt;/s&gt;&lt;/r&gt;
&lt;r&gt;&lt;s color='red'&gt;_&lt;/s&gt;&lt;s&gt;red&lt;/s&gt;&lt;/r&gt;
&lt;r&gt;&lt;s color='#FF0000-255'&gt;_&lt;/s&gt;&lt;s&gt;#FF0000-255, непрозрачный красный RGB-A&lt;/s&gt;&lt;/r&gt;
&lt;r&gt;&lt;s color='#FF0000FF'&gt;_&lt;/s&gt;&lt;s&gt;#FF0000FF, непрозрачный красный RGBA&lt;/s&gt;&lt;/r&gt;
&lt;r&gt;&lt;s color='#FFFF0000'&gt;_&lt;/s&gt;&lt;s&gt;#FFFF0000, непрозрачный красный ARGB&lt;/s&gt;&lt;/r&gt;
&lt;r&gt;&lt;s color='#FF000040'&gt;_&lt;/s&gt;&lt;s&gt;#FF000040, прозрачный красный RGBA&lt;/s&gt;&lt;/r&gt;
&lt;r&gt;&lt;s color='#40FF0000'&gt;_&lt;/s&gt;&lt;s&gt;#40FF0000, прозрачный красный ARGB&lt;/s&gt;&lt;/r&gt;
&lt;/tbl&gt;</pre></div>      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>walhi</dc:creator>
		</item>
		
		<item>
			<title>FormEl table ceil color</title>
			<link>http://oscada.org/ua/forum/posts///10411/</link>
			<pubDate>Thu, 09 Oct 2025 14:48:06 +0300</pubDate>
			<description> Hello. I've discovered that widgets like FormEl Table have a non-standard implementation of cell color support.  See in the ElFigure primitive due to that is a standard for all primitives!  And that is not a bug!!!</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;walhi&quot; wrote:<br /><br />
Hello. I've discovered that widgets like FormEl Table have a non-standard implementation of cell color support.<br />
</div><br />
See in the <a href="http://oscada.org/wiki/Special:MyLanguage/Modules/VCAEngine#ElFigure" target="_blank" class="link_10">ElFigure</a> primitive due to that is a standard for all primitives!<br />
<br />
And that is not a bug!!!      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>FormEl table ceil color</title>
			<link>http://oscada.org/ua/forum/posts///10410/</link>
			<pubDate>Thu, 09 Oct 2025 14:33:15 +0300</pubDate>
			<description>Hello. I've discovered that widgets like FormEl Table have a non-standard implementation of cell color support. Experiments have shown that the color specification standard adopted in OpenSCADA (the RGB HEX value plus a separate alpha channel in DEC) is not recognized, and the standard HTML is parsed incorrectly. Instead of the RGBA ordering, the ARGB ordering is used, but I couldn't find any mention of this in the documentation. </description>
			<content:encoded><![CDATA[      Hello. I've discovered that widgets like FormEl Table have a non-standard implementation of cell color support. Experiments have shown that the color specification standard adopted in OpenSCADA (the RGB HEX value plus a separate alpha channel in DEC) is not recognized, and the standard HTML is parsed incorrectly. Instead of the RGBA ordering, the ARGB ordering is used, but I couldn't find any mention of this in the documentation.       ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>walhi</dc:creator>
		</item>
		
		<item>
			<title>Big syslog</title>
			<link>http://oscada.org/ua/forum/posts///10408/</link>
			<pubDate>Mon, 29 Sep 2025 16:35:27 +0300</pubDate>
			<description> You may have installed and running in the background the service configurations from openscada-server or openscada-plc with different message levels!   No. One station is running. I'm checking it with tail -f /var/log/syslog, and the messages disappear if I uncheck all the boxes in the configurator &quot;to stderr&quot;, &quot;to stdout&quot;, and &quot;to syslog&quot;. There's no response at the change message level&quot;. I found the problem. Level 0 was set in the PLC diagnostics. I was sure that the level set in the workstation settings took precedence over the one specified for the PLC. The only remaining issue was redirecting stdout/stder to syslog, which only occurred on one project and one operating system.</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;roman&quot; wrote:<br /><br />
You may have installed and running in the background the service configurations from openscada-server or openscada-plc with different message levels!<br />
</div><br />
<br />
No. One station is running. I'm checking it with tail -f /var/log/syslog, and the messages disappear if I uncheck all the boxes in the configurator &quot;to stderr&quot;, &quot;to stdout&quot;, and &quot;to syslog&quot;. There's no response at the change message level&quot;. I found the problem. Level 0 was set in the PLC diagnostics. I was sure that the level set in the workstation settings took precedence over the one specified for the PLC. The only remaining issue was redirecting stdout/stder to syslog, which only occurred on one project and one operating system.      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>walhi</dc:creator>
		</item>
		
		<item>
			<title>Big syslog</title>
			<link>http://oscada.org/ua/forum/posts///10407/</link>
			<pubDate>Mon, 29 Sep 2025 15:52:20 +0300</pubDate>
			<description>  And the log size in whole is dependent only from your project, who generates extra messages!!!  The problem is that the syslog add-on is disabled and the message level is set to 1, but in fact, messages with a level of 0 are logged. And this only occurs on Ubuntu.  Then that is not syslog in whole but a replacement from systemd which writes stdout or stderr of the service programs.  In any way, OpenSCADA writes messages corresponding to the pointed level, what you can see from the sources — http://oscada.org/svn/trunk/OpenSCADA/src/tmess.cpp  You may have installed and running in the background the service configurations from openscada-server or openscada-plc with different message levels!</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;walhi&quot; wrote:<br /><br />
<div class="tx-mmforum-pi1-pt-quote"><br />
And the log size in whole is dependent only from your project, who generates extra messages!!! </div><br />
The problem is that the syslog add-on is disabled and the message level is set to 1, but in fact, messages with a level of 0 are logged. And this only occurs on Ubuntu.<br />
</div><br />
Then that is not syslog in whole but a replacement from systemd which writes stdout or stderr of the service programs.<br />
<br />
In any way, OpenSCADA writes messages corresponding to the pointed level, what you can see from the sources — <a href="http://oscada.org/svn/trunk/OpenSCADA/src/tmess.cpp" target="_blank" class="link_10">http://oscada.org/svn/trunk/OpenSCADA/src/tmess.cpp</a><br />
<br />
You may have installed and running in the background the service configurations from openscada-server or openscada-plc with different message levels!      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>Big syslog</title>
			<link>http://oscada.org/ua/forum/posts///10406/</link>
			<pubDate>Mon, 29 Sep 2025 13:28:21 +0300</pubDate>
			<description> And the log size in whole is dependent only from your project, who generates extra messages!!!  The problem is that the syslog add-on is disabled and the message level is set to 1, but in fact, messages with a level of 0 are logged. And this only occurs on Ubuntu.  &lt;prm id=&quot;MessLev&quot;&gt;1&lt;/prm&gt;</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote"><br />
And the log size in whole is dependent only from your project, who generates extra messages!!! </div><br />
The problem is that the syslog add-on is disabled and the message level is set to 1, but in fact, messages with a level of 0 are logged. And this only occurs on Ubuntu.<br />
<br />
<div class="tx-mmforum-pi1-codeheader">JAVASCRIPT</div><div class="tx-mmforum-pi1-codeblock"><style type="text/css"><!----></style><pre style="margin:0px;">&lt;prm id=&quot;MessLev&quot;&gt;1&lt;/prm&gt;</pre></div>      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>walhi</dc:creator>
		</item>
		
		<item>
			<title>Big syslog</title>
			<link>http://oscada.org/ua/forum/posts///10405/</link>
			<pubDate>Wed, 24 Sep 2025 17:22:11 +0300</pubDate>
			<description> Hello. I've encountered a very large syslog on a machine running Ubuntu 24.04. Syslog output was disabled. Message level 0 (debug). I have syslog level 1 (Information) selected and enabled output to archive, stdout, and stderr. This behavior was present in build 3018 and the latest 3045, but only on Ubuntu. I'm not sure if this is a bug, so I apologize in advance if I haven't figured out how the logging works.  OpenSCADA doesn't write in the syslog at no setting such option — http://oscada.org/wiki/Special:MyLanguage/Documents/Program_manual#Config  And the log size in whole is dependent only from your project, who generates extra messages!!!</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;walhi&quot; wrote:<br /><br />
Hello. I've encountered a very large syslog on a machine running Ubuntu 24.04. Syslog output was disabled. Message level 0 (debug). I have syslog level 1 (Information) selected and enabled output to archive, stdout, and stderr. This behavior was present in build 3018 and the latest 3045, but only on Ubuntu. I'm not sure if this is a bug, so I apologize in advance if I haven't figured out how the logging works.<br />
</div><br />
OpenSCADA doesn't write in the syslog at no setting such option — <a href="http://oscada.org/wiki/Special:MyLanguage/Documents/Program_manual#Config" target="_blank" class="link_10">http://oscada.org/wiki/Special:MyLanguage/Documents/Program_manual#Config</a><br />
<br />
And the log size in whole is dependent only from your project, who generates extra messages!!!      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>Big syslog</title>
			<link>http://oscada.org/ua/forum/posts///10404/</link>
			<pubDate>Wed, 24 Sep 2025 16:44:31 +0300</pubDate>
			<description>Hello. I've encountered a very large syslog on a machine running Ubuntu 24.04. Syslog output was disabled. Message level 0 (debug). I have syslog level 1 (Information) selected and enabled output to archive, stdout, and stderr. This behavior was present in build 3018 and the latest 3045, but only on Ubuntu. I'm not sure if this is a bug, so I apologize in advance if I haven't figured out how the logging works.</description>
			<content:encoded><![CDATA[      Hello. I've encountered a very large syslog on a machine running Ubuntu 24.04. Syslog output was disabled. Message level 0 (debug). I have syslog level 1 (Information) selected and enabled output to archive, stdout, and stderr. This behavior was present in build 3018 and the latest 3045, but only on Ubuntu. I'm not sure if this is a bug, so I apologize in advance if I haven't figured out how the logging works.      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>walhi</dc:creator>
		</item>
		
		<item>
			<title>The context menu elements in the configurator are disabled.</title>
			<link>http://oscada.org/ua/forum/posts///10382/</link>
			<pubDate>Wed, 23 Jul 2025 15:03:25 +0300</pubDate>
			<description>That is about the permissions to the Function node, which were lost during moving the DAQ subsystem under ACL!  And I have fixed that right now.</description>
			<content:encoded><![CDATA[      That is about the permissions to the Function node, which were lost during moving the DAQ subsystem under ACL!<br />
<br />
And I have fixed that right now.      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>The context menu elements in the configurator are disabled.</title>
			<link>http://oscada.org/ua/forum/posts///10381/</link>
			<pubDate>Wed, 23 Jul 2025 12:06:03 +0300</pubDate>
			<description>In the DAQ/JavaLikeCalc/Library section, it is impossible to copy or delete library functions through the configurator interface. However, this can be easily done through an XML request from JavaLikeCalc. When connecting the current version to an older one, these manipulations are available on the remote station.</description>
			<content:encoded><![CDATA[      In the DAQ/JavaLikeCalc/Library section, it is impossible to copy or delete library functions through the configurator interface. However, this can be easily done through an XML request from JavaLikeCalc. When connecting the current version to an older one, these manipulations are available on the remote station.      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>walhi</dc:creator>
		</item>
		
		<item>
			<title>utf8</title>
			<link>http://oscada.org/ua/forum/posts///10378/</link>
			<pubDate>Thu, 17 Apr 2025 13:08:34 +0300</pubDate>
			<description>it was an elegant function until Arkadii decided to draw smileys in scada. :)</description>
			<content:encoded><![CDATA[      it was an elegant function until Arkadii decided to draw smileys in scada. :)      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>arccis</dc:creator>
		</item>
		
		<item>
			<title>utf8</title>
			<link>http://oscada.org/ua/forum/posts///10377/</link>
			<pubDate>Thu, 17 Apr 2025 12:37:58 +0300</pubDate>
			<description> old and new functions will fail U+800 and U+10000 tests. length is now determined correctly, but the first byte is different. gpt chat refers to RFC 3629 limits.  And that is corresponding with https://en.wikipedia.org/wiki/UTF-8 , which is referring to RFC 3629, so you fix the article! :)  Due to in two and three bytes that well be: U+800:                100000    000000    — Last code for two bytes is U+07FF                   11? 100000 10 000000 U+10000:     10000    000000    000000    — Last code for three bytes is U+FFFF         111? 10000 10 000000 10 000000    ... and offers code without a loop.  And it offers to the biomass be stupid!? :)</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;arccis&quot; wrote:<br /><br />
old and new functions will fail U+800 and U+10000 tests. length is now determined correctly, but the first byte is different. gpt chat refers to RFC 3629 limits.<br />
</div><br />
And that is corresponding with <a href="https://en.wikipedia.org/wiki/UTF-8" target="_blank" class="link_10">https://en.wikipedia.org/wiki/UTF-8</a> , which is referring to RFC 3629, so you fix the article! :)<br />
<br />
Due to in two and three bytes that well be:<br />
<div class="tx-mmforum-pi1-codeheader">JAVASCRIPT</div><div class="tx-mmforum-pi1-codeblock"><style type="text/css"><!----></style><pre style="margin:0px;">U+800:                100000    000000    — Last code for two bytes is U+07FF
                  11? 100000 10 000000
U+10000:     10000    000000    000000    — Last code for three bytes is U+FFFF
        111? 10000 10 000000 10 000000</pre></div><br />
<br />
<div class="tx-mmforum-pi1-pt-quote">&quot;arccis&quot; wrote:<br /><br />
... and offers code without a loop.<br />
</div><br />
And it offers to the biomass be stupid!? :)      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>utf8</title>
			<link>http://oscada.org/ua/forum/posts///10376/</link>
			<pubDate>Thu, 17 Apr 2025 11:20:31 +0300</pubDate>
			<description>old and new functions will fail U+800 and U+10000 tests. length is now determined correctly, but the first byte is different. gpt chat refers to RFC 3629 limits. and offers code without a loop.   string setUTF8(int32_t symb) {     string rez;     if (symb &lt; 0x80)         rez += (char)symb;     else if (symb &lt; 0x800) {         rez += (char)(0xC0 | (symb &gt;&gt; 6));         rez += (char)(0x80 | (symb &amp; 0x3F));     } else if (symb &lt; 0x10000) {         rez += (char)(0xE0 | (symb &gt;&gt; 12));         rez += (char)(0x80 | ((symb &gt;&gt; 6) &amp; 0x3F));         rez += (char)(0x80 | (symb &amp; 0x3F));     } else if (symb &lt; 0x110000) {         rez += (char)(0xF0 | (symb &gt;&gt; 18));         rez += (char)(0x80 | ((symb &gt;&gt; 12) &amp; 0x3F));         rez += (char)(0x80 | ((symb &gt;&gt; 6) &amp; 0x3F));         rez += (char)(0x80 | (symb &amp; 0x3F));     }     return rez; }   also the chat said that 6 bytes is not allowed by RFC 3629. and is considered unsafe, but code here: std::string encodeUTF8_6Byte(uint32_t symb) {     std::string result;      if (symb &lt; 0x80) {         result += (char)symb;     } else if (symb &lt; 0x800) {         result += (char)(0xC0 | (symb &gt;&gt; 6));         result += (char)(0x80 | (symb &amp; 0x3F));     } else if (symb &lt; 0x10000) {         result += (char)(0xE0 | (symb &gt;&gt; 12));         result += (char)(0x80 | ((symb &gt;&gt; 6) &amp; 0x3F));         result += (char)(0x80 | (symb &amp; 0x3F));     } else if (symb &lt; 0x200000) {         result += (char)(0xF0 | (symb &gt;&gt; 18));         result += (char)(0x80 | ((symb &gt;&gt; 12) &amp; 0x3F));         result += (char)(0x80 | ((symb &gt;&gt; 6) &amp; 0x3F));         result += (char)(0x80 | (symb &amp; 0x3F));     } else if (symb &lt; 0x4000000) {         result += (char)(0xF8 | (symb &gt;&gt; 24));         result += (char)(0x80 | ((symb &gt;&gt; 18) &amp; 0x3F));         result += (char)(0x80 | ((symb &gt;&gt; 12) &amp; 0x3F));         result += (char)(0x80 | ((symb &gt;&gt; 6) &amp; 0x3F));         result += (char)(0x80 | (symb &amp; 0x3F));     } else if (symb &lt;= 0x7FFFFFFF) {         result += (char)(0xFC | (symb &gt;&gt; 30));         result += (char)(0x80 | ((symb &gt;&gt; 24) &amp; 0x3F));         result += (char)(0x80 | ((symb &gt;&gt; 18) &amp; 0x3F));         result += (char)(0x80 | ((symb &gt;&gt; 12) &amp; 0x3F));         result += (char)(0x80 | ((symb &gt;&gt; 6) &amp; 0x3F));         result += (char)(0x80 | (symb &amp; 0x3F));     } else {         // Invalid range         result = &quot;?&quot;;     }      return result; }   </description>
			<content:encoded><![CDATA[      old and new functions will fail U+800 and U+10000 tests. length is now determined correctly, but the first byte is different. gpt chat refers to RFC 3629 limits. and offers code without a loop.<br />
<br />
<br />
<div class="tx-mmforum-pi1-codeheader">JAVASCRIPT</div><div class="tx-mmforum-pi1-codeblock"><style type="text/css"><!----></style><pre style="margin:0px;">string setUTF8(int32_t symb) {
    string rez;
    if (symb &lt; 0x80)
        rez += (char)symb;
    else if (symb &lt; 0x800) {
        rez += (char)(0xC0 | (symb &gt;&gt; 6));
        rez += (char)(0x80 | (symb &amp; 0x3F));
    } else if (symb &lt; 0x10000) {
        rez += (char)(0xE0 | (symb &gt;&gt; 12));
        rez += (char)(0x80 | ((symb &gt;&gt; 6) &amp; 0x3F));
        rez += (char)(0x80 | (symb &amp; 0x3F));
    } else if (symb &lt; 0x110000) {
        rez += (char)(0xF0 | (symb &gt;&gt; 18));
        rez += (char)(0x80 | ((symb &gt;&gt; 12) &amp; 0x3F));
        rez += (char)(0x80 | ((symb &gt;&gt; 6) &amp; 0x3F));
        rez += (char)(0x80 | (symb &amp; 0x3F));
    }
    return rez;
}</pre></div><br />
<br />
<br />
also the chat said that 6 bytes is not allowed by RFC 3629. and is considered unsafe, but code here:<br />
<div class="tx-mmforum-pi1-codeheader">JAVASCRIPT</div><div class="tx-mmforum-pi1-codeblock"><style type="text/css"><!----></style><pre style="margin:0px;">std::string encodeUTF8_6Byte(uint32_t symb) {
    std::string result;
&nbsp;
    if (symb &lt; 0x80) {
        result += (char)symb;
    } else if (symb &lt; 0x800) {
        result += (char)(0xC0 | (symb &gt;&gt; 6));
        result += (char)(0x80 | (symb &amp; 0x3F));
    } else if (symb &lt; 0x10000) {
        result += (char)(0xE0 | (symb &gt;&gt; 12));
        result += (char)(0x80 | ((symb &gt;&gt; 6) &amp; 0x3F));
        result += (char)(0x80 | (symb &amp; 0x3F));
    } else if (symb &lt; 0x200000) {
        result += (char)(0xF0 | (symb &gt;&gt; 18));
        result += (char)(0x80 | ((symb &gt;&gt; 12) &amp; 0x3F));
        result += (char)(0x80 | ((symb &gt;&gt; 6) &amp; 0x3F));
        result += (char)(0x80 | (symb &amp; 0x3F));
    } else if (symb &lt; 0x4000000) {
        result += (char)(0xF8 | (symb &gt;&gt; 24));
        result += (char)(0x80 | ((symb &gt;&gt; 18) &amp; 0x3F));
        result += (char)(0x80 | ((symb &gt;&gt; 12) &amp; 0x3F));
        result += (char)(0x80 | ((symb &gt;&gt; 6) &amp; 0x3F));
        result += (char)(0x80 | (symb &amp; 0x3F));
    } else if (symb &lt;= 0x7FFFFFFF) {
        result += (char)(0xFC | (symb &gt;&gt; 30));
        result += (char)(0x80 | ((symb &gt;&gt; 24) &amp; 0x3F));
        result += (char)(0x80 | ((symb &gt;&gt; 18) &amp; 0x3F));
        result += (char)(0x80 | ((symb &gt;&gt; 12) &amp; 0x3F));
        result += (char)(0x80 | ((symb &gt;&gt; 6) &amp; 0x3F));
        result += (char)(0x80 | (symb &amp; 0x3F));
    } else {
        // Invalid range
        result = &quot;?&quot;;
    }
&nbsp;
    return result;
}</pre></div><br />
<br />
      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>arccis</dc:creator>
		</item>
		
		<item>
			<title>utf8</title>
			<link>http://oscada.org/ua/forum/posts///10375/</link>
			<pubDate>Thu, 17 Apr 2025 09:09:26 +0300</pubDate>
			<description> 2) but 0xD83D actually can't be converted directly. it is part of a surrogate pair  (U+D800 through U+DFFF picture1)  and you need to use the following code and apply the formula to them   Yes, I see, that is a real problem and I have not struck in that since have not used such codes. But that is easily fixed for the same code: string TMess::setUTF8( uint32_t symb ) {     string rez;     if(symb &lt; 0x80) rez += (char)symb;     else for(int iCh = 5, iSt = -1; iCh &gt;= 0; iCh--) {         if(iSt &lt; iCh &amp;&amp; (symb&gt;&gt;((iCh-1)*6+(7-iCh)))) iSt = iCh;         if(iCh == iSt) rez += (char)((0xFF&lt;&lt;(7-iCh))|(symb&gt;&gt;(iCh*6)));         else if(iCh &lt; iSt) rez += (char)(0x80|(0x3F&amp;(symb&gt;&gt;(iCh*6))));     }      return rez; }  So, now I have: U+1F600 = F09F9880 U+1FA00 = F09FA880 U+D83D = EDA0BD</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;arccis&quot; wrote:<br /><br />
2) but 0xD83D actually can't be converted directly. it is part of a surrogate pair  (U+D800 through U+DFFF picture1)  and you need to use the following code and apply the formula to them <br />
</div><br />
Yes, I see, that is a real problem and I have not struck in that since have not used such codes.<br />
But that is easily fixed for the same code:<br />
<div class="tx-mmforum-pi1-codeheader">JAVASCRIPT</div><div class="tx-mmforum-pi1-codeblock"><style type="text/css"><!----></style><pre style="margin:0px;">string TMess::setUTF8( uint32_t symb )
{
    string rez;
    if(symb &lt; 0x80) rez += (char)symb;
    else for(int iCh = 5, iSt = -1; iCh &gt;= 0; iCh--) {
        if(iSt &lt; iCh &amp;&amp; (symb&gt;&gt;((iCh-1)*6+(7-iCh)))) iSt = iCh;
        if(iCh == iSt) rez += (char)((0xFF&lt;&lt;(7-iCh))|(symb&gt;&gt;(iCh*6)));
        else if(iCh &lt; iSt) rez += (char)(0x80|(0x3F&amp;(symb&gt;&gt;(iCh*6))));
    }
&nbsp;
    return rez;
}</pre></div><br />
<br />
So, now I have:<br />
U+1F600 = F09F9880<br />
U+1FA00 = F09FA880<br />
U+D83D = EDA0BD      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>utf8</title>
			<link>http://oscada.org/ua/forum/posts///10373/</link>
			<pubDate>Thu, 17 Apr 2025 01:24:22 +0300</pubDate>
			<description>1) on the test 0xD83D indeed both functions (TMess::setUTF8() and setUTF8_new(symb)   ) work the same.  2) but 0xD83D actually can't be converted directly. it is part of a surrogate pair  (U+D800 through U+DFFF picture1)  and you need to use the following code and apply the formula to them  code1 = 0xD83D; code2 = 0xDE00; codePoint = 0x10000 + ((code1 - 0xD800) &lt;&lt; 10) + (code2 - 0xDC00);  after that code codePoint == U+1F600. it is smile. pic2. setUTF8_new - correct, SYS.strFromCharUTF - wrong.  3) I compared the functions  and they differ U+800...U+FFF, U+10000...&gt; . Another example is U+1FA00 pic3.  4) function charCodeAt(0,&quot;UTF-8&quot;);  is correct in 0...10FFF  output1 = setUTF8_new(codePoint); codePoint1 = output1.charCodeAt(0,&quot;UTF-8&quot;);   I used this code for tests   function setUTF8_new(symb){  	   if (symb &lt;= 0x7F) {         return SYS.strFromCharCode(symb);     } else if (symb &lt;= 0x7FF) {         return SYS.strFromCharCode(             0xC0 | (symb &gt;&gt; 6),             0x80 | (symb &amp; 0x3F)         );     } else if (symb &lt;= 0xFFFF) {         return SYS.strFromCharCode(             0xE0 | (symb &gt;&gt; 12),             0x80 | ((symb &gt;&gt; 6) &amp; 0x3F),             0x80 | (symb &amp; 0x3F)         );     } else if (symb &lt;= 0x10FFFF) {         return SYS.strFromCharCode(             0xF0 | (symb &gt;&gt; 18),              	// first 3 bits             0x80 | ((symb &gt;&gt; 12) &amp; 0x3F),			// next 6 bits             0x80 | ((symb &gt;&gt; 6) &amp; 0x3F),			// next 6 bits             0x80 | (symb &amp; 0x3F)							// last 6 bits         );     }  }  // test for surrogate pairs  code1 = 0xD83D; code2 = 0xDE00; codePoint = 0x10000 + ((code1 - 0xD800) &lt;&lt; 10) + (code2 - 0xDC00); codePoint = 0x1FA00; codePoint = 0x800;   //output1 = setUTF8(codePoint); output1 = SYS.strFromCharUTF(codePoint); output2 = setUTF8_new(codePoint);     // test in loop /* for(codePoint = 0x0; codePoint &lt;= 0x10FFFF; codePoint++) {   if (codePoint &gt;= 0xD800 &amp;&amp; codePoint &lt;= 0xDFFF)             continue; // surrogate pairs  	//output1 = setUTF8(codePoint); 	output1 = SYS.strFromCharUTF(codePoint); 	output2 = setUTF8_new(codePoint);  	if (output1 != output2) //break; 		console +=  &quot;U+&quot; + codePoint.toString(16) + &quot;\n&quot;;	 } */ // test  passed charCodeAt(0,&quot;UTF-8&quot;); /*for(codePoint = 0x0; codePoint &lt;= 0x10FFFF; codePoint++) {   if (codePoint &gt;= 0xD800 &amp;&amp; codePoint &lt;= 0xDFFF)             continue; // surrogate pairs  	output1 = setUTF8_new(codePoint); 	codePoint1 = output1.charCodeAt(0,&quot;UTF-8&quot;);   	if (codePoint != codePoint1) break;	 } */  codePointHex = &quot;U+&quot; + codePoint.toString(16) + &quot; bin:&quot;;    ArInt1s = &quot;len=&quot; + output1.length + &quot;; &quot;; ArInt1s += &quot; hex:; dec:; bin:&quot;;  ArInt2s = &quot;len=&quot; + output2.length + &quot;; &quot;; ArInt2s += &quot;hex:; dec:; bin:&quot;;   if (output1 == output2){ 	ArInt2s = &quot;equal&quot;; }  </description>
			<content:encoded><![CDATA[      1) on the test 0xD83D indeed both functions (TMess::setUTF8() and setUTF8_new(symb)   ) work the same. <br />
2) but 0xD83D actually can't be converted directly. it is part of a surrogate pair  (U+D800 through U+DFFF picture1)  and you need to use the following code and apply the formula to them <br />
<div class="tx-mmforum-pi1-codeheader">JAVASCRIPT</div><div class="tx-mmforum-pi1-codeblock"><style type="text/css"><!----></style><pre style="margin:0px;">code1 = 0xD83D;
code2 = 0xDE00;
codePoint = 0x10000 + ((code1 - 0xD800) &lt;&lt; 10) + (code2 - 0xDC00);</pre></div> <br />
after that code codePoint == U+1F600. it is smile. pic2. setUTF8_new - correct, SYS.strFromCharUTF - wrong. <br />
3) I compared the functions  and <strong>they differ U+800...U+FFF, U+10000...&gt; </strong>. Another example is U+1FA00 pic3. <br />
4) function charCodeAt(0,&quot;UTF-8&quot;);  is correct in 0...10FFF <br />
<div class="tx-mmforum-pi1-codeheader">JAVASCRIPT</div><div class="tx-mmforum-pi1-codeblock"><style type="text/css"><!----></style><pre style="margin:0px;">output1 = setUTF8_new(codePoint);
codePoint1 = output1.charCodeAt(0,&quot;UTF-8&quot;);</pre></div><br />
<br />
I used this code for tests<br />
<div class="tx-mmforum-pi1-codeheader">JAVASCRIPT</div><div class="tx-mmforum-pi1-codeblock"><style type="text/css"><!----></style><pre style="margin:0px;">function setUTF8_new(symb){ 
	   if (symb &lt;= 0x7F) {
        return SYS.strFromCharCode(symb);
    } else if (symb &lt;= 0x7FF) {
        return SYS.strFromCharCode(
            0xC0 | (symb &gt;&gt; 6),
            0x80 | (symb &amp; 0x3F)
        );
    } else if (symb &lt;= 0xFFFF) {
        return SYS.strFromCharCode(
            0xE0 | (symb &gt;&gt; 12),
            0x80 | ((symb &gt;&gt; 6) &amp; 0x3F),
            0x80 | (symb &amp; 0x3F)
        );
    } else if (symb &lt;= 0x10FFFF) {
        return SYS.strFromCharCode(
            0xF0 | (symb &gt;&gt; 18),              	// first 3 bits
            0x80 | ((symb &gt;&gt; 12) &amp; 0x3F),			// next 6 bits
            0x80 | ((symb &gt;&gt; 6) &amp; 0x3F),			// next 6 bits
            0x80 | (symb &amp; 0x3F)							// last 6 bits
        );
    } 
}
&nbsp;
// test for surrogate pairs
&nbsp;
code1 = 0xD83D;
code2 = 0xDE00;
codePoint = 0x10000 + ((code1 - 0xD800) &lt;&lt; 10) + (code2 - 0xDC00);
codePoint = 0x1FA00;
codePoint = 0x800;
&nbsp;
&nbsp;
//output1 = setUTF8(codePoint);
output1 = SYS.strFromCharUTF(codePoint);
output2 = setUTF8_new(codePoint);
&nbsp;
&nbsp;
&nbsp;
&nbsp;
// test in loop
/*
for(codePoint = 0x0; codePoint &lt;= 0x10FFFF; codePoint++) {
&nbsp;
 if (codePoint &gt;= 0xD800 &amp;&amp; codePoint &lt;= 0xDFFF)
            continue; // surrogate pairs
&nbsp;
	//output1 = setUTF8(codePoint);
	output1 = SYS.strFromCharUTF(codePoint);
	output2 = setUTF8_new(codePoint);
&nbsp;
	if (output1 != output2) //break;
		console +=  &quot;U+&quot; + codePoint.toString(16) + &quot;\n&quot;;	
}
*/
// test  passed charCodeAt(0,&quot;UTF-8&quot;);
/*for(codePoint = 0x0; codePoint &lt;= 0x10FFFF; codePoint++) {
&nbsp;
 if (codePoint &gt;= 0xD800 &amp;&amp; codePoint &lt;= 0xDFFF)
            continue; // surrogate pairs
&nbsp;
	output1 = setUTF8_new(codePoint);
	codePoint1 = output1.charCodeAt(0,&quot;UTF-8&quot;); 
&nbsp;
	if (codePoint != codePoint1) break;	
}
*/
&nbsp;
codePointHex = &quot;U+&quot; + codePoint.toString(16) + &quot; bin:[&quot; + codePoint.toString(2) + &quot;]&quot;;
&nbsp;
&nbsp;
&nbsp;
ArInt1s = &quot;len=&quot; + output1.length + &quot;; &quot;;
ArInt1s += &quot; hex:[&quot;;
for(i = 0; i &lt; output1.length; i++){ 
	ArInt1s += &quot;0x&quot; + output1.charCodeAt(i).toString(16) + &quot;,&quot;;
}	
&nbsp;
ArInt1s += &quot;]; dec:[&quot;;
for(i = 0; i &lt; output1.length; i++){ 
	ArInt1s += output1.charCodeAt(i).toString(10) + &quot;,&quot;;
}					
ArInt1s += &quot;]; bin:[&quot;;
for(i = 0; i &lt; output1.length; i++){ 
	ArInt1s +=   output1.charCodeAt(i).toString(2,8) + &quot;,&quot;;
}	
&nbsp;
ArInt1s += &quot;]&quot;;
&nbsp;
ArInt2s = &quot;len=&quot; + output2.length + &quot;; &quot;;
ArInt2s += &quot;hex:[&quot;;
&nbsp;
for(i = 0; i &lt; output2.length; i++){ 
	ArInt2s += &quot;0x&quot; + output2.charCodeAt(i).toString(16) + &quot;,&quot;;
}	
&nbsp;
ArInt2s += &quot;]; dec:[&quot;;
for(i = 0; i &lt; output2.length; i++){ 
	ArInt2s += output2.charCodeAt(i).toString(10) + &quot;,&quot;;
}	
ArInt2s += &quot;]; bin:[&quot;;
for(i = 0; i &lt; output2.length; i++){ 
	ArInt2s +=   output2.charCodeAt(i).toString(2,8) + &quot;,&quot;;
}	
&nbsp;
ArInt2s += &quot;]&quot;;
&nbsp;
&nbsp;
if (output1 == output2){
	ArInt2s = &quot;equal&quot;;
}</pre></div>      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>arccis</dc:creator>
		</item>
		
		<item>
			<title>utf8</title>
			<link>http://oscada.org/ua/forum/posts///10372/</link>
			<pubDate>Wed, 16 Apr 2025 11:27:27 +0300</pubDate>
			<description> I tested my library and decided to add decoding and encoding of surrogate pairs like \uD83D\uDE00. It turned out that the SYS.strFromCharUTF function does not work correctly on 3-byte and 4-byte characters. I found the TMess::setUTF8 function in the code, ported it to JavaLikeCalc. I checked it on the entire range (0x0... 0x10FFFF) that it works the same as c++. Then I implemented another function and compared the results.  And what a problem with encoding in three bytes say for 0xD83D, where TMess::setUTF8() returns — 0xEDA0BD. And that is corresponded to https://en.wikipedia.org/wiki/UTF-8 and is written as:  0xD83D:	       1101    100000    111101 0xEDA0BD: 1110 1101 10 100000 10 111101    PS As I understand it, utf8 can be no more than 4 bytes. 6 bytes is an outdated option (before 2003) and is not recommended.  When you don't use such U-Codes, you will not get 6 bytes.</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;arccis&quot; wrote:<br /><br />
I tested my library and decided to add decoding and encoding of surrogate pairs like \uD83D\uDE00. It turned out that the SYS.strFromCharUTF function does not work correctly on 3-byte and 4-byte characters. I found the TMess::setUTF8 function in the code, ported it to JavaLikeCalc. I checked it on the entire range (0x0... 0x10FFFF) that it works the same as c++. Then I implemented another function and compared the results.<br />
</div><br />
And what a problem with encoding in three bytes say for 0xD83D, where TMess::setUTF8() returns — 0xEDA0BD. And that is corresponded to <a href="https://en.wikipedia.org/wiki/UTF-8" target="_blank" class="link_10">https://en.wikipedia.org/wiki/UTF-8</a> and is written as:<br />
<div class="tx-mmforum-pi1-codeheader">JAVASCRIPT</div><div class="tx-mmforum-pi1-codeblock"><style type="text/css"><!----></style><pre style="margin:0px;">0xD83D:	       1101    100000    111101
0xEDA0BD: 1110 1101 10 100000 10 111101</pre></div><br />
<br />
<br />
<div class="tx-mmforum-pi1-pt-quote">&quot;arccis&quot; wrote:<br /><br />
PS As I understand it, utf8 can be no more than 4 bytes. 6 bytes is an outdated option (before 2003) and is not recommended.<br />
</div><br />
When you don't use such U-Codes, you will not get 6 bytes.      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>utf8</title>
			<link>http://oscada.org/ua/forum/posts///10371/</link>
			<pubDate>Tue, 15 Apr 2025 23:01:17 +0300</pubDate>
			<description>I tested my library and decided to add decoding and encoding of surrogate pairs like \uD83D\uDE00. It turned out that the SYS.strFromCharUTF function does not work correctly on 3-byte and 4-byte characters. I found the TMess::setUTF8 function in the code, ported it to JavaLikeCalc. I checked it on the entire range (0x0... 0x10FFFF) that it works the same as c++. Then I implemented another function and compared the results.    function setUTF8(symb){ //this function work like strFromCharUTF in 0...10FFF 	rez = &quot;&quot;; 	if(symb &lt; 0x80) 		rez = SYS.strFromCharCode(symb);   else for( iCh = 5, iSt = -1; iCh &gt;= 0; iCh--) { 		if(iSt &lt; iCh &amp;&amp; (symb&gt;&gt;(iCh*6))) iSt = iCh; 		if(iCh == iSt) rez += SYS.strFromCharCode((0xFF&lt;&lt;(7-iCh))|(symb&gt;&gt;(iCh*6))); 		else if(iCh &lt; iSt) rez += SYS.strFromCharCode(0x80|(0x3F&amp;(symb&gt;&gt;(iCh*6))));     }  	return rez; }   function setUTF8_new(symb){  	   if (symb &lt;= 0x7F) {         return SYS.strFromCharCode(symb);     } else if (symb &lt;= 0x7FF) {         return SYS.strFromCharCode(             0xC0 | (symb &gt;&gt; 6),             0x80 | (symb &amp; 0x3F)         );     } else if (symb &lt;= 0xFFFF) {         return SYS.strFromCharCode(             0xE0 | (symb &gt;&gt; 12),             0x80 | ((symb &gt;&gt; 6) &amp; 0x3F),             0x80 | (symb &amp; 0x3F)         );     } else if (symb &lt;= 0x10FFFF) {         return SYS.strFromCharCode(             0xF0 | (symb &gt;&gt; 18),              	// first 3 bits             0x80 | ((symb &gt;&gt; 12) &amp; 0x3F),			// next 6 bits             0x80 | ((symb &gt;&gt; 6) &amp; 0x3F),			// next 6 bits             0x80 | (symb &amp; 0x3F)							// last 6 bits         );     }  }  // test for surrogate pairs /* code1 = 0xD83D; code2 = 0xDE00; codePoint = 0x10000 + ((code1 - 0xD800) &lt;&lt; 10) + (code2 - 0xDC00); output1 = setUTF8(codePoint); //output2 = SYS.strFromCharUTF(codePoint); output2 = setUTF8_new(codePoint); */   // test in loop for(codePoint = 0x0; codePoint &lt;= 0x10FFFF; codePoint++) {   if (codePoint &gt;= 0xD800 &amp;&amp; codePoint &lt;= 0xDFFF)             continue; // surrogate pairs  	//output1 = setUTF8(codePoint); 	output1 = SYS.strFromCharUTF(codePoint); 	output2 = setUTF8_new(codePoint);  	if (output1 != output2) break; 		 } 	  // test  passed charCodeAt(0,&quot;UTF-8&quot;); /*for(codePoint = 0x0; codePoint &lt;= 0x10FFFF; codePoint++) {   if (codePoint &gt;= 0xD800 &amp;&amp; codePoint &lt;= 0xDFFF)             continue; // surrogate pairs  	output1 = setUTF8_new(codePoint); 	codePoint1 = output1.charCodeAt(0,&quot;UTF-8&quot;);   	if (codePoint != codePoint1) break;	 } */ ArInt1s = &quot;dec:; hex:&quot;;  	 ArInt2s = &quot;dec:; hex:&quot;;   if (output1 == output2){ ArInt2s = &quot;equal&quot;; }     PS As I understand it, utf8 can be no more than 4 bytes. 6 bytes is an outdated option (before 2003) and is not recommended.</description>
			<content:encoded><![CDATA[      I tested my library and decided to add decoding and encoding of surrogate pairs like \uD83D\uDE00. It turned out that the SYS.strFromCharUTF function does not work correctly on 3-byte and 4-byte characters. I found the TMess::setUTF8 function in the code, ported it to JavaLikeCalc. I checked it on the entire range (0x0... 0x10FFFF) that it works the same as c++. Then I implemented another function and compared the results.<br />
<br />
<div class="tx-mmforum-pi1-codeheader">JAVASCRIPT</div><div class="tx-mmforum-pi1-codeblock"><style type="text/css"><!----></style><pre style="margin:0px;">function setUTF8(symb){ //this function work like strFromCharUTF in 0...10FFF
	rez = &quot;&quot;;
	if(symb &lt; 0x80)
		rez = SYS.strFromCharCode(symb);
  else for( iCh = 5, iSt = -1; iCh &gt;= 0; iCh--) {
		if(iSt &lt; iCh &amp;&amp; (symb&gt;&gt;(iCh*6))) iSt = iCh;
		if(iCh == iSt) rez += SYS.strFromCharCode((0xFF&lt;&lt;(7-iCh))|(symb&gt;&gt;(iCh*6)));
		else if(iCh &lt; iSt) rez += SYS.strFromCharCode(0x80|(0x3F&amp;(symb&gt;&gt;(iCh*6))));
    }
&nbsp;
	return rez;
}
&nbsp;
&nbsp;
function setUTF8_new(symb){ 
	   if (symb &lt;= 0x7F) {
        return SYS.strFromCharCode(symb);
    } else if (symb &lt;= 0x7FF) {
        return SYS.strFromCharCode(
            0xC0 | (symb &gt;&gt; 6),
            0x80 | (symb &amp; 0x3F)
        );
    } else if (symb &lt;= 0xFFFF) {
        return SYS.strFromCharCode(
            0xE0 | (symb &gt;&gt; 12),
            0x80 | ((symb &gt;&gt; 6) &amp; 0x3F),
            0x80 | (symb &amp; 0x3F)
        );
    } else if (symb &lt;= 0x10FFFF) {
        return SYS.strFromCharCode(
            0xF0 | (symb &gt;&gt; 18),              	// first 3 bits
            0x80 | ((symb &gt;&gt; 12) &amp; 0x3F),			// next 6 bits
            0x80 | ((symb &gt;&gt; 6) &amp; 0x3F),			// next 6 bits
            0x80 | (symb &amp; 0x3F)							// last 6 bits
        );
    } 
}
&nbsp;
// test for surrogate pairs
/*
code1 = 0xD83D;
code2 = 0xDE00;
codePoint = 0x10000 + ((code1 - 0xD800) &lt;&lt; 10) + (code2 - 0xDC00);
output1 = setUTF8(codePoint);
//output2 = SYS.strFromCharUTF(codePoint);
output2 = setUTF8_new(codePoint);
*/
&nbsp;
&nbsp;
// test in loop
for(codePoint = 0x0; codePoint &lt;= 0x10FFFF; codePoint++) {
&nbsp;
 if (codePoint &gt;= 0xD800 &amp;&amp; codePoint &lt;= 0xDFFF)
            continue; // surrogate pairs
&nbsp;
	//output1 = setUTF8(codePoint);
	output1 = SYS.strFromCharUTF(codePoint);
	output2 = setUTF8_new(codePoint);
&nbsp;
	if (output1 != output2) break;
&nbsp;
}
&nbsp;
&nbsp;
// test  passed charCodeAt(0,&quot;UTF-8&quot;);
/*for(codePoint = 0x0; codePoint &lt;= 0x10FFFF; codePoint++) {
&nbsp;
 if (codePoint &gt;= 0xD800 &amp;&amp; codePoint &lt;= 0xDFFF)
            continue; // surrogate pairs
&nbsp;
	output1 = setUTF8_new(codePoint);
	codePoint1 = output1.charCodeAt(0,&quot;UTF-8&quot;); 
&nbsp;
	if (codePoint != codePoint1) break;	
}
*/
ArInt1s = &quot;dec:[&quot;;
for(i = 0; i &lt; output1.length; i++){ 
	ArInt1s += output1.charCodeAt(i).toString(10) + &quot;,&quot;;
}					
	ArInt1s += &quot;]; hex:[&quot;;
	for(i = 0; i &lt; output1.length; i++){ 
		ArInt1s += &quot;0x&quot; + output1.charCodeAt(i).toString(16) + &quot;,&quot;;
	}	
	ArInt1s += &quot;]&quot;;
&nbsp;
&nbsp;
ArInt2s = &quot;dec:[&quot;;
for(i = 0; i &lt; output2.length; i++){ 
	ArInt2s += output2.charCodeAt(i).toString(10) + &quot;,&quot;;
}					
	ArInt2s += &quot;]; hex:[&quot;;
	for(i = 0; i &lt; output2.length; i++){ 
		ArInt2s += &quot;0x&quot; + output2.charCodeAt(i).toString(16) + &quot;,&quot;;
	}	
	ArInt2s += &quot;]&quot;;
&nbsp;
&nbsp;
if (output1 == output2){
ArInt2s = &quot;equal&quot;;
}</pre></div><br />
<br />
PS As I understand it, utf8 can be no more than 4 bytes. 6 bytes is an outdated option (before 2003) and is not recommended.      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>arccis</dc:creator>
		</item>
		
		<item>
			<title>F&amp;F LE-03MB CT</title>
			<link>http://oscada.org/ua/forum/posts///10314/</link>
			<pubDate>Wed, 14 Feb 2024 08:16:09 +0200</pubDate>
			<description> I think there are typos in calculating Powers(kW, kVA).  P, P_1, P_2, P_3 and Pr should be divided by 10000, not 100 or 1000.   That is the end user who decided such coefficient correct, not me!   The protocol in this counter is called M-bus  Yes, I know.</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;arccis&quot; wrote:<br /><br />
I think there are typos in calculating Powers(kW, kVA).  P, P_1, P_2, P_3 and Pr should be divided by 10000, not 100 or 1000. <br />
</div><br />
That is the end user who decided such coefficient correct, not me!<br />
<br />
<div class="tx-mmforum-pi1-pt-quote">&quot;arccis&quot; wrote:<br /><br />
The protocol in this counter is called <a href="https://en.wikipedia.org/wiki/Meter-Bus" target="_blank" class="link_10">M-bus</a><br />
</div><br />
Yes, I know.      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>F&amp;F LE-03MB CT</title>
			<link>http://oscada.org/ua/forum/posts///10313/</link>
			<pubDate>Tue, 13 Feb 2024 23:18:16 +0200</pubDate>
			<description>Hello Roman! I am reading code of template &quot;FF LE-03MB CT&quot; and the datasheet of this counter. I think there are typos in calculating Powers(kW, kVA).  P, P_1, P_2, P_3 and Pr should be divided by 10000, not 100 or 1000.  Page of the counter The protocol in this counter is called M-bus I do not have this equipment and my opinion is based only on the datasheet.</description>
			<content:encoded><![CDATA[      Hello Roman! I am reading code of template &quot;FF LE-03MB CT&quot; and the datasheet of this counter. I think there are typos in calculating Powers(kW, kVA).  P, P_1, P_2, P_3 and Pr should be divided by 10000, not 100 or 1000. <br />
<a href="https://www.fif.com.pl/en/usage-electric-power-meters/639-electric-energy-meter-le-03mb-ct.html" target="_blank" class="link_10">Page of the counter</a><br />
The protocol in this counter is called <a href="https://en.wikipedia.org/wiki/Meter-Bus" target="_blank" class="link_10">M-bus</a><br />
I do not have this equipment and my opinion is based only on the datasheet.      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>arccis</dc:creator>
		</item>
		
		<item>
			<title>libintl missed symbols since r2914</title>
			<link>http://oscada.org/ua/forum/posts///10275/</link>
			<pubDate>Thu, 31 Aug 2023 15:10:41 +0300</pubDate>
			<description>Yes, the patch works great! Build proceeds without errors. Looking forward to the next revision with a fix.  Thanks Roman.</description>
			<content:encoded><![CDATA[      Yes, the patch works great! Build proceeds without errors.<br />
Looking forward to the next revision with a fix.<br />
<br />
Thanks Roman.      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>dudanov</dc:creator>
		</item>
		
		<item>
			<title>libintl missed symbols since r2914</title>
			<link>http://oscada.org/ua/forum/posts///10274/</link>
			<pubDate>Thu, 31 Aug 2023 14:47:39 +0300</pubDate>
			<description> In revision 2914, changes were made to the configure.ac. Among the changes is a change in the libintl check. As a result, the build process ends with a linking error finding symbols (-lintl is not passed to the linker).  Yes, I have adapted the building to R6220(MIPS) with no internationalisation in whole but with presence mostly empty libintl.h, so I added the declaration checking of the function bindtextdomain()  but I wrong recalled the line  &quot;AC_SEARCH_LIBS(libintl_bindtextdomain, )&quot;.  Try the included patch now!</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;dudanov&quot; wrote:<br /><br />
In revision 2914, changes were made to the <strong>configure.ac</strong>. Among the changes is a change in the <strong>libintl</strong> check. As a result, the build process ends with a linking error finding symbols (<strong>-lintl</strong> is not passed to the linker).<br />
</div><br />
Yes, I have adapted the building to R6220(MIPS) with no internationalisation in whole but with presence mostly empty libintl.h, so I added the declaration checking of the function bindtextdomain()  but I wrong recalled the line  &quot;AC_SEARCH_LIBS(libintl_bindtextdomain, [intl])&quot;.<br />
<br />
Try the included patch now!      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>libintl missed symbols since r2914</title>
			<link>http://oscada.org/ua/forum/posts///10273/</link>
			<pubDate>Thu, 31 Aug 2023 12:52:12 +0300</pubDate>
			<description>Hello.  In revision 2914, changes were made to the configure.ac. Among the changes is a change in the libintl check. As a result, the build process ends with a linking error finding symbols (-lintl is not passed to the linker).  I did not quite understand why and for what purposes the changes were made, otherwise I could have offered an alternative solution.  The log output is below. The C system library is musl.   /usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/openscada/src/.libs/liboscada.so: undefined reference to `libintl_bindtextdomain' /usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/openscada/src/.libs/liboscada.so: undefined reference to `libintl_dgettext' /usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/openscada/src/.libs/liboscada.so: undefined reference to `libintl_textdomain' /usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/openscada/src/.libs/liboscada.so: undefined reference to `_nl_msg_cat_cntr'   Thanks.</description>
			<content:encoded><![CDATA[      Hello.<br />
<br />
In revision 2914, changes were made to the <strong>configure.ac</strong>. Among the changes is a change in the <strong>libintl</strong> check. As a result, the build process ends with a linking error finding symbols (<strong>-lintl</strong> is not passed to the linker).<br />
<br />
I did not quite understand why and for what purposes the changes were made, otherwise I could have offered an alternative solution.<br />
<br />
The log output is below. The C system library is <strong>musl</strong>.<br />
<br />
<div class="tx-mmforum-pi1-codeheader">JAVASCRIPT</div><div class="tx-mmforum-pi1-codeblock"><style type="text/css"><!----></style><pre style="margin:0px;">/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/openscada/src/.libs/liboscada.so: undefined reference to `libintl_bindtextdomain'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/openscada/src/.libs/liboscada.so: undefined reference to `libintl_dgettext'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/openscada/src/.libs/liboscada.so: undefined reference to `libintl_textdomain'
/usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/openscada/src/.libs/liboscada.so: undefined reference to `_nl_msg_cat_cntr'</pre></div><br />
<br />
Thanks.      ]]></content:encoded>
			<category>Bug tracker</category>
			<dc:creator>dudanov</dc:creator>
		</item>
		
	</channel>
</rss>
