<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to read csv into string array help</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/e8320aa959/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Engineering/thread/e8320aa959/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Engineering/thread/e8320aa959/</id><updated>2020-02-27T13:47:48.126000Z</updated><subtitle>Recent posts to read csv into string array help</subtitle><entry><title>read csv into string array help</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/e8320aa959/?limit=25#948b" rel="alternate"/><published>2020-02-27T13:47:48.126000Z</published><updated>2020-02-27T13:47:48.126000Z</updated><author><name>burnzy</name><uri>https://forge.codesys.com/u/burnzy/</uri></author><id>https://forge.codesys.com169e7cc3dbd3c437fc7f4cef0a9a05fced2f0bc3</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Thank you very much! I'll see what I can do with the information given.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>read csv into string array help</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/e8320aa959/?limit=25#6325" rel="alternate"/><published>2020-02-27T13:47:48.050000Z</published><updated>2020-02-27T13:47:48.050000Z</updated><author><name>mirasoft</name><uri>https://forge.codesys.com/u/mirasoft/</uri></author><id>https://forge.codesys.com0a4557c5640ddabe170eefd7d9f3a31268481d4f</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;dFx hat geschrieben:&lt;/strong&gt;&lt;br/&gt;
I had also to do byte array parsing, and I've some question about the exemple code :&lt;br/&gt;
MID, is a string function. Isn't it limitated to 255 bytes long ? (meaning your file won't be fully read if containing more than 255 chars)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yes. My example should only clarify the functionality. I would do the following:&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>read csv into string array help</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/e8320aa959/?limit=25#ecd7" rel="alternate"/><published>2020-02-27T13:47:47.998000Z</published><updated>2020-02-27T13:47:47.998000Z</updated><author><name>dFx</name><uri>https://forge.codesys.com/u/dfx/</uri></author><id>https://forge.codesys.com1a242d9cf2431665399f3e19e6e56411d949f6c0</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;I had also to do byte array parsing, and I've some question about the exemple code :&lt;br/&gt;
MID, is a string function. Isn't it limitated to 255 bytes long ? (meaning your file won't be fully read if containing more than 255 chars)&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>read csv into string array help</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/e8320aa959/?limit=25#52a1" rel="alternate"/><published>2020-02-27T13:47:47.870000Z</published><updated>2020-02-27T13:47:47.870000Z</updated><author><name>mirasoft</name><uri>https://forge.codesys.com/u/mirasoft/</uri></author><id>https://forge.codesys.com29382671b44db567dffbab0116320ffd72a469ba</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;you have to split the file content by your self using the line sperator '$R$N'. Here is a very simple example:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;PROGRAM&lt;/span&gt; &lt;span class="n"&gt;PLC_PRG&lt;/span&gt;
&lt;span class="n"&gt;VAR&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="n"&gt;buffer&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt;  &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;STRING&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'6.41052162$R$N11.52562684$R$N'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt;  &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;ARRAY&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;..&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;OF&lt;/span&gt; &lt;span class="nb"&gt;REAL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="n"&gt;lineStart&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="n"&gt;pos&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt;  &lt;/span&gt; &lt;span class="err"&gt;  &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt;  &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;STRING&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="n"&gt;numIndex&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;END_VAR&lt;/span&gt;
&lt;span class="n"&gt;VAR&lt;/span&gt; &lt;span class="n"&gt;CONSTANT&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="n"&gt;lineSep&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt;  &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;STRING&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'$R$N'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;END_VAR&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;lineStart&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;numIndex&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="nv"&gt;pos&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="nv"&gt;TO&lt;/span&gt; &lt;span class="nv"&gt;LEN&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;buffer&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;DO&lt;/span&gt;
   &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;buffer&lt;/span&gt;[&lt;span class="nv"&gt;pos&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;] &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;lineSep&lt;/span&gt;[&lt;span class="mi"&gt;0&lt;/span&gt;] &lt;span class="nv"&gt;AND&lt;/span&gt; &lt;span class="nv"&gt;buffer&lt;/span&gt;[&lt;span class="nv"&gt;pos&lt;/span&gt;] &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;lineSep&lt;/span&gt;[&lt;span class="mi"&gt;1&lt;/span&gt;] &lt;span class="k"&gt;THEN&lt;/span&gt;
      &lt;span class="nv"&gt;line&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;MID&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;buffer&lt;/span&gt;, &lt;span class="nv"&gt;pos&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nv"&gt;lineStart&lt;/span&gt;, &lt;span class="nv"&gt;lineStart&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
      &lt;span class="nv"&gt;num&lt;/span&gt;[&lt;span class="nv"&gt;numIndex&lt;/span&gt;] :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;STRING_TO_REAL&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;line&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
      &lt;span class="nv"&gt;numIndex&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;numIndex&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
      &lt;span class="nv"&gt;lineStart&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;pos&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;LEN&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;lineSep&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;END_IF&lt;/span&gt;
