Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Busyman •-->


Anmeldedatum: 16.09.2001 Beiträge: 64 Wohnort: Ostwestfalen
|
Verfasst am: 30.01.2002 - 22:50 Titel: Zeitumrechnung. Mache ich es richtig? - There is a Ringelspi |
|
|
Hallo!
Ich versuche gerade meinen Keynote Timer, bei dem mir Snow sehr geholfen hat, noch etwas zu verfeinern. Und selbstverständlich, wie immer: Es tauchen Fragen auf
1. Wie man unten, recht weit oben im Scriptcode, sieht, setze ich das Datum, an dem die Keynote stattfindet, in deutscher Sprache ein ("Donnerstag, 21. März 2002 0:00:00 Uhr"). Wenn ich das Script nun als Applet abspeichere, funktioniert es dann auch unter einem englischen OS? Denn ich kann in meinem Scripteditor das Datum nicht in Englisch eingeben, er formatiert das automatisch ins deutsche Format. Hintergrund: Ich möchte auch eine international verständliche Version des Keynote Timers veröffentlichen.
2. Womit wir gleich bei der zweiten Frage wären. Damit das Script in jeder Zeitzone funktioniert, muß ich ja eine feste Bezugsgröße hinslichtlich einer Zeit haben, da ist es praktisch, daß man bei AppleScript die Zeitdifferenz der Ortszeit zur GMT ermitteln kann (im Script: set gmtDifference to get (time to GMT)). Allerdings bin ich mir nicht im Klaren darüber, ob das so, wie ich es verwirklicht habe, auch funktioniert. Aber rein logisch denke ich, daß es funktionieren müßte, denn ich mache ja folgendes: Der Zeitpunkt der Keynote wird in Abhängigkeit zur GMT angegeben (keynoteDate). Dann ermittele ich die Ortszeit (current date) und die Abweichung der Ortsteit von der GMT (gmtDifference). Und um schließlich die Zeitdifferenz zur Keynote zu berechen, ziehe ich die GMT-Abweichung zur Ortszeit von der Ortszeit ab, um dann diese neu berechnete Ortszeit vom Zeitpunkt der Keynote abzuziehen. Au Mann, das hört sich komplizierter an, als es ist, hoffe nur, daß Ihr das auch versteht
Na gut, also das sind meine Probleme, vielleicht hat jemand einen guten Rat? Wäre fein
Euer Busyman
--••••• Properties •••••
property Steve : 12345
--••••• Script •••••
on run
my KeynoteTimer()
end run
on KeynoteTimer()
-- Beginn der Keynote umgerechnet in GMT (Greenwich Mean Time)
set keynoteDate to date "Donnerstag, 21. März 2002 0:00:00 Uhr"
-- aktuelle Ortszeit wird ermittelt und gespeichert
set actualDate to current date
-- Zeit-Differenz zur GMT wird ermittelt und gespeichert
set gmtDifference to get (time to GMT)
set timeDifference to (keynoteDate - (actualDate - gmtDifference))
-- Errechnung und Formatierung der Tage
set theDays to (timeDifference div 86400)
if theDays = 1 then
set dieTage to (theDays as string) & " Tag, "
else
set dieTage to (theDays as string) & " Tagen, "
end if
set secondsLeftA to (timeDifference mod 86400)
-- Errechnung und Formatierung der Stunden
set theHours to (secondsLeftA div 3600)
if theHours = 1 then
set dieStunden to (theHours as string) & " Stunde, "
else
set dieStunden to (theHours as string) & " Stunden, "
end if
set secondsLeftB to (secondsLeftA mod 3600)
-- Errechnung und Formatierung der Minuten
set theMinutes to (secondsLeftB div 60)
if theMinutes = 1 then
set dieMinuten to (theMinutes as string) & " Minute und "
else
set dieMinuten to (theMinutes as string) & " Minuten und "
end if
-- Errechnung und Formatierung der Sekunden
set theSeconds to (secondsLeftB mod 60)
if theSeconds = 1 then
set dieSekunden to (theSeconds as string) & " Sekunde."
else
set dieSekunden to (theSeconds as string) & " Sekunden."
end if
-- Zusammenstellung der Dialog-Meldung
if theDays = 0 and theHours = 0 and theMinutes = 0 and theSeconds = 0 then
set dlog to "Die Keynote beginnt JETZT!!!"
else if theDays = 0 and theHours = 0 and theMinutes = 0 then
set dlog to "Die Keynote beginnt in " & dieSekunden
else if theDays = 0 and theHours = 0 then
set dlog to "Die Keynote beginnt in " & dieMinuten & dieSekunden
else if theDays = 0 then
set dlog to "Die Keynote beginnt in " & dieStunden & dieMinuten & dieSekunden
else
set dlog to "Die Keynote beginnt in " & dieTage & dieStunden & dieMinuten & dieSekunden
end if
-- Anzeige der Dialog-Meldung
tell me
activate
display dialog ¨
dlog buttons { "Text kopieren", "Noch einmal!", "Schluß für heute!" } default button 3 giving up after 15 with icon Steve
set DialogResult to result
if button returned of the result = "Schluß für heute!" then
return
else if gave up of DialogResult then
my KeynoteTimer()
else if button returned of the result = "Text kopieren" then
tell application "Finder"
activate
set the clipboard to dlog
end tell
else
my KeynoteTimer()
end if
end tell
end KeynoteTimer |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 31.01.2002 - 00:03 Titel: Zeitumrechnung. Mache ich es richtig? |
|
|
Hi Busyman,
um zu vermeiden, dass das eingegebene Datum beim Kompilieren ins deutsche Format umgesetzt wird, hilft folgender kleiner Umweg:
set inputDate to "21.03.2002 0:00:00"
set KeynoteDate to date inputDate
Das bringt dich einen kleinen Schritt weiter. Ich habe das allerdings gerade unter OS X getestet (Sprache umgestellt auf Englisch, Datum und Uhrzeit auf US).
Da müsste ich eingeben "03.21.2002 0:00:00"
Jetzt müsste man also die Systemversion abchecken und dann die Variable "inputDate" entsprechend anpassen.
Hier ein Beispiel für einen System-Check:
on VersionCheck() -- Check for System 9 - German Version
tell application "Finder"
--set ShortVers to version (Version des Finders)
set LongVers to product version
--if "d" is in ShortVers then set isGerman to true
if "d" is in LongVers and "9" is in LongVers then
set isGerman to true -- zum Testen auf "false" setzen
my TextSettings()
else
set isGerman to false -- set this to "true" for testing
my TextSettings()
end if
end tell
end VersionCheck
Damit habe ich mal experimentiert. - Ich müsste da allerdings jetzt selber noch weiter forschen. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Zuletzt bearbeitet von Snow am 22.02.2003 - 23:26, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Busyman •-->


