Buffer comp
BUFFER_COMP¶
| Type Funktion | INT |
| Input PT1 | POINTER (Adresse des ersten Puffers) |
| SIZE1 | INT (Größe des ersten Puffers) |
| PT2 | POINTER (Adresse des zweiten Puffers) |
| SIZE2 | INT (Größe des zweiten Puffers) |
| START | INT (Suchbeginn ab Start) |
| Output | INT (gefundene Position) |
| Die Funktion BUFFER_COMP überprüft ob der Inhalt des Arrays PT2 im Array PT1 ab der Position START vorkommt. Wird PT2 in PT1 gefunden, so gibt die Funktion die Position in PT1 beginnend bei 0 an. Wird PT2 nicht in PT1 gefunden, wird -1 zurückgegeben. BUFFER_COMP kann auch zum Vergleich von 2 gleichgroßen Arrays verwendet werden. | |
| Beim Aufruf wird der Funktion ein Pointer auf das zu bearbeitende Array und dessen Größe in Bytes übergeben. Unter CoDeSys lautet der Aufruf | BUFFER_COMP(ADR(BUF1), SIZEOF(BUF1), ADR(BUF2), SIZEOF(BUF2)), wobei BUF1 und BUF2 die Namen des zu manipulierenden Arrays sind. ADR ist eine Standardfunktion, die den Pointer auf das Array ermittelt und SIZEOF ist eine Standardfunktion, die die Größe des Arrays ermittelt. Die Funktion liefert nur TRUE zurück. Das durch den Pointer angegebene Array wird direkt im Speicher manipuliert. Diese Art der Bearbeitung von Arrays ist äußerst effizient, da kein zusätzlicher Speicher benötigt wird und keine Übergabewerte kopiert werden müssen. |

Beispiel:
BUFFER_COMP(ADR(BUF1), SIZEOF(BUF1), ADR(BUF2), SIZEOF(BUF2))