<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to File Schreiben und als String lesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/425259f776/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/425259f776/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Deutsch/thread/425259f776/</id><updated>2020-02-28T07:24:28.988000Z</updated><subtitle>Recent posts to File Schreiben und als String lesen</subtitle><entry><title>File Schreiben und als String lesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/425259f776/?limit=25#a4b3" rel="alternate"/><published>2020-02-28T07:24:28.988000Z</published><updated>2020-02-28T07:24:28.988000Z</updated><author><name>boling</name><uri>https://forge.codesys.com/u/boling/</uri></author><id>https://forge.codesys.com1698704a159f6dddf97bc8f992d62eca17d792ca</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Besten Dank für die guten Tips, ich habe inzwischen die für meine Bedürfnisse angepasste Lösung gefunden und es funktioniert.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>File Schreiben und als String lesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/425259f776/?limit=25#85e2" rel="alternate"/><published>2020-02-28T07:24:26.660000Z</published><updated>2020-02-28T07:24:26.660000Z</updated><author><name>Erik Böhm</name><uri>https://forge.codesys.com/u/erik-boehm/</uri></author><id>https://forge.codesys.come370578f00fde012ac2e54cf643723f7ec14bbcc</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo&lt;/p&gt;
&lt;p&gt;Ich lese eine Zeile (beendet mit CR,LF (13d,10d)) aus einem File folgendermassen aus:&lt;/p&gt;
&lt;p&gt;Read File to byFileBuffer: array&lt;span&gt;[1..8192]&lt;/span&gt; of byte;&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;dwFileSize:=SysFileGetSize(FileName:=strFileName);&lt;/p&gt;
&lt;p&gt;IF dwFileSize &amp;lt; 8192 THEN&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;dwFileRead&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;SysFileOpen&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;FileName&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;strFileName&lt;/span&gt;, &lt;span class="nv"&gt;Mode&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;r&lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;dwFileRead&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;  &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;error&lt;/span&gt;: &lt;span class="nv"&gt;file&lt;/span&gt; &lt;span class="nv"&gt;couldn&lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;t be opened *)&lt;/span&gt;

    &lt;span class="nv"&gt;bError&lt;/span&gt;  :&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;TRUE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

    &lt;span class="nv"&gt;wErrorID&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;RETURN&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;ELSE&lt;/span&gt;

    &lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="nv"&gt;i&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="mi"&gt;8192&lt;/span&gt; &lt;span class="nv"&gt;BY&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;DO&lt;/span&gt;    &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;Erase&lt;/span&gt; &lt;span class="nv"&gt;Filebuffer&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;

        &lt;span class="nv"&gt;byFileBuffer&lt;/span&gt;[&lt;span class="nv"&gt;i&lt;/span&gt;] :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

    &lt;span class="nv"&gt;END_FOR&lt;/span&gt;

    &lt;span class="nv"&gt;dwReadSize&lt;/span&gt;  :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SysFileRead&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;dwFileRead&lt;/span&gt;, &lt;span class="nv"&gt;Buffer&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;byFileBuffer&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;, &lt;span class="nv"&gt;Size&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;dwFileSize&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

    &lt;span class="nv"&gt;SysFileClose&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;dwFileRead&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

    &lt;span class="nv"&gt;dwFileRead&lt;/span&gt;  :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

    &lt;span class="nv"&gt;iFilePos&lt;/span&gt;        :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

&lt;span class="nv"&gt;END_IF&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;ELSE    (&lt;em&gt; Max. Filesize exceeded &lt;/em&gt;)&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;bError&lt;/span&gt;  :&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;TRUE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

&lt;span class="nv"&gt;wErrorID&lt;/span&gt;    :&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;RETURN&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;END_IF&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;GetLine from byFileBuffer&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;strLine :=  '';&lt;/p&gt;
&lt;p&gt;pstr    := ADR(aby&lt;span&gt;[0]&lt;/span&gt;);&lt;/p&gt;
&lt;p&gt;WHILE iFilePos &amp;lt; dwFileSize DO&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;iFilePos&lt;/span&gt;    :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;iFilePos&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;aby&lt;/span&gt;[&lt;span class="mi"&gt;0&lt;/span&gt;]  :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;byFileBuffer&lt;/span&gt;[&lt;span class="nv"&gt;iFilePos&lt;/span&gt;]&lt;span class="c1"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;aby&lt;/span&gt;[&lt;span class="mi"&gt;0&lt;/span&gt;] &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;

    &lt;span class="k"&gt;EXIT&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

&lt;span class="nv"&gt;END_IF&lt;/span&gt;

&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;aby&lt;/span&gt;[&lt;span class="mi"&gt;0&lt;/span&gt;] &lt;span class="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;13&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;

    &lt;span class="nv"&gt;strLine&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;CONCAT&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;strLine&lt;/span&gt;,&lt;span class="nv"&gt;pstr&lt;/span&gt;&lt;span class="o"&gt;^&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;/pre&gt;&lt;/div&gt;


