<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to ARRAY Index aus der Dimensionierung wird überschritten.</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/d12c56c4d4/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/d12c56c4d4/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Deutsch/thread/d12c56c4d4/</id><updated>2020-02-28T16:19:52.298000Z</updated><subtitle>Recent posts to ARRAY Index aus der Dimensionierung wird überschritten.</subtitle><entry><title>ARRAY Index aus der Dimensionierung wird überschritten.</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/d12c56c4d4/?limit=25#c472" rel="alternate"/><published>2020-02-28T16:19:52.298000Z</published><updated>2020-02-28T16:19:52.298000Z</updated><author><name>HeHo</name><uri>https://forge.codesys.com/u/heho/</uri></author><id>https://forge.codesys.com11475f996677bb3d87ec50f20825ed97fa1a41c0</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo, auszug aus der CoDeSys-Hilfe&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Zitat:&lt;/strong&gt;&lt;br/&gt;
Funktion Checkbounds&lt;br/&gt;
Wenn Sie in Ihrem Projekt eine Funktion mit Namen CheckBounds definieren, können Sie damit Bereichsüberschreitungen in Arrays automatisch überprüfen! Der Name der Funktion ist festgelegt und darf nur diese Bezeichnung besitzen. &lt;br/&gt;
Beispiel für die Funktion CheckBounds:&lt;br/&gt;
FUNCTION CheckBounds : DINT&lt;br/&gt;
VAR_INPUT&lt;br/&gt;
 index, lower, upper: DINT;&lt;br/&gt;
END_VAR&lt;br/&gt;
IF  index &amp;lt; lower THEN&lt;br/&gt;
 CheckBounds := lower;&lt;br/&gt;
ELSIF  index &amp;gt; upper THEN&lt;br/&gt;
 CheckBounds := upper;&lt;br/&gt;
ELSE  CheckBounds := index;&lt;br/&gt;
END_IF&lt;br/&gt;
Das folgende Beispielprogramm zum Testen der CheckBounds-Funktion greift außerhalb der Grenzen eines definierten Arrays zu. Die Funktion CheckBounds gewährleistet, dass der Wert TRUE nicht an die Stelle A&lt;span&gt;[10]&lt;/span&gt;, sondern an der oberen noch gültigen Bereichsgrenze A&lt;span&gt;[7]&lt;/span&gt; zugewiesen wird. Mit der CheckBounds-Funktion können somit Zugriffe außerhalb von Array-Grenzen korrigiert werden.&lt;br/&gt;
Test Programm für die CheckBounds Funktion:&lt;br/&gt;
PROGRAM PLC_PRG&lt;br/&gt;
VAR&lt;br/&gt;
 a: ARRAY&lt;span&gt;[0..7]&lt;/span&gt; OF BOOL;&lt;br/&gt;
 b: INT:=10;&lt;br/&gt;
END_VAR&lt;br/&gt;
a&lt;span&gt;[b]&lt;/span&gt;:=TRUE;&lt;br/&gt;
Achtung: Die in der CheckLib enthaltene CheckBounds-Funktion ist eine Beispiellösung! Prüfen Sie vor Verwendung der Bibliothek, ob die Funktion in Ihrem Sinne arbeitet oder implementieren Sie eine entsprechende CheckBounds-Funktion als Baustein direkt in Ihrem Projekt.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Gruß&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>ARRAY Index aus der Dimensionierung wird überschritten.</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/d12c56c4d4/?limit=25#92e3" rel="alternate"/><published>2020-02-28T16:19:44.511000Z</published><updated>2020-02-28T16:19:44.511000Z</updated><author><name>Anonymous</name><uri>https://forge.codesys.com/u/*anonymous/</uri></author><id>https://forge.codesys.com02fc56e72afc5826296db6b4c5531549d54cfde2</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;em&gt;Originally created by:&lt;/em&gt; mg&lt;/p&gt;
&lt;p&gt;Hallo Leute&lt;/p&gt;
&lt;p&gt;Wenn nun durch meine    Dummheit    mal der Index eines Array ÜBER und UNTER die Definitionsgrenzen hinausläuft und dann von dort Daten gelesen oder gar dorthin geschrieben werden, WELCHE DATEN WERDEN GELESEN und WO SCHREIBT DIE STEUERUNG HIN. Lt meinen Erfahrungen werden die Grenze nicht abgefragt. (werde ich in Zukunft EXPLIZIT jedes mal machen). Es soll da ja eine Funktion Checkbounds geben, aber die habe ich bisher nie verwendet. Hatte auch noch nie eine derart verzwickte Situation. ODER kann man einen Parameter setzen, daß die Steuerung bei einem derartigen Fehler GEKILLT wird. Lt. meine Erfahrungen führt das zu den selben Fehlern wie ein verbogener Pointer.    totale Katastrophe.&lt;/p&gt;
&lt;p&gt;Mit bestem Dank&lt;br/&gt;
Mg&lt;/p&gt;
&lt;p&gt;Nachtrag: &lt;br/&gt;
- Bachmann MX207 schreibt beim UNTERSCHREITEN auf irgendeine Speicherzelle innerhalb des Array (bei eindimensionalen Arrays)&lt;br/&gt;
   ... schreibt beim ÜBERSCHREITEN irgendwohin im gesamten Speicherabbild (außerhalb des dimensionierten Bereichs)&lt;br/&gt;
  Nachtrag zum Nachtrag: sieht nur so aus. Der Zugriff ist eher undefiniert.&lt;br/&gt;
- Wago 750-880 irgendwohin im gesamten Speicherabbild (außerhalb des dimensionierten Bereichs)&lt;br/&gt;
- Wago 758-874 irgendwohin im gesamten Speicherabbild (außerhalb des dimensionierten Bereichs)&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>