DELETE-Baustein
Kurz-Information
Name |
DELETE |
→POE-Typ |
|
Kategorie |
|
Konform zur →IEC-Norm |
derzeit eingeschränkt
|
Grafische Schnittstelle |
|
Verfügbar ab |
Version 1.31.0 (für logi.CAD 3) |
Funktionalität
Der Baustein löscht einen Teil aus einem String und liefert den neu entstandenen String.
Am Eingang IN geben Sie eine Zeichenkette ein. Am Eingang L geben Sie die Anzahl der zu löschenden Zeichen ein (= die Länge des zu löschenden Teils) und am Eingang P die Position, ab der die Zeichen zu löschen sind.
Spezialfälle (siehe unter " Beispiel für Verwendung im ST-Editor" ) :
Bei L = 0 werden keine Zeichen gelöscht. D.h. der Baustein liefert den String, so wie er bei IN anliegt. Der Ausgang ENO wird hier auf den Wert TRUE gesetzt.
Falls ein negativer Wert bei L eingegeben ist, werden die entsprechenden Zeichen vor der Position P im String gelöscht. Hier wird der Ausgang ENO auf den Wert FALSE gesetzt. Falls Zeichen außerhalb des sichtbaren Bereichs gelöscht würden (vor Position 1), werden gar keine Zeichen gelöscht .
Falls der Wert 0 oder ein negativer Wert bei P eingegeben ist, werden keine Zeichen gelöscht . Auch hier wird der Ausgang ENO auf den Wert FALSE gesetzt.
Falls der Wert für L und/oder P > die Länge des Strings für IN ist, werden keine Zeichen gelöscht oder nur die Zeichen, die im sichtbaren Bereich liegen. Auch hier wird der Ausgang ENO auf den Wert FALSE gesetzt.
logi.CAD 3 bestimmt die Positionen von Zeichen in einem String so: 1, 2, ..., n. Dabei entspricht 1 dem Zeichen ganz links im String und n der Länge des Strings.
Kombinationen von 3 Zeichen, beginnend mit dem Dollar-Zeichen ($) und gefolgt von 2 Hexadezimal-Ziffern, gelten als ein einziges Zeichen. Beispiel: Der String '$B15' (entspricht '±5') besteht somit aus 2 Zeichen. Weitere Beispiele für diese Kombinationen finden Sie unter →Zeichenfolge-Literal.
Eingänge, Ergebniswert
|
Bezeichner |
Beschreibung |
|
Eingänge: |
IN |
STRING |
Eingangswert (= String, in dem gelöscht wird) |
L |
USINT, UINT, UDINT, ULINT, SINT, INT, DINT oder LINT |
Anzahl der zu löschenden Zeichen |
|
P |
USINT, UINT, UDINT, ULINT, SINT, INT, DINT oder LINT |
Startposition im Eingangswert |
|
Ergebniswert: |
– |
STRING |
|
Der Eingang EN und der Ausgang ENO sind für den →Aufruf
des Bausteins verfügbar. Siehe "Ausführungssteuerung: EN, ENO" für Informationen zum Eingang EN und zum Ausgang ENO.
Informieren Sie sich unter:
"Bausteine für sichere Logik", ob dieser Baustein für das Entwickeln von sicherheitsrelevanten Anwendungen unterstützt wird.
"Kennzeichnung von sicherer Logik im FBS-Editor", welche Auswirkung die Verwendung des Bausteins als Baustein für sichere Logik hat.
Interne Fehlerdiagnose für Baustein
Der Baustein prüft den vermeintlichen Ergebniswert.
Falls der Ergebniswert im zur Verfügung stehenden Speicher nicht abgebildet werden kann (der Ergebniswert ist zu groß), wird der Ausgang ENO des Bausteins auf den Wert FALSE (oder eine Entsprechung) gesetzt. Wenn Sie Bausteine mit STRING-Werten verschachtelt verwenden, beachten Sie, dass der zur Verfügung stehende Speicher beschränkt ist (siehe "Wie kann der Ergebniswert bei verschachtelten String-Bausteinen vollständig abgebildet werden?" für Details und Beispiele).
Zusätzlich prüft der Baustein die anliegenden Werte, ob auf nicht vorhandene Zeichenpositionen im String zugegriffen wird. Dies ist der Fall, wenn der Wert für L oder P > die Länge des Strings für IN ist, ein negativer Wert bei L oder P
eingegeben
ist oder der Wert 0 bei P
eingegeben
ist. Auch in diesen Fällen wird der Ausgang ENO des Bausteins auf den Wert FALSE (oder eine Entsprechung) zurückgesetzt.
Beispiel für Verwendung im ST-Editor
PROGRAM Test
VAR
result1, result3, result4, result5, result6, result7, result8, result9 : STRING[
12
];
result2 : STRING[
2
];
CheckENO1, CheckENO2, CheckENO3, CheckENO4, CheckENO5, CheckENO6, CheckENO7, CheckENO8, CheckENO9 : BOOL;
END_VAR
result1 := DELETE(IN :=
'a string'
, L :=
3
, P :=
2
, ENO => CheckENO1);
(* The variable
'result1'
evaluates to <
'aring'
>. The variable
'CheckENO1'
evaluates to
'TRUE'
. *)
result2 := DELETE(IN :=
'a string'
, L :=
3
, P :=
2
, ENO => CheckENO2);
(* The variable
'result2'
evaluates to <
'ar'
>. The variable
'CheckENO2'
evaluates to
'FALSE'
. Reason:
'result2'
is declared with length
'2'
and the would-be
return
value exceeds
this
length. *)
result3 := DELETE(IN :=
'a string'
, L :=
0
, P :=
4
, ENO => CheckENO3);
(* The variable
'result3'
evaluates to <
'a string'
>. The variable
'CheckENO3'
evaluates to
'TRUE'
. *)
result4 := DELETE(IN :=
'a string'
, L := -
2
, P :=
5
, ENO => CheckENO4);
(* The variable
'result4'
evaluates to <
'a ring'
>. The variable
'CheckENO4'
evaluates to
'FALSE'
. Reason: negative value
for
'L'
*)
result5 := DELETE(IN :=
'a string'
, L := -
10
, P :=
5
, ENO => CheckENO5);
(* The variable
'result5'
evaluates to <
'a string'
>. The variable
'CheckENO5'
evaluates to
'FALSE'
. Reason: negative value
for
'L'
*)
(* None of the characters are deleted because characters outside the visible range would be deleted. *)
result6 := DELETE(IN :=
'a string'
, L :=
4
, P := -
1
, ENO => CheckENO6);
(* The variable
'result6'
evaluates to <
'a string'
>. The variable
'CheckENO6'
evaluates to
'FALSE'
. Reason: negative value
for
'P'
*)
result7 := DELETE(IN :=
'a string'
, L :=
15
, P :=
4
, ENO => CheckENO7);
(* The variable
'result7'
evaluates to <
'a s'
>. The variable
'CheckENO7'
evaluates to
'FALSE'
. Reason: value
for
'L'
> the length of string
'a string'
*)
result8 := DELETE(IN :=
'a string'
, L :=
3
, P :=
15
, ENO => CheckENO8);
(* The variable
'result8'
evaluates to <
'a string'
>. The variable
'CheckENO8'
evaluates to
'FALSE'
. Reason: value
for
'P'
> the length of string
'a string'
*)
result9 := DELETE(IN :=
'$B15 deviation'
, L :=
3
, P :=
1
, ENO => CheckENO9);
(* The variable
'result9'
evaluates to <
'deviation'
>. The variable
'CheckENO9'
evaluates to
'TRUE'
. *)
END_PROGRAM
Bei der Erstellung Ihrer Anwendung im ST-Editor erstellen Sie den Aufruf eines Bausteins, indem Sie den laut Syntax erforderlichen Text eintippen oder die Inhaltshilfe verwenden.