&lt;p&gt;END_WHILE&lt;/p&gt;
&lt;p&gt;IF iFilePos &amp;gt; dwFileSize THEN&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;bError&lt;/span&gt;  &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;wErrorID&lt;/span&gt;    &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;END_IF&lt;/p&gt;
&lt;p&gt;IF LEN(strLine)&amp;lt;1 THEN&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;bRunning&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;NOT&lt;/span&gt; &lt;span class="nv"&gt;bDone&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;RETURN&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;END_IF&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;Ich hab das ganze als library ausgeführt, die dann Files im Ini Format, also mit Group und Key Tags schreibt, bzw. liest.&lt;/p&gt;
&lt;p&gt;Wahlweise als BOOL, WORD, LREAL, STRING&lt;/p&gt;
&lt;p&gt;z.B.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;[ACHSPARAMETER]&lt;/span&gt; &amp;lt;- GROUP TAG&lt;/p&gt;
&lt;p&gt;Acceleration=1000.0 &amp;lt;- KEY + LREAL Value&lt;/p&gt;
&lt;p&gt;Hoffe das hilft dir.&lt;/p&gt;
&lt;p&gt;Prinzipiell kannst du auch die ganze lib haben, die kann dann noch verschlüsseln, entschlüsseln undwasweissichnochalles.&lt;/p&gt;
&lt;p&gt;Aber da gibts (noch) keine vollständige Doku dazu.&lt;/p&gt;
&lt;p&gt;MfG&lt;/p&gt;
&lt;p&gt;Erik&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>File Schreiben und als String lesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/425259f776/?limit=25#86c0" rel="alternate"/><published>2020-02-28T07:24:20.368000Z</published><updated>2020-02-28T07:24:20.368000Z</updated><author><name>Ralph Holz</name><uri>https://forge.codesys.com/u/ralph-holz/</uri></author><id>https://forge.codesys.com94b0bdedd2e5fb4e15af9a98b322f705f32821c4</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo,&lt;/p&gt;
&lt;p&gt;Ich habe ein kleines Beispiel zum Schreiben einer kommaseparierten CSV datei angehängt. &lt;/p&gt;
&lt;p&gt;Leider hab ich auf die Schnelle nichts zum Lesen gefunden, deshalb hier ein bischen geschreibsel was haoffentlich weiterhilft:&lt;/p&gt;
&lt;p&gt;SysFileRead hat 3 Parameter&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;File das File-Handle das bei SysFileOpen zurückgeliefert wird &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Buffer dahin werden die in 3. angegebene Anzahl der Bytes geschrieben&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Size siehe 2.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Übrigens zum Ausprobieren eignet sich herforagend die in einer Standard CoDeSys enthaltene SoftSPS PlcWinNT die ohne funktionelle Einschränkung  als Demo 2 Stunden läuft. Sind die 2 Stunden abgelaufen beendet sie sich und kann aber gleich wider gestartet werden.&lt;/p&gt;
&lt;p&gt;&lt;a class="" href="https://forum-de.codesys.com//download/file.php?id=168" rel="nofollow"&gt;CSV File Append.zip &lt;span&gt;&lt;span&gt;[5.16 KiB]&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="" href="https://forum-de.codesys.com//download/file.php?id=167" rel="nofollow"&gt;CSV Datei einmalig.zip &lt;span&gt;&lt;span&gt;[4.99 KiB]&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>File Schreiben und als String lesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/425259f776/?limit=25#7a89" rel="alternate"/><published>2020-02-28T07:24:18.115000Z</published><updated>2020-02-28T07:24:18.115000Z</updated><author><name>boling</name><uri>https://forge.codesys.com/u/boling/</uri></author><id>https://forge.codesys.com47bdbb3648c8427249e1b5ebdf4cdf564bed6487</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo,&lt;/p&gt;
&lt;p&gt;mit der SysLibFile kann ich ja strings in ein File schreiben. Will ich aber diese wieder einlesen, kann ich mit SysLibRead die Daten nur als DWORD holen. Habe ich da was falsch verstanden?&lt;/p&gt;
&lt;p&gt;Ich habe mir vorgestellt, dass ich diverse Zahlenwerte mit einem Textzeichen (z.B. *) trenne und dann beim einlesen dieses Zeichen auswerte.&lt;/p&gt;
&lt;p&gt;Alternativ könnte ich beim schreiben eine feste Zeichenlänge wählen und die Zahlen in Strings umwandeln.&lt;/p&gt;
&lt;p&gt;Leider ist der Controller im Einsatz und damit nicht für Pröbeleien verfügbar...&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>