Vorstellung und erste Frage

Startseite Foren Deutsches LiveCode-Forum Vorstellung und erste Frage

Ansicht von 14 Antwort-Themen
  • Autor
    Beiträge
    • #16851
      Radmuehl
      Teilnehmer

        Liebe Forumsmitglieder,

        ich denke in einem Forum sollte man sich erst einmal vorstellen, damit die Anderen wissen mit wem sie es zu tun haben. Zu meiner Person. Ich bin nicht mehr der Jüngste (die 6 steht bei meinem Alter schon vorne) und habe früher mit X-Profan programmiert. Jetzt möchte ich dieses Hobby wieder aufnehmen und ein paar App´s für mich entwickeln. Da bin ich auf Livecode gestossen. Die Installation hat inwischen geklappt und auch das Compalieren hat nach einigen Schwierigkeiten mit ersten kleinen App´s funktioniert.

        Leider liegt mir das in diesem Forum beschriebene Buch noch nicht vor. Ich habe es bestellt, aber die Neuauflage ist erst Ende November verfügbar.

        Deshalb mal eine Frage. Ich möchte eine App erstellen die die Zeit zu einem bestimmten Ereignis anzeigt. Das Ereignis soll nicht eingegeben werden können, ich möchte es im Sourcecode direkt hinterlegen. Die Anzeige ist dann so gedacht:

        “Noch 100 Tage bis zum Ereignis.”

        Kann mir hier jemand weiterhelfen?

        Viele Grüße

        Radmühl

      • #16856
        Axwald
        Teilnehmer

          Grüße!

          Ganz auf die Schnelle:

          on mouseUp
             ask "Ein Datum, bitte:" & CR & "(Diese Form, bitte: " & quote & the short system date & quote & ")"
             convert it from short system date to dateItems           --  '1.12.2019' => '2019,12,1,0,0,0,1'
             
             if it is empty then exit mouseUp
             --  Hier ggf. testen, ob es wirklich ein Datum ist, und
             --  ob es auch in der Zukunft liegt
             put it into myNewDate
             
             put the short system date into myOldDate
             convert myOldDate from short system date to dateItems
             
             put 0 into myCnt
             repeat
                add 1 to myCnt
                add 1 to item 3 of myOldDate
                convert myOldDate from dateItems to dateItems          --  das ist der Trick: hier wird bei 
                                                                       --  Monatsüberschreitung korrigiert
                if (myOldDate = myNewDate) or (the controlKey is down) then
                   exit repeat
                end if
             end repeat
             convert myNewDate from dateItems to short system date     --  zurück-konvertieren
             answer "Noch " & myCnt & " Tage bis zum " & myNewDate & "!"
          end mouseUp

          “DateItems” ist das Format der Wahl, wenn man damit rechnen will. Alternativ: “seconds”.
          “convert … from dateItems to dateItems” sorgt dafür, daß Sachen wie “2019,10,32,…” korrigiert werden (32.10.2019!).

          Das geht sicher auch eleganter, sollte aber die Grundlagen verdeutlichen.

          Viel Spaß!

        • #16858
          Radmuehl
          Teilnehmer

            Besten Dank. Werde es testen und nach meinen Bedürfnissen anpassen. Da ich das Datum fest vorschreiben will, schreibe ich es direkt in die Variable MyNewDate.

            Viele Grüße
            Radmühl

          • #16860
            Klaus Major
            Administrator

              Hi Rdadmühl,

              willkommen im Forum!

              Hier ein etwas kürzeres Skript, direkt als Handler, den Du “on openstack” oder wo auch immer aufrufen kannst. Am besten ins Stackskript legen:

              command der_countdown
                 set the usesystemdate to TRUE
              
                 ## Hier Dein Wunschdatum eingeben.
                 ## Die Uhrzeit so lassen, ein Trick um eventuelle Diskrepanzen 
                 ## wegen Sommer/Winterzeit zu vermeiden
                 put "29.11.19" && "15:00" into tTime
                 convert tTime to seconds
              
                 ## Differnez in Sekunden
                 put tTime - the seconds into tDiff
                 put 60*60*24 into sekunden_pro_tag
                 
                 # Nun die Sekunden dadurch teilen und runden:
                 put round(tDiff/sekunden_pro_tag) into differenz_in_tagen
                 put "Noch" && differenz_in_tagen && "bis zum Weltuntergang!" into fld "dein Feld hier..."
              end der_countdown

              Ergibt mit obigem Datum korrekterweise -> 30!

              Gruß

              Klaus

            • #16862
              Radmuehl
              Teilnehmer

                @Axwald
                Das Script funktioniert, wenn ich es als Script auf einen Button lege. Wie kann ich es automatisch starten?


                @Klaus

                Ich verstehe leider nicht so ganz wie ich das commando einbinden soll.

                Sorry, aber ich beginne gerade erst mit dieser Programmiersprache. Es wird Zeit dass das vorbestellte Buch geliefert wird.

                Viele Grüße
                Radmühl

              • #16864
                Torsten
                Teilnehmer

                  Hi Radmühl,

                  ich bin auch ehemaliger XProfaner 🙂

                  Du kannst Skripte auch starten, wenn die Karte geöffnet wird, in dem Du das Skript in die Karte mit

                  
                  on opencard
                  
                  -- Dein Code
                  
                  end opencard
                  

                  speicherst.

                  Beste Grüße
                  Torsten

                • #16866
                  Klaus Major
                  Administrator

                    Hi Radmühl,

                    kopiere den Handler “command der_countdown…” ins Stackskript.
                    Dann ist er auf jeder Karte und überall im Stack verfügbar.

                    So kannst Du ihn überall aufrufen, z.B. in einem Button auf irgend einer Karte:

                    on mouseup
                      der_countdown
                    end mouseup

                    Oder direkt wenn der Stack geöffnet wird:

                    on openstack
                      der_countdown
                      ## Mehr Sachen, die jetzt passieren sollen hier...
                      ## Noch mehr openstack Zeugs... :-)
                    end openstack

                    Falls Du mehrere Karten im Stack hast, solltest Du das Feld aber näher präzisieren:

                      ...
                     put "Noch" && differenz_in_tagen && "bis zum Weltuntergang!" into fld "dein Feld hier..." OF CARD 3
                      ## oder auf welcher Karte dieses Feld liegt.
                    end der_countdown

                    Falls Du des Englsichen halbwegs mächtig bist, kann ich diese Stacks empfehlen,
                    um die BASICS von LC zu verstehen: http://www.hyperactivesw.com/revscriptconf/scriptingconferences.html
                    Die sind schon etwas älter, daher werden Widgets darin nicht behandelt.

                    Gruß

                    Klaus

                  • #16875
                    Radmuehl
                    Teilnehmer

                      Besten Dank an Alle. Da werde ich mal weiter testen.

                      Gruß
                      Radmühl

                    • #16881
                      Radmuehl
                      Teilnehmer

                        In Livecode funktioniert es jetzt super. Auch compaliert er ohne Fehler. Auf dem Handy lässt sich die apk aber nicht installieren obwohl ich die manuelle Installation erlaubt habe. Wenn ich mir die Exe für Windows mal aufrufe funktioniert es, aber die von mir auf der Obefläche paltzierten Bilder werden nicht angezeigt. Weiß jemand was ich hier falsch mache?

                        Viele Grüße
                        Radmühl

                      • #16883
                        Klaus Major
                        Administrator

                          Hallo Radmühl,

                          klingt nach einem Pfadproblem!
                          Wo liegen denn Deine Bilder auf der Platte und was hast Du bei den “filename” Einträgen im Inspektor für Deine Bilder stehen?

                          Mögliche Lösungen:
                          1. Du könntest alle Deine Bilder IMPORTIEREN -> Menü: File -> Import as control -> Image file
                          Dann wird eine KOPIE des gewähten Bildes in den Stack kopiert und IM Stack mit dem Stack gespeichert, also immer sichtbar, auch wenn Du das Originalbild auf der Platte löscht!

                          Da kommt es natürlich auf die Gesamtgröße aller Bilder (in MB) an, ob das ratsam ist, da LC den kompletten Stack in den RAM lädt. Aber solange Du keine Bildersammlungen von > 20 MB hast, sollte das kein Problem sein.

                          2. RELATIVE (relativ zum Stack) Pfade benutzen!
                          Packe dazu alle Deine Bilder (in einem separaten Ordner oder nicht) in den selben Ordner wie der Stack, in dem Du sie verwendest.
                          Ich denke, Du hast als FILENAME den absoluten Pfad auf Deiner Festplatte drin stehen:
                          Beispiel -> C:/Dokumente/Mein LC Projekt/Tolle Bilder/ein Bild.jpg

                          Angenommen, Dein Stack liegt auch im Ordner -> Mein LC Projekt, dann ändere den Pfad im Feld FILENAME im Inspektor in -> Tolle Bilder/ein Bild.jpg
                          Das ist dann relativ zum Stack und der weiß, aha, das Bild liegt hier neben mir im Ordner “Tolle Bilder” und zeigt es an.

                          In den “Standalone Builder Settings”auf der Karte “Copy files” wählst du dann den Ordner “Tolle Bilder” aus, und LC kopiert den in den richtigen Ordner in der späteren Standalone.
                          LC sorgt dann dafür, das der relative Pfad immer stimmt und Deine Bilder sollten angezeigt werden.

                          Bitte mal ausprobieren, ich stehe heute abend wieder für weitere Fragen zur Verfügung.

                          Gruß

                          Klaus

                        • #16885
                          Radmuehl
                          Teilnehmer

                            @Klaus:
                            Danke. Da werde ich mich mal durchwühlen. Ich dachte wenn ich Bilder über die Software einfüge passiert alles automatisch und sie werden auch richtig beim Compalieren beachtet. Ich muss noch viel lernen. Ich hoffe das Buch wird bald geliefert.

                            VG
                            Radmühl

                          • #16887
                            Klaus Major
                            Administrator

                              Referenzierte Bilder sind und bleiben referenziert, da ändert LC auch nichts dran. 😉

                              Kleiner Hinweis:
                              Bitte für weitere (andere) Fragen jeweils einen neuen Thread aufmachen, kostet ja nix. 🙂
                              Sonst gehen die Fragen und Antworten unter, da sie niemand unter dem ursprünglichen Threadtitel vermutet und niemand sich durch einen Thread mit ‘ZIG Antworten quälen möchte.

                            • #16932
                              Radmuehl
                              Teilnehmer

                                Hallo Klaus,

                                ich habe das alles so eingepflegt und es lässt sich auch compalieren. Es funktioniert in der Software und als Windowsversion. Die Android-App bereitet mir Schwierigkeiten auf dem Handy. Ich denke es liegt irgendwie an der Datumsabfrage. Im Handy zählt der Countdown nicht nach unten. Gestern bei der Erstellung waren es noch 103 Tage, das zeigt sie auch an. Heute müsste die App 102 Tage anzeigen. Ich habe die App nochmals installiert aber sie hat die 103 Tage eingefroren. Hier der Code:

                                
                                command der_countdown
                                set the usesystemdate to TRUE
                                
                                put "18.02.2020" && "15:00" into tTime
                                convert tTime to seconds
                                
                                put tTime - the seconds into tDiff
                                put 60*60*24 into sekunden_pro_tag
                                
                                put round(tDiff/sekunden_pro_tag) into differenz_in_tagen
                                put "In" && differenz_in_tagen && "Tagen sind wir zu dritt!" into fld "ausgabe"
                                end der_countdown
                                

                                Was läuft da falsch?

                                Viele Grüße
                                Radmühl

                              • #16936
                                Klaus Major
                                Administrator

                                  Hallo Radmühl,

                                  AH, Android!

                                  Hm, leider haben die Schotten es immer noch nicht geschafft,
                                  SYSTEMDATE und SYSTEMTIME auf Android ans Laufen zu bekommen :-/
                                  Du musst also mit einem englischen Datum arbeiten, klappt aber
                                  dann auch unter Windows und überall!

                                  Hatte ich schon vor längerer Zeit gemeldet…
                                  https://quality.livecode.com/show_bug.cgi?id=11726

                                  Das klappt dann so:

                                  command der_countdown
                                  
                                     ## set the usesystemdate to TRUE
                                     ## put "18.02.2020" && "15:00" into tTime
                                  
                                     ## Das obige Datum auf Englisch:
                                     put "02/18/20" && "03:00 PM" into tTime
                                     
                                     convert tTime to seconds
                                     
                                     put tTime - the seconds into tDiff
                                     put 60*60*24 into sekunden_pro_tag
                                     
                                     put round(tDiff/sekunden_pro_tag) into differenz_in_tagen
                                     put "In" && differenz_in_tagen && "Tagen sind wir zu dritt!" into fld "ausgabe"
                                  end der_countdown

                                  Gruß

                                  Klaus

                                • #16938
                                  Radmuehl
                                  Teilnehmer

                                    Herzlichen Dank, ich war schon am verzweifeln. Das was Du bereits geschrieben hast hatte ich nicht gelesen. In dem deutschen Block hatte ich nichts gefunden.

                                    Viele Grüße

                                    Radmühl

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