Maximalwert in Liste finden

Startseite Foren Deutsches LiveCode-Forum Maximalwert in Liste finden

  • Dieses Thema hat 9 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 1 Jahr von Torsten.
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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      Oder besser:

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

      🙂

    • #39604
      Klaus Major
      Verwalter

      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.