Anmeldedatum: 16.09.2001 Beiträge: 64 Wohnort: Ostwestfalen
|
Verfasst am: 31.01.2002 - 00:18 Titel: Zeitumrechnung. Mache ich es richtig? |
|
|
Hi Snow,
hast mir mal wieder die Augen geöffnet :shocked:
Das ist ja insgesamt kniffliger, als ich dachte. Aber das Script gefällt mir so gut (wahrscheinlich, weil ich endlich einmal ein wenig Mathematik in einem Script verwende und nicht nur mit Ordnern und Dateien spiele...), daß ich die Herausforderung wohl annehmen werde :biggrin:
AppleScript ist einfach eine Gemeinheit: Hängt mal einmal drin, kommt man nicht mehr davon los.
Mit rauchendem Kopf,
Busyman |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 31.01.2002 - 00:39 Titel: Zeitumrechnung. Mache ich es richtig? |
|
|
Habe gerade nochmal mit den Datumsformaten gespielt. Anscheinend spielt es keine Rolle, welchen Separator man benutzt. Das ist ja dann schon mal ein Vorteil. So kommt es jetzt eigentlich nur auf die Reihenfolge von Tag, Monat und Jahr an.
Von dieser Reihenfolge weichen folgende Länder ab:
Portugal - Jahr, Monat, Tag
Schweden - Jahr, Monat, Tag
USA - Monat, Tag, Jahr
Ich setze dabei mal voraus, dass Apple hier die jeweils gebräuchlichen Formate voreingestellt hat.
Jetzt bräuchten wir nur noch eine absolut sichere Methode, um die Landesversion des Systems bzw. die Ländereinstellung (OS X) zu bestimmen. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
Busyman •-->


