Arrays in lesbarer Form

Startseite Foren Deutsches LiveCode-Forum Arrays in lesbarer Form

Schlagwörter: 

Ansicht von 4 Antwort-Themen
  • Autor
    Beiträge
    • #17364
      Gil
      Teilnehmer

        2. Versuch – eben gabs ne Fehlermeldung vom Forum…

        hallo ihr Lieben,

        unter
        http://lessons.livecode.com/m/4071/l/21022-how-do-i-display-an-array-in-human-readable-form

        gibt es ein sehr gutes Beispiel, wie man Inhalte von Arrays z.B. in Text-Dateien ausgeben kann.

        Woran ich scheitere:
        Ich möchte wirklich nur die Inhalte sehen, im Beispiel sieht man u.a. die [] für die Felder.

        Danke vorab

      • #17407
        Torsten
        Teilnehmer

          Hi Gil,

          ich habe dasselbe Problem gehabt und mir die Funktion umgebaut. Hier ist der Code

          on mouseUp pMouseButton
             
             put the arraydata of widget "Tree" into tArray
             put displayArrayData(tArray, " ") into tTexttree
             
             replace "=>  " with empty in tTexttree
             replace "=> Array" with empty in tTexttree
             
             put tTexttree into field "TextTree"
             
          end mouseUp
          
          function displayArrayData pArray, pIndent
             
             # create the variable that loops through the keys in the array
             
             local tKey
             
             if pArray is an array then
                
                # print information to indicate that we are entering a new nested level of the array
                get "Array" & return
                
                # print full stops that allow the reader to track the depth of an element
                
                put " " after pIndent
                
                # create the indentation
                
                put tab after pIndent
                
                repeat for each key tKey in pArray
                   
                   # call displayArrayData with a nested array
                   
                   put format("%s %s  => %s\n", pIndent, tKey, displayArrayData (pArray[tKey], pIndent)) after it
                   
                end repeat
                
                delete the last char of it
                
                return it
                
             else
                
                return pArray
                
             end if
             
          end displayArrayData
        • #17409
          Gil
          Teilnehmer

            Hi Torsten,

            jetzt steh ich auf dem Schlauch.
            Wieso machst Du den Weg mit dem Widget?

            Kurz zu meinem Vorhaben:
            Ich habe 20 Textbausteine, die wiederum aus verschiedenen Texten (z.B. Nr. des Bausteins, Name, Adresse, Beschreibung1 Beschreibung 2) zusammen gebaut werden, diese müssen jedoch in der richtigen Reihenfolge stehen.

            Die Beschreibungen sind unterschiedlich lang, daher möchte ich dies mit Arrays realisieren.

            Am Ende soll ein gesamter Text entstehen.

            Also Textbaustein 1 sieht z.B. so aus:
            1,Hans,Hofgasse 2,guter Bekannter aus einem Märchen,hat verdammt viel Glück

            Textbaustein 2:
            2,Gretel,Waldstraße 15,Schwester von Hänsel,hat Hexe auf dem Gewissen

            Die Texte für die Array-Felder werden z.B. per “put” übertragen
            put “1” into tMärchenArray [1][1]
            put “Hans” into tMärchenArray [1][2]
            put “Hofgasse 2” into tMärchenArray [1][3]
            put “guter Bekannter aus einem Märchen” into tMärchenArray [1][4]
            usw.

            Zum Schluss soll das Ganze so aussehen:
            1
            Hans
            Hofgasse 2
            guter Bekannter aus einm Märchen
            hat verdammt viel Glück

            2
            Gretel
            Waldstraße 15
            Schwester von Hänsel
            hat Hexe auf dem Gewissen
            .
            .
            .

            Die Beschreibungen haben natürlich mehr als eine Zeile, sonst wäre es zu einfach…

            Für Ähnlichkeiten mit lebenden oder bereits verstorbenen Personen wird keine Haftung übernommen… 🙂

            Grüße
            Gil

          • #17418
            Klaus Major
            Administrator

              Hi Gil,

              das hier klappt mit Deinem Beispiel, egal wieviele Keys das Array am Ende hat.

              Bei Arrays mit einer unbekannten Anzahl Keys, wie in der LC Lektion, ist es schon weitaus schwieriger!

              on mouseUp 
                 put "1" into tMärchenArray [1][1]
                 put "Hans" into tMärchenArray [1][2]
                 put "Hofgasse 2" into tMärchenArray [1][3]
                 put "guter Bekannter aus einem Märchen" into tMärchenArray [1][4]
                 put "hat verdammt viel Glück" into tMärchenArray [1][5]
                 
                 put "2" into tMärchenArray [2][1]
                 put "Gretel" into tMärchenArray [2][2]
                 put "Waldstrasse 15" into tMärchenArray [2][3]
                 put "Schwester von Hänsel" into tMärchenArray [2][4]
                 put "hat Hexe auf dem Gewissen" into tMärchenArray [2][4]
                 
                 ## Arrays liegen nicht immer sortiert vor, daher:
                 put the keys of tMärchenarray into tKeys1
                 sort tKeys1 numeric
                 
                 ## Hierdrin sammeln wir die Inhalte des Arrays:
                 put EMPTY into tMärchenListe
                 
                 ## Nun ein Loop durch alles Keys:
                 repeat for each line tKeyNumber in tKeys1
                    
                    put tMärchenArray[tKeyNumber] into tSubArray
                    
                    ## Arrays liegen nicht immer sortiert vor, daher:
                    put the keys of tSubArray into tKeys2
                    sort tKeys2 numeric
                    
                    ## Nun hier auch ein Loop, der alle Inhalte sammelt und in einer Zeile anzeigt
                    repeat for each line tSubKeyNumber in tKeys2
                       put tMärchenarray[tKeyNumber][tSubKeyNumber] & CR after tMärchenListe
                    end repeat
                    
                    put CR after tMärchenListe
                 end repeat
                 
                 ## Finale Ausgabe
                 put tMärchenListe into fld 1
              end mouseUp

              Gestestet und funktioniert!

              Gruß

              Klaus

            • #17540
              Gil
              Teilnehmer

                Hallo Klaus,

                vielen Dank!
                Probiere es heute Abend.

                Viele Grüße
                Gil

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