nobby_nobbs
Level-1
- Beiträge
- 31
- Reaktionspunkte
- 3
-> Hier kostenlos registrieren
Hallo
Ich sitze da auf einer IBN und komme bei einem Problem nicht weiter, welches nicht wirklich kompliziert sein kann:
Das Problem ist, dass ich am RET_VAL immer ne 8 stehen habe. Habe mal einige Teile des FC's auskommentiert und festgestellt, dass einfach jede IF-Bedingung erfüllt wird. Es liegt daran das aus der MID-Funktion ein Leerstring rauskommt. An was kann das liegen??
Gruess ig
Ich sitze da auf einer IBN und komme bei einem Problem nicht weiter, welches nicht wirklich kompliziert sein kann:
Code:
FUNCTION FC7 : Byte
AUTHOR: mab
VERSION: '0.1'
// history
// datum name version änderungsgrund
// ---- ---- ------- -------------
// 08.01.09 mab 0.1 erstellt
VAR_INPUT
i_referenzcode: STRING[24]; // Referenzcode zum Vergleich
i_produkt1: STRING[24]; // Vergleichscode Produkt 1
i_produkt2: STRING[24]; // Vergleichscode Produkt 2
i_produkt3: STRING[24]; // Vergleichscode Produkt 3
i_produkt4: STRING[24]; // Vergleichscode Produkt 4
i_produkt5: STRING[24]; // Vergleichscode Produkt 5
i_produkt6: STRING[24]; // Vergleichscode Produkt 6
i_produkt7: STRING[24]; // Vergleichscode Produkt 7
i_produkt8: STRING[24]; // Vergleichscode Produkt 8
END_VAR
VAR_TEMP
l_vergleicher: INT; // vergleichsvariable
l_referenz: STRING[8]; // Da Eingäng nicht direkt an EQ_STRNG übergeben werden können
l_produkt: STRING[8]; // Vergleichscode Produkt
l_temp_string: STRING[24];
END_VAR
l_temp_string:=i_referenzcode;
IF EQ_STRNG(S1 := l_referenz ,S2 := 'NOREAD') THEN
l_vergleicher:=9;
ELSE
l_referenz:=MID(IN:=l_temp_string, L:=8, P:=5);
l_temp_string:=i_produkt1;
l_produkt:=MID(IN:=l_temp_string, L:=8, P:=5);
IF EQ_STRNG(S1 := l_referenz ,S2 := l_produkt) THEN
l_vergleicher:=1;
END_IF;
l_temp_string:=i_produkt2;
l_produkt:=MID(IN:=l_temp_string, L:=8, P:=5);
IF EQ_STRNG(S1 := l_referenz ,S2 := l_produkt) THEN
l_vergleicher:=2;
END_IF;
l_temp_string:=i_produkt3;
l_produkt:=MID(IN:=l_temp_string, L:=8, P:=5);
IF EQ_STRNG(S1 := l_referenz ,S2 := l_produkt) THEN
l_vergleicher:=3;
END_IF;
l_temp_string:=i_produkt4;
l_produkt:=MID(IN:=l_temp_string, L:=8, P:=5);
IF EQ_STRNG(S1 := l_referenz ,S2 := l_produkt) THEN
l_vergleicher:=4;
END_IF;
l_temp_string:=i_produkt5;
l_produkt:=MID(IN:=l_temp_string, L:=8, P:=5);
IF EQ_STRNG(S1 := l_referenz ,S2 := l_produkt) THEN
l_vergleicher:=5;
END_IF;
l_temp_string:=i_produkt6;
l_produkt:=MID(IN:=l_temp_string, L:=8, P:=5);
IF EQ_STRNG(S1 := l_referenz ,S2 := l_produkt) THEN
l_vergleicher:=6;
END_IF;
l_temp_string:=i_produkt7;
l_produkt:=MID(IN:=l_temp_string, L:=8, P:=5);
IF EQ_STRNG(S1 := l_referenz ,S2 := l_produkt) THEN
l_vergleicher:=7;
END_IF;
l_temp_string:=i_produkt8;
l_produkt:=MID(IN:=l_temp_string, L:=8, P:=5);
IF EQ_STRNG(S1 := l_referenz ,S2 := l_produkt) THEN
l_vergleicher:=8;
END_IF;
END_IF;
CASE l_vergleicher OF
1 : FC7:=1;
2 : FC7:=2;
3 : FC7:=3;
4 : FC7:=4;
5 : FC7:=5;
6 : FC7:=6;
7 : FC7:=7;
8 : FC7:=8;
9 : FC7:=9;
ELSE:
FC7:=9;
END_CASE;
END_FUNCTION
Das Problem ist, dass ich am RET_VAL immer ne 8 stehen habe. Habe mal einige Teile des FC's auskommentiert und festgestellt, dass einfach jede IF-Bedingung erfüllt wird. Es liegt daran das aus der MID-Funktion ein Leerstring rauskommt. An was kann das liegen??
Gruess ig