Syntaxfragen (Felder)

  • Servus roboterforum,


    ein paar Fragen möchte ich gern stellen. Ich komme mit Feldfunktionen in der KRL nicht richtig klar...


    1.) Kopien von Feldern anlegen (Alles spielt sich in der .DAT ab.:(


    Code
    DECL FRAME list_id[2]
    list_id[1]={x 0, y 0, z 0, a 0, b 0, c 0}
    list_id[2]={x 0, y 0, z 0, a 0, b 0, c 0}
    
    
    DECL FRAME copy[2]
    copy[]=list_id[]


    Ich will einfach eine exakte Kopie des Feldes anlegen, aber der Compiler meckert! Das muss doch irgendwie gehen, oder?


    Auch das einfache Kopieren von Elementen klappt nicht:

    Code
    DECL FRAME list_id[2]
    list_id[1]={x 0, y 0, z 0, a 0, b 0, c 0}
    list_id[2]={x 0, y 0, z 0, a 0, b 0, c 0}
    
    
    DECL FRAME copy[2]
    copy[1]=list_id[1]


    2.) Felder mit variabler Länge kann ich auch nicht erstellen, schade...

    Code
    INT i=50
    DECL FRAME list_id[i]


    Wäre über Aufklärung sehr dankbar. Entweder ist die KRL limitiert oder ich :uglyhammer_2:


    Gruß
    Nils

    Es grüßt<br /><br />der Nils

  • Schritt für Schritt zum Roboterprofi!
  • Hallo Nils,
    ich kenne das so (hier mit 33 Punkten):
    DECL POS Punkt[33,1]


    Punkt[1,1]={x 1500.0,y 0.0,z 500.0,a 0.0,b 90.0,c 0.0,s 'B0110',t 'B00011011'}
    ...


    Gruß, robots

  • Hallo und danke,


    was du beschreibst geht bei mir auch, ist aber nicht das was ich möchte...


    Ich möchte nicht explizit Werte zuweisen (wie von Dir gezeigt), sondern eine Kopie erstellen. So wie es in meinem ersten Code-Beispiel gezeigt ist.


    Weitere Vorschläge?


    Nils

    Es grüßt<br /><br />der Nils

  • Hallo,


    du sagst, es spielt sich alles in einer *.dat ab.

    Code
    DECL FRAME copy[2]
    copy[1]=list_id[1]


    funktioniert da nicht. Die Zuweisung zwischen zwei Variablen oder Feldelementen muss zur Laufzeit in der *.src erfolgen. Die Datenliste erlaubt nur Deklarationen und Initialisierungen.
    Du könntest dir aber ein kleines Prog schreiben, in dem du das Feld kopierst:


    Beachten musst du, dass nach der ersten Anweisung im Programm keine Deklarationen mehr möglich sind. Zuweisungen (ausser Initialisierungen) sind in der *.dat nicht möglich.


    Gruß ... gooselk

  • /agree @ gooselk


    und ja Felder mit variabler Länge gibt es nicht. Doch kannst du je nach Situation zum Ziel kommen, indem du Unterprogramme oder Funktionen verwendest. Da können nämlich Felder mit variabler Länge verwendet werden.

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