Startseite › Foren › Deutsches LiveCode-Forum › Vorstellung und erste Frage
- Dieses Thema hat 14 Antworten und 4 Teilnehmer, und wurde zuletzt aktualisiert vor 4 Jahren, 10 Monaten von Radmuehl.
-
AutorBeiträge
-
-
Oktober 30, 2019 um 10:46 Uhr #16851
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
-
Oktober 30, 2019 um 13:26 Uhr #16856
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ß!
-
Oktober 30, 2019 um 13:58 Uhr #16858
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 -
Oktober 30, 2019 um 14:49 Uhr #16860
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
-
Oktober 30, 2019 um 16:41 Uhr #16862
@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 -
Oktober 30, 2019 um 17:46 Uhr #16864
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 -
Oktober 30, 2019 um 18:12 Uhr #16866
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
-
Oktober 31, 2019 um 18:21 Uhr #16875
Besten Dank an Alle. Da werde ich mal weiter testen.
Gruß
Radmühl -
November 1, 2019 um 15:42 Uhr #16881
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 -
November 1, 2019 um 16:21 Uhr #16883
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.jpgAngenommen, 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
-
November 1, 2019 um 17:14 Uhr #16885
-
November 1, 2019 um 17:23 Uhr #16887
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. -
November 8, 2019 um 09:22 Uhr #16932
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 -
November 8, 2019 um 14:50 Uhr #16936
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=11726Das 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
-
November 8, 2019 um 16:23 Uhr #16938
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
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.