Maximalwert in Liste finden

Startseite Foren Deutsches LiveCode-Forum Maximalwert in Liste finden

Ansicht von 9 Antwort-Themen
  • Autor
    Beiträge
    • #39591
      akrages
      Teilnehmer

        Hallo und guten Abend.

        Ich brauche mal wieder Hilfe bei einer eigentlich simplen Aufgabe.
        ich habe in einer Liste (field “PickHistory”) flgendes stehen:

        Mi, 23.11.2021, KW_47, 487 00 0,00
        Mi, 01.12.2021, KW_48, 240 14731 8,84
        Do, 02.12.2021, KW_48, 626 27912 16,75

        Ich möchte nun aus der Spalte 6 den Höchsten Wert (also 16,75) in ein Feld einfügen.
        Kann mir da bitte jemand Helfen?

      • #39593
        Klaus Major
        Administrator

          Hi akrages,

          das geht nur mit einem Loop und einem kleinen Trick. 🙂
          Ich nehme mal an, die Daten sind per TAB getrennt?
          Wenn nicht, das Skript eben anpassen!

          ...
          put field "PickHistory" into les_picks
          set itemdel to TAB
          repeat for each line tLine in les_picks 
            put item 6 of tLine into tValue
          
            ## Der Trick! 
            ## Denn LC rechnet ENGLISCH also mit . statt KOMMA
            replace "," with "." in tValue
          
            ## Nun sammeln:
            put tValue & "," after tListe
          end repeat
          
          ## Nun können wir mit der eingebauten Funktion MAX() den höchsten Wert auslesen
          put max(tListe) into tHöchsterWert
          
          ## Zur Anzeige wieder eindeutschen:
          replace "." with "," in tHöchsterWert
          answer "Höchster Wert:" && tHöchsterWert
          ...

          Gruß

          Klaus

        • #39595
          akrages
          Teilnehmer

            Das ging ja fix.

            Hatte ein Script ganz ähnlich deinem schon mal ausprobiert
            aber auch mit deinem Script bekomme ich folgende Fehlermeldung:
            button “Button”: execution error at line 20 (Function: error in source expression), char 1

            ??

          • #39596
            Klaus Major
            Administrator

              Was genau ist denn Zeile 20?
              Falls es die hier ist:
              answer “Höchster Wert:” && tHöchsterWert

              Dann mal mit Klammern versuchen:
              answer (“Höchster Wert:” && tHöchsterWert)

            • #39598
              Klaus Major
              Administrator

                Ich habe das hier ausprobiert und sah “Höchster Wert: 16,75” im Dialog!

                Bitte überprüfe, ob es sich bei Dir wirklich um TAB als Delimiter
                handelt und es das 6te Item ist. Das ist nicht so ersichtlich.

              • #39600
                akrages
                Teilnehmer

                  Hab herausgefunden woran es lag.
                  Ich hatte in der Liste noch eine Überschrift stehen:

                  Datum KW Picks Schritte KM

                  Nachdem ich diese gelöscht habe läuft das Script so wie es soll.

                  Wie kann ich dein Script dahingehend ändern, dass die erste Zeile nicht brücksichtigt wird?

                • #39601
                  akrages
                  Teilnehmer

                    Hab die Lösung.
                    clear line 1 in les_picks

                    Vielen Dank.

                  • #39602
                    Klaus Major
                    Administrator

                      Oder besser:

                      ...
                      put line 2 to -1 of field "PickHistory" into les_picks
                      ...

                      🙂

                    • #39604
                      Klaus Major
                      Administrator

                        Oder:

                        ...
                        delete line 1 of les_picks
                        ...
                      • #39641
                        Torsten
                        Teilnehmer

                          Hallo akrages,

                          noch etwas kürzer und ohne itemdelimiter geht es bei den gezeigten Daten auch so:

                             
                             put field "PickHistory" into tData
                             replace "," with "." in tData  -- notwendig, weil Livecode die englische Zahlenformatierung verwendet
                             sort lines of tData numeric descending by word 6 of each -- Wörter sind durchgehende Zeichenketten, die durch Leerzeichen oder Tabs gtrennt sein können
                             put word 6 of first line of tData into tMaximalwert
                             replace "." with "," in tMaximalwert
                             answer tMaximalwert
                          

                          Happy scripting!
                          Torsten

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