Guten Tag,
ersteinmal vielen Dank für die vielen hilfreichen Einträge, die mir schon oft weitergeholfen haben.
Jetzt eine Frage zur Ausgabe von Hinweismeldungen.
Habe versucht die ganze Meldungsaugabe in ein Unterprogramm zu packen. Dieses möchte ich aus verschiedenen Hauptprogrammen aufrufen und nur 2 Variablen (Text + Zahl) übergeben.
Hier mal mein Code, der leider nicht ganz funktioniert:
&ACCESS RVO1
&REL 54
&PARAM TEMPLATE = C:\KRC\Roboter\Template\ExpertVorgabe
&PARAM EDITMASK = *
DEF msg_hinweis(TEXT[],ANSWER)
DECL INT ANSWER
DECL INT OFFSET
DECL CHAR TEXT[]
DECL STATE_T STATE
DECL MSG_T EMPTY_MSG
OFFSET=0
EMPTY_MSG={MSG_T: VALID FALSE,RELEASE FALSE,TYP #NOTIFY,MODUL[] " ",KEY[] " ",PARAM_TYP #VALUE,PARAM[] " ",DLG_FORMAT[] " ",ANSWER 0}
;------------------HINWEISMELDUNG------------------
$MSG_T=EMPTY_MSG
$MSG_T.MODUL[]="Info"
;$MSG_T.KEY[]=TEXT[]
;$MSG_T.KEY[]="Zahl = %1"
$MSG_T.KEY[]=StrAdd(TEXT[], " %1")
SWRITE($MSG_T.PARAM[],STATE,OFFSET,"%1d",ANSWER)
$MSG_T.PARAM_TYP=#VALUE
$MSG_T.VALID=TRUE
END
Probleme sind:
- die Textvariable mit dem Platzhalter (%1) zu verknüpfen
$MSG_T.KEY[]=" Textvariable %1"
- Der Robi fährt in einer For-Next-Schleife verschiedene Punkte an. In der Schleife soll die aktuelle Punktnummer ausgegeben werden. Doch dann werden die Punkte nicht mehr überschliffen. bzw. die Meldung nicht angezeigt.
...
FOR Lage=1 TO nLagen
p04.Y=p04.Y+1
p04.E1=p04.E1-360
LIN p04 C_DIS
msg_hinweis(TEXT[],Lage)
ENDFOR
Bin sehr dankbar für eure Hilfe.
Gruss Lars