Anmeldedatum: 16.09.2001 Beiträge: 64 Wohnort: Ostwestfalen
|
Verfasst am: 31.01.2002 - 00:54 Titel: Zeitumrechnung. Mache ich es richtig? |
|
|
Hi Snow,
also bei einem deutschen OS, da weiß ich ja, daß stets ein "D" im Versionsnamen auftaucht. Aber wie ist das wohl bei fremdsprachigen Systemen? Steht bei den Amerikanern ein "US" im Versionsnamen? Versuche mal, mich kundig zu machen, daß wäre nämlich wirklich der einfachste Weg, die sprachabhängige Datumsformatierung einzuleiten.
Wobei mir da gerade einfällt: Wenn es möglich wäre, diesen Parameter auszulesen, dann bräuchte man auch nicht verschiedene Skripte für die einzelnen Sprachen erstellen, sondern ein Skript könnte alle Sprachen beinhalten (z.B. über verschiedene "properties"). Wird ein spanisches System erkannt, dann wird der Enddialog auch in spanischer Sprache angezeigt. Hm, das wäre wirklich praktisch.
Eigentlich könnte man den KeynoteTimer auch gut als erstes Probe-Projekt für eine AppleScript-Studio Anwendung mißbrauchen.
Ach, schon wieder so viele Ideen, das ist herrlich :cool:
Gruß,
Busyman |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 31.01.2002 - 01:00 Titel: Zeitumrechnung. Mache ich es richtig? |
|
|
Wobei mir da gerade einfällt: Wenn es möglich wäre, diesen Parameter auszulesen, dann bräuchte man auch nicht verschiedene Skripte für die einzelnen Sprachen erstellen, sondern ein Skript könnte alle Sprachen beinhalten (z.B. über verschiedene "properties". Wird ein spanisches System erkannt, dann wird der Enddialog auch in spanischer Sprache angezeigt. Hm, das wäre wirklich praktisch.
Genau damit habe ich schon experimentiert. Allerdings war mein Skript dafür ungeeignet. Es ist das Skript "Keychain unlock". Leider gibt es für die entsprechende Erweiterung ja auch wieder unterschiedliche Namen. "Schlüsselbund Scripting", "Keychain access"...
Deswegen habe ich es dann auch bleiben lassen. Aber das mit den Dialogen hat ganz reibungslos funktioniert. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Zuletzt bearbeitet von Snow am 22.02.2003 - 23:25, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Busyman •-->


Anmeldedatum: 16.09.2001 Beiträge: 64 Wohnort: Ostwestfalen
|
Verfasst am: 31.01.2002 - 01:09 Titel: Zeitumrechnung. Mache ich es richtig? |
|
|
Ist schon witzig, daß Scripter immer auf die gleichen Ideen kommen Muß daran liegen, daß jeder so wenig Code wie möglich verwenden will.
Und die Problematik Deines Scripts haben wir beim KeynoteTimer ja nicht, weil nur ein festgelegter und relativ einfacher Dialog angezeigt wird. Falls es also irgendwie möglich ist (vor allem auch unter X), die momentan verwendete Sprachversion auszulesen, dann müßte das einfach zu realisieren sein.
Nebenbei: Mir passiert es bei Deinem iCopy-Script (ein wirklich phantastischer Helfer, weil ich oft viele Icons ändern muß) öfters, daß mir aus Versehen eine Datei oder ein Ordner in den Iconspeicher rutscht. Könnte man da nicht optional eine FolderAction entwicklen, die das gar nicht zuläßt? So nach dem Motto "on adding...lege zurück das gerade hineingefallene Item...end on adding"
Nur eine Idee.
Busyman |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 31.01.2002 - 01:36 Titel: Zeitumrechnung. Mache ich es richtig? |
|
|
Zitat: | Nebenbei: Mir passiert es bei Deinem iCopy-Script (ein wirklich phantastischer Helfer, weil ich oft viele Icons ändern muß) öfters, daß mir aus Versehen eine Datei oder ein Ordner in den Iconspeicher rutscht. Könnte man da nicht optional eine FolderAction entwicklen, die das gar nicht zuläßt? So nach dem Motto "on adding...lege zurück das gerade hineingefallene Item...end on adding" |
Um eine Ordneraktion zu verwenden, müsste der Ordner geöffnet sein. Das würde aber wesentlich mehr Platz auf dem Desktop wegnehmen und außerdem könnte man das aktuell gespeicherte Icon nicht sehen.
Die einfachste Möglichkeit besteht darin, das Skript und den Iconspeicher möglichst weit von einander entfernt auf dem Desktop abzulegen. Dann kommt es wahrscheinlich nicht so oft dazu, dass man was auf den Iconspeicher zieht. (ist mir aber ehrlich gesagt auch schon öfters passiert) _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
Arnt •->

Anmeldedatum: 07.02.2002 Beiträge: 14
|
Verfasst am: 07.02.2002 - 11:12 Titel: Zeitumrechnung. Mache ich es richtig? |
|
|
Hallo,
ich stand vor kurzem vor einem ähnlichen Problem. Mein erster Ansatz war, date ("3.5." & "2002") zu schreiben, das löst aber nicht das Problem bei Datumseinstellungen, die eine andere Tag-Monat Reihenfolge haben.
Was geht ist folgendes:
set TheDate to date (irgendein_Datum)
set day of TheDate to 3
set month of TheDate to May
set year of TheDate to 2002
Die Monatsnamen müssen Englisch ohne Anführungszeichen sein. Sollte auch mit z.B. US-Datumseinstelllungen klappen.
Gruß
Arnt |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 08.02.2002 - 10:37 Titel: Zeitumrechnung. Mache ich es richtig? |
|
|
>Um eine Ordneraktion zu verwenden, müsste der Ordner geöffnet sein. Das würde aber wesentlich mehr Platz auf dem Desktop wegnehmen und außerdem könnte man das aktuell gespeicherte Icon nicht sehen.
Hallo,
dazu fällt mir ein - ich schiebe diese Ordner immer als "Schublade" an den unteren Rand des Desktops = wenig Platzverbrauch. Dabei frag ich mich, ist das Verhalten der Schubladen (ausgefahren - eingefahren) eigentlich per Script zu regeln (hallo Finder)?
Gruß,
Folker
PS: @ Arnt - das scheint mir ein Super-Tipp zu sein!
(Geändert von Folker um 9:38 Uhr am 8 Feb. 2002) _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 08.02.2002 - 18:20 Titel: Zeitumrechnung. Mache ich es richtig? |
|
|
Zitat: | set TheDate to date (irgendein_Datum)
set day of TheDate to 3
set month of TheDate to May
set year of TheDate to 2002 |
Das Problem dabei ist, dass die erste Zeile bei anderen Landeseinstellungen schon Probleme macht. Ich habe das gerade mal mit der Einstellung für das US-Datumsformat getestet. Es kommt zum Fehler "invalid date and time 21.03.2002 0:00:00"
Klar, in der zweiten Zeile kann daraus kein gültiges Datum gemacht werden, da davon ausgeganen wird, dass die erste Zahl die Monatsangabe ist. - einen 21sten Monat gibt's halt nicht.
Ich denke, am sichersten wäre es, per if ... then die drei Ausnahmen (Portugal, Schweden, USA) zu behandeln und den Rest mit der Standard-Eingabe.
Folgendes habe ich gerade auf OS X getestet:
set Land to "USA"
if Land = "USA" then
set inputDate to "03.21.2002 0:00:00"
else if Land = "Schweden" or Land = "Portugal" then
set inputDate to "2002.03.21 0:00:00"
else
set inputDate to "21.03.2002 0:00:00"
end if
set KeynoteDate to date inputDate
Das klappt bezüglich des Datums auf jeden Fall. Was eben noch zu klären bliebe, ist wie man die Landeseinstellung bzw. die Sprachversion des Systems zuverlässig abfragen kann. Im obigen Skript habe ich zum testen ja nur mal den Namen des Landes genommen. - In der Praxis wird's aber schwieriger werden. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Zuletzt bearbeitet von Snow am 22.02.2003 - 23:24, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Arnt •->

Anmeldedatum: 07.02.2002 Beiträge: 14
|
Verfasst am: 09.02.2002 - 16:38 Titel: Zeitumrechnung. Mache ich es richtig? |
|
|
Zitat: | Zitat: von Snow am 17:20 Uhr am 8 Feb. 2002
Zitat: | set TheDate to date (irgendein_Datum)
set day of TheDate to 3
set month of TheDate to May
set year of TheDate to 2002 |
Das Problem dabei ist, dass die erste Zeile bei anderen Landeseinstellungen schon Probleme macht. Ich habe das gerade mal mit der Einstellung für das US-Datumsformat getestet. Es kommt zum Fehler "invalid date and time 21.03.2002 0:00:00"
[...]
|
Vielleicht hätte ich schreiben sollen:
set TheDate to (current date)
das sollte immer klappen. Das eigentliche Datum wird ja danach festgelegt. Wenn das durch Variablen oder Benutzereingabe geschieht, ist es natürlich sinnvoll, ungültige Eingaben abzufangen, im einfachsten Fall mit try--on error-- end try.
Gruß
Arnt |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 09.02.2002 - 17:35 Titel: Zeitumrechnung. Mache ich es richtig? |
|
|
Hi Arnt,
mit 'current date' klappt's - allerdings muss man vor der Klammer 'date' weglassen. Mit der Zeitangabe wird's dann aber etwas unbequem. Ich habe mal versucht, den Time String zu ändern mit einer Eingabe wie "18:00:00". Das führt aber zu einem 'stack overflow'.
Wenn man die Uhrzeit in Sekunden angibt geht's allerdings:
set TheDate to current date
set day of TheDate to 21
set month of TheDate to March
set year of TheDate to 2002
set time of TheDate to 64800
return TheDate _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Zuletzt bearbeitet von Snow am 22.02.2003 - 23:23, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 09.02.2002 - 17:46 Titel: Zeitumrechnung. Mache ich es richtig? |
|
|
Zitat: | Zitat: von Folker am 9:37 Uhr am 8 Feb. 2002
Hallo,
dazu fällt mir ein - ich schiebe diese Ordner immer als "Schublade" an den unteren Rand des Desktops = wenig Platzverbrauch. Dabei frag ich mich, ist das Verhalten der Schubladen (ausgefahren - eingefahren) eigentlich per Script zu regeln (hallo Finder)?
Gruß,
Folker |
Hi Folker,
die Popup-Fenster müssten eigentlich schon zu steuern sein.
Ich hab's aber noch nicht ausprobiert.
pulled open boolean -- Is the window pulled open (only applies to pop-up windows and can only be set when the Finder is the front application)?
Das werde ich jetzt aber gleich mal machen. Ich habe nämlich den ganzen unteren Bildschirmrand voll. Das sieht bestimmt gut aus, wenn ich die per Skript alle nacheinander öffne und auch gleich wieder schließe.
Geht doch nichts über wirklich nützliche Ideen.  _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Zuletzt bearbeitet von Snow am 22.02.2003 - 23:23, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 09.02.2002 - 17:50 Titel: Zeitumrechnung. Mache ich es richtig? |
|
|
@ Folker
Es geht! Habe mir das aber lustiger vorgestellt.
tell application "Finder"
activate
set FensterListe to every window whose popup is true
repeat with einFenster in FensterListe
set pulled open of einFenster to true
set pulled open of einFenster to false
end repeat
end tell _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Zuletzt bearbeitet von Snow am 22.02.2003 - 23:21, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2002 phpBB Group Deutsche Übersetzung von phpBB.de
|
|
|