[GastForen Programmierung/Entwicklung AppleScript Dezimalzahl von "text" nach "number" konvertieren

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Dezimalzahl von "text" nach "number" konvertieren

Dominik Sourcé
Beiträge gesamt: 10

23. Jan 2016, 16:36
Beitrag # 1 von 21
Bewertung:
(8170 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

seit einigen Tagen quält mich folgendes Problem:

Eine Shell-Script, welches innerhalb eines AppleScripts ausgeführt wird, gibt mir als Ergebnis eine Dezimalzahl aus. Nun möchte ich mit dieser Dezimalzahl weiterrechnen. Leider komme ich aber mit dem Befehl "set ... as number" nicht weiter, da immer eine Fehlermeldung ausgegeben wird. Ich hab also beispielsweise dieses Ergebnis: "1453562710.21517" und möchte das als "number" damit ich anschließend arithmetische Befehle ausführen kann.

Weiß hier vielleicht jemand, wie man den Text erfolgreich in eine "echte" Zahl umwandelt?

Hier noch der gesamte Code:

Code
set time1 to do shell script "perl -e 'use Time::HiRes qw(time); print time'" 

set t1 to time1 * 2

Vielen Dank!
X

Dezimalzahl von "text" nach "number" konvertieren

Hans Haesler
  
Beiträge gesamt: 5826

23. Jan 2016, 18:10
Beitrag # 2 von 21
Beitrag ID: #546248
Bewertung:
(8138 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Dominik,

herzlich willkommen im AppleScript-Forum auf HilfDirSelbst! :-)

".at" = Österreich. Also ist sehr wahrscheinlich das Komma als Dezimaltrennzeichen definiert.

Der Punkt in der Textkette kann durch ein Komma ersetzt werden.
Und dann ist das Umwandeln in eine Zahl möglich.

Code
set tmpVal to "1453562710.21517" 

set AppleScript's text item delimiters to "."
set tmpList to every text item of tmpVal as list
set AppleScript's text item delimiters to ","
set tmpString to tmpList as string
set AppleScript's text item delimiters to {""}

set defVal to tmpString as number

Welche Version von Mac OS X benutzest Du?

Gruss, Hans


als Antwort auf: [#546243]

Dezimalzahl von "text" nach "number" konvertieren

Dominik Sourcé
Beiträge gesamt: 10

23. Jan 2016, 18:23
Beitrag # 3 von 21
Beitrag ID: #546250
Bewertung:
(8135 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

vielen Dank für die rasche Antwort und den Willkommensgruß! Dein Vorschlag erscheint mir mehr als logisch. Ich werde das gleich mal probieren und dir dann Feedback geben.

Ich benutze übrigens Mac OS 10.11.1.


als Antwort auf: [#546248]

Dezimalzahl von "text" nach "number" konvertieren

kkauer
Beiträge gesamt: 661

23. Jan 2016, 19:01
Beitrag # 4 von 21
Beitrag ID: #546254
Bewertung:
(8104 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Auch wenn Hans Antwort funktioniert würde ich vorschlagen, die Umwandlung (Punkt zu Komma) ebenfalls im Perl-Aufruf unterzubringen oder aber die Intervall-/Zeitberechnung direkt in AppleScript umzusetzen.
Kannst/magst du uns evtl. noch weitere Details zur Gesamtaufgabe nennen?


als Antwort auf: [#546250]

Dezimalzahl von "text" nach "number" konvertieren

Dominik Sourcé
Beiträge gesamt: 10

23. Jan 2016, 22:51
Beitrag # 5 von 21
Beitrag ID: #546260
Bewertung:
(8059 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo kkauer,

Ziel des gesamten Scripts ist es, die Dauer von gewissen Funktionen in Photoshop zu messen. Wir entwickeln gerade ein paar Aktionen bzw. Scripts für Stapelverarbeitungen, die später jede Menge Daten behandeln werden. Daher war mir die Genauigkeit von "get current date" –  also ganzen Sekunden – zu ungenau. Ich wollte zumindest eine Nachkommastelle. Das führte mich zu diesem Shell-Script.

Die Methode von Hans hat wunderbar funktioniert – vielen Dank nochmal – die Frage ist nur, ob die Umwandlung per Perl die Genauigkeit der Messung verbessern würde?

Ich bin vorerst jedoch mal glücklich, überhaupt ein funktionierendes Script zu haben.


als Antwort auf: [#546254]

Dezimalzahl von "text" nach "number" konvertieren

kkauer
Beiträge gesamt: 661

24. Jan 2016, 10:02
Beitrag # 6 von 21
Beitrag ID: #546261
Bewertung:
(7982 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich hatte dein Snippet gar nicht ausprobiert, daher gibt es evtl. sogar eine einfache "Lösung": Nutze "as number" direkt in Zeile 1
Code
set time1 to do shell script "perl -e 'use Time::HiRes qw(time); print time'" as number 

Das funktioniert hier problemlos (und unabhängig von den aktiven Zahlenformaten des Systems).


als Antwort auf: [#546260]
(Dieser Beitrag wurde von kkauer am 24. Jan 2016, 10:03 geändert)

Dezimalzahl von "text" nach "number" konvertieren

kkauer
Beiträge gesamt: 661

24. Jan 2016, 12:02
Beitrag # 7 von 21
Beitrag ID: #546262
Bewertung:
(7944 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ kkauer ] Das funktioniert hier problemlos.

Sorry für die Falschmeldung. Es gibt zwar keine Fehlermeldung, aber die Berechnung funktioniert nicht wirklich.

So könnte es aber klappen:
Code
set time1 to text of (do shell script "perl -e 'use Time::HiRes qw(time); print time'") as real 



als Antwort auf: [#546261]
(Dieser Beitrag wurde von kkauer am 24. Jan 2016, 12:29 geändert)

Dezimalzahl von "text" nach "number" konvertieren

Hans Haesler
  
Beiträge gesamt: 5826

24. Jan 2016, 13:21
Beitrag # 8 von 21
Beitrag ID: #546264
Bewertung:
(7904 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Karsten,

ich bedanke mich für Dein Eingreifen. Das hätte ich nicht hinbekommen.

@ Dominik: Meine Frage nach der Version des Systems ... Kürzlich stellte ich fest, dass unter "SnowLeopard" sowohl mit Komma als auch mit Punkt das Umwandeln gelingt.
Aber unter "Mavericks" das Zeichen jenem des Systems entsprechen muss.

Gruss, Hans


als Antwort auf: [#546262]

Dezimalzahl von "text" nach "number" konvertieren

Dominik Sourcé
Beiträge gesamt: 10

24. Jan 2016, 14:19
Beitrag # 9 von 21
Beitrag ID: #546267
Bewertung:
(7881 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

@Karsten: Dein zweiter Vorschlag funktioniert tatsächlich wunderbar. Allerdings verstehe ich nicht ganz warum. Kannst du mir vielleicht noch erklären warum, wenn man "to text of" voranstellt, anschließend in ein Zahl wandeln kann?

@Hans: Das mit Snow Leopard kann ich nachvollziehen. Dort wo ich das Snippet mit dem PerlScript gefunden habe, war nämlich niemals die Rede davon, dass man irgendetwas umwandeln müsse. Allerdings ist der Beitrag zu SnowLeopard Zeiten entstanden ...

Danke an euch beide!


als Antwort auf: [#546264]

Dezimalzahl von "text" nach "number" konvertieren

kkauer
Beiträge gesamt: 661

24. Jan 2016, 17:10
Beitrag # 10 von 21
Beitrag ID: #546274
Bewertung:
(7850 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Dominik Sourcé ] @Karsten: Dein zweiter Vorschlag funktioniert tatsächlich wunderbar. Allerdings verstehe ich nicht ganz warum. Kannst du mir vielleicht noch erklären warum, wenn man "to text of" voranstellt, anschließend in ein Zahl wandeln kann?

Ich habe zwar eine Theorie, aber weder Zeit noch Lust diese zu überprüfen/untermauern, sorry.
Freuen wir uns doch einfach über den Workaround, der sich ja allgemein(er) nutzen lässt.
PS: Ich glaube mich zu erinnern, dass Hans früher™ für solche Messungen irgendwelche ticks-Osaxen am Start hatte.


als Antwort auf: [#546267]

Dezimalzahl von "text" nach "number" konvertieren

Dominik Sourcé
Beiträge gesamt: 10

24. Jan 2016, 17:29
Beitrag # 11 von 21
Beitrag ID: #546278
Bewertung:
(7838 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Ich habe zwar eine Theorie, aber weder Zeit noch Lust diese zu überprüfen/untermauern, sorry.

Kein Problem. Ich war nur neugierig ...

Zitat Freuen wir uns doch einfach über den Workaround, der sich ja allgemein(er) nutzen lässt.

Bin ganz deiner Meinung.
Schönen Abend!


als Antwort auf: [#546274]

Dezimalzahl von "text" nach "number" konvertieren

Hans Haesler
  
Beiträge gesamt: 5826

24. Jan 2016, 19:42
Beitrag # 12 von 21
Beitrag ID: #546281
Bewertung:
(7774 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Karsten,

früher™: Ja, das waren noch Zeiten! Da gab es die gute alte Scripting Addition GetMilliSec von Hideaki Iimori.

Als "Illustration" ein zufällig herausgepickter Beitrag von 2005: http://www.hilfdirselbst.ch/..._P419681.html#419681

Zum Stichwort "ticks": Das war noch viel früher™. Die Scripting Addition Jon's Commands, des legendären Jon Pugh, welcher heute noch ab und an zuhanden der AppleScript-Users mailing list einen Beitrag postet.

Gruss, Hans


als Antwort auf: [#546274]
(Dieser Beitrag wurde von Hans Haesler am 24. Jan 2016, 19:54 geändert)

Dezimalzahl von "text" nach "number" konvertieren

kkauer
Beiträge gesamt: 661

24. Jan 2016, 19:53
Beitrag # 13 von 21
Beitrag ID: #546282
Bewertung:
(7770 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Hans Haesler ] früher™: Ja, das waren noch Zeiten! Da gab es die gute alte Scripting Addition GetMilliSec von Hideaki Iimori.

Und heute™ ist/wäre auch für dich der Abzweig Shell (inkl. Perl o.ä.) das Mittel der Wahl?


als Antwort auf: [#546281]

Dezimalzahl von "text" nach "number" konvertieren

Hans Haesler
  
Beiträge gesamt: 5826

24. Jan 2016, 20:08
Beitrag # 14 von 21
Beitrag ID: #546283
Bewertung:
(7747 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Karsten,

heute™ (d.h. seit gut zehn Jahren) benötige ich TimeStamps fast nur noch für InDesign.
Sehr selten. Und wenn, dann meistens per JavaScript.

[ P.S.: Habe soeben meinen letzten Beitrag durch die Ticks ergänzt. ]

Gruss, Hans


als Antwort auf: [#546282]

Dezimalzahl von "text" nach "number" konvertieren

kkauer
Beiträge gesamt: 661

24. Jan 2016, 20:16
Beitrag # 15 von 21
Beitrag ID: #546284
Bewertung:
(7740 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Hans Haesler ] Sehr selten. Und wenn, dann meistens per JavaScript.

Prima! Wie genau?


als Antwort auf: [#546283]
X