Vorstellung und erste Frage

Startseite Foren Deutsches LiveCode-Forum Vorstellung und erste Frage

  • Dieses Thema hat 14 Antworten und 4 Teilnehmer, und wurde zuletzt aktualisiert vor 3 Jahre von Radmuehl.
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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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.