-> Hier kostenlos registrieren
Hallo zusammen,
ich habe ein kleines Problem mit meinem Code und ich komme einfach nicht drauf, warum es nicht funktioniert.... Ich hoffe, hier Hilfe zu finden.
Ausgangssituation:
Ich habe ein Fehler Word, dass ich bitweise auslese. Jedes einzelne Bit im Word steht für einen eigenen Fehler und damit eine eigene Fehlermeldung, die in einem Schieberegister ausgegeben werden soll. Das auswerten der einzelnen Bits funktioniert schon. Die korrespondierenden Fehlermeldungen der Bits werden dann in einem String-Array gespeichert, was mich zu meinem Problem führt.
In einer For-Schleife gehe ich die einzelnen Fehlermeldungen durch, die in meinem String-Array "HsAnstehendeFehlermeldung" gespeichert sind. Wenn ein Platz im Array ungleich eines leeren Strings ist, dann wird die Fehlernachricht an dieser Stelle in eine Hilfsvariable "HsFehlerNachricht" geschrieben. Diese Hilfsvariable wird dann in eine Schieberegister-Variavble "StringArrayFehlerNachrichten" geschoben. Mein Problem ist, dass wenn mehrere Bits im Fehler Word auf "TRUE" stehen - nehmen wir mal an es sind zwei, das Schieberegister nur den ersten Fehler schiebt. Der Zweite Fehler, wird zwar in die Variable "StringArrayFehlerNachrichten" auf den Platz [0] geschrieben, jedoch nicht geschoben.
Wenn ich also das Fehler Word zum Beispiel mit dem Dezimalwert "3" steuere, müssten dann letztendlich der Fehler1 und der Fehler2 in das String-Array im Schieberegister geschrieben werden.
Allerdings wird nur die erste Fehlernachricht im Schieberegister geschoben. Die zweite Nachricht bleibt dann in StringArrayFehlerNachrichten[0] liegen. Der String in der Variable StringArrayFehlerNachrichten[0] wird nicht visualisiert und wird nur für das schreiben der Strings in das Schieberegister verwendet.
Meine Frage:
Müsste hier nicht jedes mal die Schleife des Schieberegisters ausgeführt werden, wenn eine Nachricht in der Variable "HsAnstehendeFehlermeldung" steht ?
Ich verstehe nicht ganz, warum nicht alle Fehlermeldungen geschoben werden.
REGION Schieberegister
FOR #j := 0 TO 15 DO
IF #HsAnstehendeFehlermeldung[#j] <> '' THEN
#HsFehlerNachricht := #HsAnstehendeFehlermeldung[#j];
// Hier wird der momentane Fehlerstring in das Schieberegister geschoben
StringArrayFehlerNachrichten[0] := #HsFehlerNachricht ;
// Schieberegister
FOR #k := 1 TO #HiLängeDesFehlerArrays DO
// Hier wird die Nachricht im Schieberegister bewegt
StringArrayFehlerNachrichten[#HiLängeDesFehlerArrays] := StringArrayFehlerNachrichten[#HiLängeDesFehlerArrays - 1];
#HiLängeDesFehlerArrays := #HiLängeDesFehlerArrays - 1;
END_FOR;
#HsFehlerNachricht := '';
// Damit wird das String-Array in dem die Fehlernachrichten ursprünglich gespeichert werden, wieder zurückgesetzt.
#HsAnstehendeFehlermeldung[#j] := '';
END_IF;
END_FOR;
END_REGION
Ich hoffe, ich konnte mein Problem einigermaßen verständlich erklären....
Vielen Dank schon einmal im Voraus!
ich habe ein kleines Problem mit meinem Code und ich komme einfach nicht drauf, warum es nicht funktioniert.... Ich hoffe, hier Hilfe zu finden.
Ausgangssituation:
Ich habe ein Fehler Word, dass ich bitweise auslese. Jedes einzelne Bit im Word steht für einen eigenen Fehler und damit eine eigene Fehlermeldung, die in einem Schieberegister ausgegeben werden soll. Das auswerten der einzelnen Bits funktioniert schon. Die korrespondierenden Fehlermeldungen der Bits werden dann in einem String-Array gespeichert, was mich zu meinem Problem führt.
In einer For-Schleife gehe ich die einzelnen Fehlermeldungen durch, die in meinem String-Array "HsAnstehendeFehlermeldung" gespeichert sind. Wenn ein Platz im Array ungleich eines leeren Strings ist, dann wird die Fehlernachricht an dieser Stelle in eine Hilfsvariable "HsFehlerNachricht" geschrieben. Diese Hilfsvariable wird dann in eine Schieberegister-Variavble "StringArrayFehlerNachrichten" geschoben. Mein Problem ist, dass wenn mehrere Bits im Fehler Word auf "TRUE" stehen - nehmen wir mal an es sind zwei, das Schieberegister nur den ersten Fehler schiebt. Der Zweite Fehler, wird zwar in die Variable "StringArrayFehlerNachrichten" auf den Platz [0] geschrieben, jedoch nicht geschoben.
Wenn ich also das Fehler Word zum Beispiel mit dem Dezimalwert "3" steuere, müssten dann letztendlich der Fehler1 und der Fehler2 in das String-Array im Schieberegister geschrieben werden.
Allerdings wird nur die erste Fehlernachricht im Schieberegister geschoben. Die zweite Nachricht bleibt dann in StringArrayFehlerNachrichten[0] liegen. Der String in der Variable StringArrayFehlerNachrichten[0] wird nicht visualisiert und wird nur für das schreiben der Strings in das Schieberegister verwendet.
Meine Frage:
Müsste hier nicht jedes mal die Schleife des Schieberegisters ausgeführt werden, wenn eine Nachricht in der Variable "HsAnstehendeFehlermeldung" steht ?
Ich verstehe nicht ganz, warum nicht alle Fehlermeldungen geschoben werden.
REGION Schieberegister
FOR #j := 0 TO 15 DO
IF #HsAnstehendeFehlermeldung[#j] <> '' THEN
#HsFehlerNachricht := #HsAnstehendeFehlermeldung[#j];
// Hier wird der momentane Fehlerstring in das Schieberegister geschoben
StringArrayFehlerNachrichten[0] := #HsFehlerNachricht ;
// Schieberegister
FOR #k := 1 TO #HiLängeDesFehlerArrays DO
// Hier wird die Nachricht im Schieberegister bewegt
StringArrayFehlerNachrichten[#HiLängeDesFehlerArrays] := StringArrayFehlerNachrichten[#HiLängeDesFehlerArrays - 1];
#HiLängeDesFehlerArrays := #HiLängeDesFehlerArrays - 1;
END_FOR;
#HsFehlerNachricht := '';
// Damit wird das String-Array in dem die Fehlernachrichten ursprünglich gespeichert werden, wieder zurückgesetzt.
#HsAnstehendeFehlermeldung[#j] := '';
END_IF;
END_FOR;
END_REGION
Ich hoffe, ich konnte mein Problem einigermaßen verständlich erklären....
Vielen Dank schon einmal im Voraus!