<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to string aus einem Array bilden</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/adad4dd7bc/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/adad4dd7bc/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Deutsch/thread/adad4dd7bc/</id><updated>2020-02-28T08:38:15.513000Z</updated><subtitle>Recent posts to string aus einem Array bilden</subtitle><entry><title>string aus einem Array bilden</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/adad4dd7bc/?limit=25#d56b" rel="alternate"/><published>2020-02-28T08:38:15.513000Z</published><updated>2020-02-28T08:38:15.513000Z</updated><author><name>Schuero</name><uri>https://forge.codesys.com/u/schuero/</uri></author><id>https://forge.codesys.comb067e285ae980093da8b570fd400c0de189f9f63</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Vielen Dank Michael_W&lt;/p&gt;
&lt;p&gt;Ich habe die Funktion auf meine Bedürfnisse reduziert.&lt;/p&gt;
&lt;p&gt;FUNCTION bArray_to_String : STRING(20)&lt;/p&gt;
&lt;p&gt;VAR_INPUT&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;p_Ab&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;POINTER&lt;/span&gt; &lt;span class="n"&gt;TO&lt;/span&gt; &lt;span class="n"&gt;ARRAY&lt;/span&gt;&lt;span class="o"&gt;[&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;255&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="n"&gt;OF&lt;/span&gt; &lt;span class="n"&gt;BYTE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;b_Start&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BYTE&lt;/span&gt;&lt;span class="o"&gt;(&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;235&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="n"&gt;b_Laenge&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BYTE&lt;/span&gt;&lt;span class="o"&gt;(&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;20&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;END_VAR&lt;/p&gt;
&lt;p&gt;VAR&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;b_max_Lange&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BYTE&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;ps&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;POINTER&lt;/span&gt; &lt;span class="n"&gt;TO&lt;/span&gt; &lt;span class="n"&gt;BYTE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;INT&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;END_VAR&lt;/p&gt;
&lt;p&gt;(&lt;em&gt;Adresszuweisung&lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;ps := ADR(bArray_to_String);&lt;/p&gt;
&lt;p&gt;(&lt;em&gt;Schreibe in den String&lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;FOR i := BYTE_TO_INT(b_Start) TO (b_Laenge + b_Start) DO&lt;/p&gt;
&lt;p&gt;ps^ := p_Ab^&lt;span&gt;[i]&lt;/span&gt;;&lt;/p&gt;
&lt;p&gt;ps := ps + 1;&lt;/p&gt;
&lt;p&gt;END_FOR;&lt;/p&gt;
&lt;p&gt;(&lt;em&gt;Pointer auf "NULL" setzen &lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;ps^ := 0;&lt;/p&gt;
&lt;p&gt;rennt sehr gut&lt;/p&gt;
&lt;p&gt;(Die Funktion wertet den "typRING_BUFFER" eines "SERIAL_INTERFACE" von Wago aus)&lt;/p&gt;
&lt;p&gt;Besten Dank.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>string aus einem Array bilden</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/adad4dd7bc/?limit=25#7b9a" rel="alternate"/><published>2020-02-28T08:38:12.933000Z</published><updated>2020-02-28T08:38:12.933000Z</updated><author><name>Anonymous</name><uri>https://forge.codesys.com/u/*anonymous/</uri></author><id>https://forge.codesys.com06df8e1d1c2cf0ee8edbb72ff18bc61eb72a220e</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;em&gt;Originally created by:&lt;/em&gt; Michael_W&lt;/p&gt;
&lt;p&gt;Bei  w &lt;a class="" href="http://www.oscat.de" rel="nofollow"&gt;www.oscat.de&lt;/a&gt; w  gibts freundlicherweise eine sehr große Funktionsbibliothek. Darin ist die gesuchte Funktion enthalten. Ich habe die Plain-Text-Version geladen und das Wichtigste der Funktion unten eingefügt. Hoffe, es hilft.&lt;/p&gt;
&lt;p&gt;(*&lt;/p&gt;
&lt;p&gt;version 1.3 12. jun. 2008&lt;/p&gt;
&lt;p&gt;programmer  hugo&lt;/p&gt;
&lt;p&gt;tested by   oscat&lt;/p&gt;
&lt;p&gt;this function will retrieve a string from an array of byte starting at position start and stop at position stop.&lt;/p&gt;
&lt;p&gt;the function needs to be called:    buffer_TO_String(adr("array"),sizeof("array"), start, stop);&lt;/p&gt;
&lt;p&gt;because this function works with pointers its very time efficient and it needs no extra memory.&lt;/p&gt;
&lt;p&gt;*)&lt;/p&gt;
&lt;p&gt;FUNCTION BUFFER_TO_STRING : STRING(STRING_LENGTH)&lt;/p&gt;
&lt;p&gt;VAR_INPUT&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;PT&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;POINTER&lt;/span&gt; &lt;span class="n"&gt;TO&lt;/span&gt; &lt;span class="n"&gt;ARRAY&lt;/span&gt;&lt;span class="o"&gt;[&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;32767&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="n"&gt;OF&lt;/span&gt; &lt;span class="n"&gt;BYTE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;SIZE&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;UINT&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;START&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;UINT&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;STOP&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;UINT&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;END_VAR&lt;/p&gt;
&lt;p&gt;VAR&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;ps&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;POINTER&lt;/span&gt; &lt;span class="n"&gt;TO&lt;/span&gt; &lt;span class="n"&gt;BYTE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;INT&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;END_VAR&lt;/p&gt;
&lt;p&gt;(&lt;em&gt; @END_DECLARATION := '0' &lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;ps := ADR(BUFFER_TO_STRING);&lt;/p&gt;
&lt;p&gt;start :=MIN(start, size);&lt;/p&gt;
&lt;p&gt;stop := MIN(stop, size);&lt;/p&gt;
&lt;p&gt;(&lt;em&gt; check for maximum string_length &lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;IF UINT_TO_INT(stop - start + 1) &amp;gt;= STRING_LENGTH THEN&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;stop&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;start&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;INT_TO_UINT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;STRING_LENGTH&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&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;FOR i := UINT_TO_INT(start) TO UINT_TO_INT(stop) DO&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;ps&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pt&lt;/span&gt;&lt;span class="o"&gt;^[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;

&lt;span class="n"&gt;ps&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;END_FOR;&lt;/p&gt;
&lt;p&gt;(&lt;em&gt; terminate the string &lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;ps^ := 0;&lt;/p&gt;
&lt;p&gt;END_FUNCTION&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>string aus einem Array bilden</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/adad4dd7bc/?limit=25#578a" rel="alternate"/><published>2020-02-28T08:38:05.971000Z</published><updated>2020-02-28T08:38:05.971000Z</updated><author><name>Schuero</name><uri>https://forge.codesys.com/u/schuero/</uri></author><id>https://forge.codesys.com61f5c7ba242beae23d6de9507d8242a68782e966</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo.&lt;/p&gt;
&lt;p&gt;Ich versuche gerade aus einem Array of Byte einen String zu bilden.&lt;/p&gt;
&lt;p&gt;var &lt;/p&gt;
&lt;p&gt;Array: ARRAY &lt;span&gt;[0..max_Arraylaenge]&lt;/span&gt; OF BYTE;&lt;/p&gt;
&lt;p&gt;s_String: String(80);&lt;/p&gt;
&lt;p&gt;p_Temp_1: POINTER TO BYTE;&lt;/p&gt;
&lt;p&gt;p_Temp_2: POINTER TO BYTE;&lt;/p&gt;
&lt;p&gt;b_dummy:  BYTE;&lt;/p&gt;
&lt;p&gt;end_var&lt;/p&gt;
&lt;p&gt;(&lt;strong&gt;&lt;em&gt;*&lt;/em&gt;Programmausschnitt&lt;/strong&gt;&lt;strong&gt;&lt;em&gt;*&lt;/em&gt;&lt;/strong&gt;&lt;strong&gt;*&lt;/strong&gt;*)&lt;/p&gt;
&lt;p&gt;p_Temp_1:=ADR(s_Sting);  &lt;/p&gt;
&lt;p&gt;p_Temp_2:=ADR(Array&lt;span&gt;[9]&lt;/span&gt;); &lt;/p&gt;
&lt;p&gt;FOR i_Zaehler:= 1 TO 6 DO&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt; &lt;span class="nt"&gt;b_dummy&lt;/span&gt;&lt;span class="o"&gt;:=(&lt;/span&gt;&lt;span class="nt"&gt;p_Temp_2&lt;/span&gt;&lt;span class="o"&gt;^);&lt;/span&gt;

 &lt;span class="nt"&gt;p_Temp_1&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="nt"&gt;ADR&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;b_dummy&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

 &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;erh&lt;/span&gt;&lt;span class="err"&gt;ö&lt;/span&gt;&lt;span class="nt"&gt;he&lt;/span&gt; &lt;span class="nt"&gt;die&lt;/span&gt; &lt;span class="nt"&gt;Pointer&lt;/span&gt; &lt;span class="nt"&gt;um&lt;/span&gt; &lt;span class="nt"&gt;1&lt;/span&gt; &lt;span class="nt"&gt;Stelle&lt;/span&gt;&lt;span class="o"&gt;*)&lt;/span&gt;

 &lt;span class="nt"&gt;p_Temp_1&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;p_Temp_1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nt"&gt;1&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

 &lt;span class="nt"&gt;p_Temp_2&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;p_Temp_2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nt"&gt;1&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;END_FOR&lt;/p&gt;
&lt;p&gt;(&lt;strong&gt;&lt;em&gt;*&lt;/em&gt;Programmausschnitt Ende&lt;/strong&gt;&lt;strong&gt;&lt;em&gt;*&lt;/em&gt;&lt;/strong&gt;**)&lt;/p&gt;
&lt;p&gt;Zwar rennen die Pointer durch den String / Array aber der String füllt sich nicht mit dem Inhalt vom Array.&lt;/p&gt;
&lt;p&gt;Was mach ich falsch?&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>