UIMsgWrite mehrsprachig benutzen

  • Verwendung laut Doku

    VAR string myMsgArray{5}:= ["Set", "signal", "di1", "high", "please!"];

    UIMsgWrite myHeader, myMsgArray,\Icon:=iconInfo;


    jetzt wollte ich aus den myMsgArray ein 2 Dimensionales für unterschiedliche Sprachen machen

    VAR string myMsgArray{5,2}:= [["Set", "signal", "di1", "high", "please!"],["setzen", "signal", "di1", "high", "bitte!"]];


    UIMsgWrite myHeader, myMsgArray{nLanguage},\Icon:=iconInfo;


    so läufts aber nicht..


    Ist Message Array ein eigener Datentyp?


  • ANZEIGE
  • Hallo RobiMan,

    das Problem ist, das UiMsgWrite ein 1-dimensionales und nicht ein 2-dimensionales String-Array erwartet und das man aus Arrays nur Einzelelemente, in Deinem Falls Strings, auslesen kann.


    Der Zugriff auf das Array mit myMsgArray{nLanguage} erzeugt die folgende Fehlermeldung:

    Type error(36): Incorrect number of indices in index list for array myMsgArray with 2 dimension(s).


    Des Weiteren ist die Deklaration Deines 2-dimensionalen Arrays falsch.

    Anstelle von "VAR string myMsgArray{5,2}:=" müsste die Deklaration wie folgt lauten "VAR string myMsgArray{2,5}:=".


    Die beste Möglichkeit hier wäre den Meldungstext Sprachen abhängig in ein 1-dimensionales Array umzukopieren und dieses dann für die Ausgabe zu verwenden.


    Das ganze könnte dann wie folgt aussehen:



    Wenn es dir um die Anzeige einer Meldung mit dem Signalnamen beim Warten auf ein Signal geht, könntest du die die Warteinstruktion z.B. WaitDi mit dem optionalen Parameter "Visualize" erweitern:

    Code
    waitdi di1,high\Visualize;

    dann erscheint z,B. die folgende Meldung in der Sprache die am FlexPendant eingestellt ist:

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

    2 Mal editiert, zuletzt von Micky ()

  • Hey,


    Hab das selbst noch nicht so ausprobiert, aber abgesehen von der angesprochenen Vertauschung der Indizes, könntest du ja vielleicht eine Struktur anlegen und diese in ein Array packen.


    Also sowas wie:


    RECORD langMsg

    string Msg{5};

    ENDRECORD


    VAR langMsg lMsg{2} := ...


    ....


    lMsg{n}.Msg


    vielleicht geht das.


    Ich selbst hab hier einen bisschen anderen Ansatz mal implementiert. Einfach ein Modul mit allen Meldungen etc... anlgen. Wenn die Sprache umgestellt werden soll, einfach Modul mit den Definitionen in anderer Sprache ersetzen.


    BG Reinhard

Hilfe und Support für ABB Roboter Programmierung, Konfiguration, Inbetriebnahme finden Sie hier im ABB Roboter Forum. ABB Rapid Programmierung ist einfach, die Roboterforum Community hilft sehr gerne.

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden