Hilfe ????? Beckhoff Twincat

dachico212

Level-2
Beiträge
34
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo meine Lieben,

kann jemanden von euch mir bitte helfen, ich will, dass die farben in Array speichern . und zwar die Aktuellste Farbe in der erste Position speichern und die alten einfach ein Position verschieben .



code.jpg so sieht mein Code aus, die For-Schleife funktioniert leider nicht richtig.



(********************************************************************************)

(*
ENUM Farben
TYP
(
ROT,
BLAU,
GELB
);
END_TYP
*)
----------------------------------------------
VAR
eFarben : Farben;
aFeld : array [0..9] of Farben := LEER,LEER,LEER,....;LEER;

i : usint;
xLEER : bool;
END_VAR
----------------------------------------------

(* prüfen, ob Position 0 belegt ist *)
if aFeld[0] = LEER then
xLEER := TRUE; (* nicht belegt *)
else
xLEER := FALSE; (* belegt *)
end_if

if xLEER then (* wenn nicht belegt *)
aFeld[0] := eFarben; (* erste Position belegen *)
else (* wenn belegt *)
for i:=0 by 1 to 9 do (* Verschiebung durchfüheren *)
aFeld[i+1] := aFeld;

end_for

aFeld[0] := eFarben; (* erste Position mit aktuellem Wert überschreiben *)

end_if






vielen Dank
 
Hi,
so auf die schnelle:
Du sprichst auf jeden Falls ein Indizes an, welches ausserhalb der Definition liegt:
Arr[0..9] und läufst mit 0 to 9 : aFeld[9+1] auf einen fehler !!!

Ich würde von 0 bis 8 laufen und dann Feld[i+1] := Feld

Dann den Rest...

LG
Shrimps
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde das Array per "MEMMOVE" verschieben
Code:
MEMMOVE(    destAddr := ADR([COLOR=#333333]aFeld[/COLOR][1]),
        srcAddr := ADR([COLOR=#333333]aFeld[/COLOR]),
        n := (SIZEOF([COLOR=#333333]aFeld[/COLOR]) - SIZEOF([COLOR=#333333]aFeld[/COLOR][0]))
        );
 
Zuletzt bearbeitet:
Hallo dachico,

manchmal ist die Richtung und zeitliche Reihenfolge entscheidend!

Code:
FOR i:=0 TO [COLOR=#ff0000]8[/COLOR] BY 1 DO        (* Verschiebung durchfüheren *)
    aFeld[[COLOR=#ff0000]9-[/COLOR]i] := aFeld[[COLOR=#ff0000]8-[/COLOR]i];
END_FOR;

Liebe Grüße
Lilli
 
Zurück
Oben