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
        Administrator

          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
            Administrator

              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.