array füllen

Startseite Foren Deutsches LiveCode-Forum array füllen

Schlagwörter: 

Ansicht von 5 Antwort-Themen
  • Autor
    Beiträge
    • #19575
      livecode_pit
      Teilnehmer

      Hallo,

      dann mal gleich die nächste Frage. Muss ich in LC jedes Element einzeln in einen array schieben, oder gibt es so was in der Art put 1,2 into a[]

      on mouseUp pButtonNumber
         put 1,2 into  a
         answer a[2]
         
         put 1 into a[1]
         put 2 into a[2]
         
         put a[2]   
      end mouseUp

      LC meckert zwar nicht, bringt beim answer aber nichts raus. Das put a[2] funktioniert.

      Grüße
      pit

    • #19577
      Klaus Major
      Verwalter

      Yo, LC meckert nicht, obwohl Du versuchst einen Key aus einer Variablen anzuzeigen,
      die gar kein Array ist. Ist doch ein netter Zug! 🙂

      Sowas geht mit einem REPEAT Loop, vielleicht nicht gerade in diesem Beispiel,
      aber im Prinzip schon.

    • #19581
      livecode_pit
      Teilnehmer

      Hallo Klaus,

      klar, wenn ich einen array nur mit NUllen füllen will, kann ich das mit einer Schleife machen, aber deshalb habe ich ja das Beispiel mit unterschiedlichen Werten gebracht.

      Grüße
      pit

    • #19582
      Klaus Major
      Verwalter

      Hi Pit

      es kommt auf die Art der Daten an, die ins Array sollen.
      Nicht alles kann man automatisieren mit einem Loop.

      Aber Dein Beispiel mit einem Loop geht so, ergibt herzlich wenig Sinn,
      aber das Prinzip ist klar:

      put "1,2" into tListe
      
      ## Ich arbeite immer mit REPEAT FOR EACH, soweit möglich!
      ## Das ist rasend schnell, man muss aber seinen eingeen Zähler verwalten
      put 1 into Counter
      put EMPTY into tArray
      repeat for each item tItem in tListe
        put tItem into tArray[tCounter]
        add 1 to tCounter
      end repeat
      ...

      Egal wie viel ITEMS (oder lines oder was auch immer) Deine Liste haben sollte,
      das macht ein Array daraus.

      Gruß

      Klaus

      • #19586
        Torsten
        Teilnehmer

        Hi Klaus, das bringt mich auf die Idee einer Funktion für die automatische Array-Befüllung:

        Hier ein Beispiel, das man einfach in ein Button-Script einfügt:

        on mouseUp pMouseButton
        
           put createArrayFromList("1,2,3,4") into tArray
           answer the keys of tArray
           
        end mouseUp
        
        function createArrayFromList
           
           repeat for each item tItem in the params       
              add 1 to tCounter
              put tItem into tArray[tCounter]
           end repeat
           return tArray
        
        end createArrayFromList

        🙂

      • #19587
        Torsten
        Teilnehmer

        Oje, da war ich wieder etwas zu schnell und habe nur die Keys gecheckt. Mache schnell eine neue Version, Sekunde…

        Ah, es geht noch eleganter 🙂

        Um das Funktonieren zu sehen, muss man einen neuen Stack mit einem Button und einem Tree-Widget erstellen. Un den Button filgendes Skript einfügen:

        on mouseUp 
           
           createArrayFromList "a","b","3","4"
           put the result into tArray
           set the arrayData of widget "Tree" to tArray
           
        end mouseUp
        
        command createArrayFromList
           
           repeat with tParam = 1 to the paramCount
              put param(tParam) into tArray[tParam]
           end repeat
           return tArray
           
        end createArrayFromList
      • #19588
        Torsten
        Teilnehmer

        Und man kann es auch als Funktion bauen:

        on mouseUp
           
           put CreateArrayFromList("Hallo welt","b","3","4",6,7,8,9,0) into tArray
           set the arrayData of widget "Tree" to tArray
           
        end mouseUp
        
        function CreateArrayFromList
           
           repeat with tParam = 1 to the paramCount
              put param(tParam) into tArray[tParam]
           end repeat
           return tArray
           
        end CreateArrayFromList

        Oder ganz spartanisch:

        set the arrayData of widget "Tree" to CreateArrayFromList("Moin!","b","3","4",6,7,8,9,0)

        Ach, Livecode ist einfach herrlich 🙂

    • #19589
      livecode_pit
      Teilnehmer

      Hallo Klaus,Torsten,

      vielen Dank für eure Lösungen, genau sowas habe ich gesucht. Ich habe einige 16 elementige Arrays zu füllen, und bisher habe ich dafür immer 16 Zeilen/Array gebraucht, weil ich jedes Element einzeln in den Array geschoben habe. Das bläht den Code extrem auf. Mit einer Funktion ist es jetzt perfekt.

      Grüße
      pit

      • #19590
        Torsten
        Teilnehmer

        Hi Pit,

        freut mich!

        Schönes Wochenende 🙂

    • #40272
      Torsten
      Teilnehmer

      Hi Klaus,

      ich hab die Befürchtung, dass das Problem von Pit mit einem einfachen split viel einfacher zu lösen wäre, oder was denkst du? 😉

Ansicht von 5 Antwort-Themen
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.