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
      Verwalter

      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.