Sonstiges FIND liefert keine 1?

vollmi

Level-3
Beiträge
5.436
Reaktionspunkte
1.410
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi zusammen

Ich hab grade ein sonderbares Phänomen mit FIND sowohl in TIA wie auch Step7.

Code:
#ergebnis:= FIND(IN1:=#teststring, IN2:=#ueberpruefungsstring);

Wenn ich im #Teststring '1ZM' und im #ueberpruefungsstring 'ZM' habe liefert Find eine 2 zurück.
Was für mich logisch ist.

Wenn ich in #Teststring 'ZM' und im #ueberpruefungsstring 'ZM' habe liefert Find eine 0 zurück.
warum denn das? müsste da nicht eine 1 zurückkommen weil ZM an der ersten Stelle gefunden wurde?

mfg René
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hatte ein problem das vermutlich durch FIND verursacht wird auf einer 317 2PN/DP und einer 416 2DP, und wollte das nun mal auf der PLCSIM ausprobieren und hab jetzt nur FIND alleine auf PLCSIM ausprobiert.

FIND_1.jpgFIND_2.jpg

mfG René
 
Wenn die Strings exakt gleich sind, dann gibt mir mein PLCSIM auch 0 zurück.
Es scheint "schon immer" eine Besonderheit vom FIND-Baustein zu sein, die aus Kompatibilitätsgründen wohl nie geändert werden wird. Schade nur, daß dieses Verhalten nicht in der Dokumentation steht.
Workaround: zusätzlich mit EQ_STRNG die Strings vergleichen.

Harald
 
Aber da sieht man mal wieder, man sollte unter Zeitdruck keine Bausteine programmieren welche nicht komplett getestet sind. Selbst wenn sie Theoretisch funktionieren würden :)

Danke dir.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dieses Verhalten ist doch schon dokumentiert (doch leider nicht in der Referenz-Bausteinbeschreibung)

Wie erfolgt die Parametrierung der Eingänge "IN1" und "IN2" der IEC-Standard-Funktion FC11 (FIND)?
Die zu suchende Zeichenkette "IN2" darf nicht gleich groß sein wie die Zeichenkette "IN1". Sind die beiden Zeichenketten identisch, dann meldet der Baustein FC11 (FIND) auch Null. Verwenden Sie bei Anfragen auf Gleichheit den FC10 (EQ_STRNG) oder kombinieren Sie die beiden Bausteine.

Harald
 
Ja, das kenne ich auch, ich hab damals an den #TestString einfach noch ein Leerzeichen (mit concat) angehängt, dann reicht ein einfaches Find.
 
Ja, das kenne ich auch, ich hab damals an den #TestString einfach noch ein Leerzeichen (mit concat) angehängt, dann reicht ein einfaches Find.

Ich bin halt drüber gestolpert. Weil ich die zwei Zeichen eigentlich im ganzen String suchen wollte. Und erst später einige Zeichenfolgen vorgekommen sind welche auch an anderer Stelle mit völlig anderer Bedeutung vorhanden waren. Also wollte ich den Find mit MID direkt nur auf die zwei relevante Stellen einschränken. Und auf einmal funktionierte garnix mehr. Eben weil auch bei zutreffenden Zeichen eine 0 Geworfen wurde wo vorhin was gefunden wurde.

ich war halt zu faul noch EQ_Strng zu laden, für etwas was FIND ja auch kann. ;)

mfG René
 
Zurück
Oben