&lt;span class="nv"&gt;END_FOR&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Tip: Read the file contents into an array of byte and then work with SysMemCmp and SysMemCpy.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>read csv into string array help</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/e8320aa959/?limit=25#fc8d" rel="alternate"/><published>2020-02-27T13:47:47.795000Z</published><updated>2020-02-27T13:47:47.795000Z</updated><author><name>burnzy</name><uri>https://forge.codesys.com/u/burnzy/</uri></author><id>https://forge.codesys.come2d6ec576ff929c216a164779ca39ab7d2284349</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hey all, I am currently working on a project where I am trying to read data from a file into an array of string and then convert those strings into reals. The program is reading the document but the values are being read into only the first row of the array like this:&lt;/p&gt;
&lt;p&gt;str&lt;span&gt;[1]&lt;/span&gt; output is '6.41052162$R$N11.52562684$R$N'&lt;/p&gt;
&lt;p&gt;rather than splitting into separate rows. Any guidance would be much appreciated, this is all new to me.&lt;/p&gt;
&lt;p&gt;PROGRAM PLC_PRG&lt;br/&gt;
VAR&lt;br/&gt;
hFile : SysFile.RTS_IEC_HANDLE;&lt;br/&gt;
error : POINTER TO SysFile.RTS_IEC_RESULT;&lt;br/&gt;
pBuffer : POINTER TO BYTE;&lt;br/&gt;
fileSize : __XWORD;&lt;br/&gt;
accessM : SysFile.ACCESS_MODE;&lt;br/&gt;
fileName : STRING;&lt;br/&gt;
readFile : __XWORD;&lt;br/&gt;
pArray : ARRAY &lt;span&gt;[0..4]&lt;/span&gt; OF POINTER TO STRING;&lt;br/&gt;
str : ARRAY &lt;span&gt;[1..3]&lt;/span&gt; OF STRING;&lt;br/&gt;
// pStr : POINTER TO ARRAY &lt;span&gt;[0..2]&lt;/span&gt; OF STRING;&lt;br/&gt;
num : ARRAY &lt;span&gt;[1..3]&lt;/span&gt; OF REAL;&lt;br/&gt;
END_VAR&lt;/p&gt;
&lt;p&gt;fileName := 'azi_data.txt';&lt;br/&gt;
accessM := SysFile.AM_READ;&lt;br/&gt;
fileSize := SysFile.SysFileGetSize(szFileName := fileName , error);&lt;br/&gt;
hFile := SysFile.SysFileOpen(fileName,accessM,error);&lt;br/&gt;
readFile := SysFile.SysFileRead(hFile,ADR(str),SIZEOF(str),error);&lt;br/&gt;
//pStr := ADR(fileSize);&lt;br/&gt;
num&lt;span&gt;[1]&lt;/span&gt; := STRING_TO_REAL(str&lt;span&gt;[1]&lt;/span&gt;);&lt;br/&gt;
num&lt;span&gt;[2]&lt;/span&gt; := STRING_TO_REAL(str&lt;span&gt;[2]&lt;/span&gt;);&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>