IPB     Il futuro di Tevac dipende da te!  

Benvenuto Visitatore ( Log In | Registrati )

  · · · · · · · · · · · ·
Reply to this topicStart new topic
> Da Unicode text a string
Peace
messaggio 6 Dec 2006, 04:44
Messaggio #1


Level 5/11
*****

Gruppo: Forum User +
Messaggi: 522
Iscritto il: 25-December 03
Da: Milano
Utente Nr.: 1.173



Salve a tutti
premetto che non so quasi nulla da Applescript
il mio problema è che devo modificarene uno per inviare SMS in modo da poterlo fare da dentro filemaker.

le modifiche vanno bene e tutto funziona a meraviglia…
sono quasi soddisfatto che scopro con orrore il fatto che i miei SMS sono limitati a 70 caratteri invece dei normali 160…
Mi danno un poco a capire ed alla fine scopro che Filemaker passa il testo in Unicode - il programmino che invia gli SMS lo gestisce ma, naturalmente - direte voi - lo spazio diminuisce.

fantastico mi dico devo solo trasformare nell'Applescript che invio con filemaker il testo unicode in text normale… splucio un poco la AppleScriptLanguageGuide
e trovo che posso farlo con as… bellissimo
ma non mi funziona
io scrivo:

set paolo to "Ciao Ciao Ciao" as string
dove in realtà "Ciao Ciao Ciao" è il contenuto del campo filemaker con il testo unicode text
gli chiedo dopo
class of paolo
e lui mi dice correttamente string
ma poi quando arriva al programmino è sempre unicode con il limite dei 70 caratteri.

Immagino che per voi sia una sciocchezza… ma dove sbaglio ?

Cioa e grazie Peace


--------------------
4 Anni ormai dall'annuncio su Tevac
18/5/2004 15:24 Little Peace is here
Go to the top of the page
 
+Quote Post
Peace
messaggio 6 Dec 2006, 09:41
Messaggio #2


Level 5/11
*****

Gruppo: Forum User +
Messaggi: 522
Iscritto il: 25-December 03
Da: Milano
Utente Nr.: 1.173



Ho scoperto dopo che consultavo una
AppleScript Language Guide d'annata
(1.3.7 may 5,1999)
come dire che ho perso tempo (alle 4,44 di notte).

Ma su quella attuale la parola Unicode neppure esiste.
Eppure la differenza fra il testo scritto normale e quello unicode esiste eccome.

Non so proprio come fare. ma ci dev'essere il modo.
Aspetto voi guru.

Ciao Peace


--------------------
4 Anni ormai dall'annuncio su Tevac
18/5/2004 15:24 Little Peace is here
Go to the top of the page
 
+Quote Post
chebfarid
messaggio 6 Dec 2006, 10:24
Messaggio #3


Level 8/11
********

Gruppo: Supporter
Messaggi: 3.763
Iscritto il: 11-July 03
Da: Milano
Utente Nr.: 395



Ciao Paolo,
piacere incontrarti da queste parti icon_biggrin.gif
Dovrebbe bastare una piccola conversione in "text" per risolvere il tuo problema:
CODICE
tell document 1 of application "FileMaker Pro"

    set myText to contents of field 4 of record 1

    set normalText to myText as text

end tell

Scrivendo (sempre via AS) la stringa del campo FM in un file per testare la differenza ("Oggi è mercoledì.
Domani sarà giovedì e presto sarà Natale.")
la versione unicode pesa 404 bytes, la versione text 345.

Buon scripting
Farid


--------------------
Abends lustig, morgens triste
das ist Leben von Artiste
Go to the top of the page
 
+Quote Post
Peace
messaggio 7 Dec 2006, 02:31
Messaggio #4


Level 5/11
*****

Gruppo: Forum User +
Messaggi: 522
Iscritto il: 25-December 03
Da: Milano
Utente Nr.: 1.173



Ciao Farid

se ho capito il passo decisivo che tu fai è

CODICE
set normalText to myText as text


dopo aver recuperato in myText il contenuto in unicode.

Questa è esattamente la strada che ho tentato io ma per ragioni a me oscure non sembra funzionare.
Credo che il problema stia nel contesto - ma per spiegarlo devo denunciare la mia totale ignoranza sul modo di lavorare degli AS ed un po' mi vergogno.

Il servizio che invia gli SMS mette a disposizione una microapplicazione "SMS Mac Scripting" a cui inviare gli AS e che provvede al resto. Io posso inviarglieli dallo Script Editor ( e risultaranno testo normale, non unicode ) oppure da filemaker.
Mettono a disposizione un piccolo esempio di script:

CODICE
tell application "SMS Mac Scripting"

    set account to "john.doe@mac.com"

    set pin to "1234"

    set m to make new outgoing sms with properties {flash:false}

    tell m

 set message to "Don't forget to go to the dry cleaner!"

 set recipients to {"+12345678900", "+1345678901"}

 set sender to "+14567890123"

 set delivery report to true

 try

     send

 on error errMsg number errNum

     display dialog "Error: " & errNum & ". " & errMsg

 end try

    end tell

end tell


come tu ben sai da filemaker io invio un AS preparando il suo testo in un campo calcolato - così infatti ho fatto anch'io e devo dire che il tutto funziona benissimo, problema unicode a parte. FM nel calcolato sostituisce al nome dei campi il loro contenuto e passa il testo dell' AS a SMS Mac Scripting che fa bene il suo lavoro.
Ora dovunque e comunque io inserisca la trasformazione (coercion) da unicode a text per la stringa che deve andare a costituire il message…questo passaggio sembra non funzionare.

Faccio un esempio:
Poniamo che il mio Campo_Messaggio contenga "Supercalifragilistichespiralidoso" ovviamente in unicode

il campo calcolato Testo_per_Apple_Script sarà:


CODICE
tell application "SMS Mac Scripting"

    set account to "john.doe@mac.com"

    set pin to "1234"

    set myText to "supercalifragilistichespiralidoso"

    set normalText to myText as text

    set m to make new outgoing sms with properties {flash:false}

    tell m

 set message to normalText

 set recipients to {"+12345678900", "+1345678901"}

 set sender to "+14567890123"

 set delivery report to true

 try

     send

 on error errMsg number errNum

     display dialog "Error: " & errNum & ". " & errMsg

 end try

    end tell

end tell


Questo non funziona.
Ora mentre ti scrivo mi viene in mente una possibile ragione:
in realtà io passo un AS che provenendo da un campo FM - il calcolato Testo_per_Apple_Script - è a sua volta tutto scritto in Unicode…
e non solo la stringa myText. Però non saprei neppure come fare diversamente, in teoria - ma qui la mia ignoranza dei processi AS potrebbe farmi dire una stupidaggine - mi verrebbe da dire che SMS Mac Scripting pur ricevendo un messaggio AS tutto in Unicode dovrebbe eseguirlo trasformandone una parte come da istruzioni da unicode a text normale, ma proprio non lo fa. Oppure sono io che sono incapace di farglielo fare, però come vedi il problema non sta nella istruzione coercitiva "as text" ma , pur detto impropriamente, nel contesto in cui forse sto cercando di usarla.

Spero, tutto sommato, di essere stato sufficientemente chiaro, nonostante la mia vergognosa abissale ignoranza di Applescript.

Ciao Peace e grazie per la collaborazione.


--------------------
4 Anni ormai dall'annuncio su Tevac
18/5/2004 15:24 Little Peace is here
Go to the top of the page
 
+Quote Post
chebfarid
messaggio 7 Dec 2006, 04:05
Messaggio #5


Level 8/11
********

Gruppo: Supporter
Messaggi: 3.763
Iscritto il: 11-July 03
Da: Milano
Utente Nr.: 395



Ciao Paolo,
in un primo momento pensavo tu avessi ragione con il tuo sospetto che la conversione da Unicode a Text fosse invano perché FileMaker comunque passa l'intero contenuto del tuo campo in formato Unicode.
Dato però che il testo passato non è il messaggio stesso bensì il codice AS da far eseguire a "SMS Mac" sono abbastanza convinto che non può essere così.
Anzì, il dizionario, ovvero l'elenco dei classi e dei comandi di cui dispone "SMS Mac", dice chiaramente che la classe message è di default di tipo text e quindi non ci sarebbe neanche stato bisogno della conversione. Non è che ci siano strani caratteri all'interno del campo che costringono l'applicazione di utilizzare Unicode?
Per verificare potresti copiare il contenuto del tuo campo calcolato da FileMaker in una finestra di ScriptEditor ed eseguire il comando da qui. Stanotte non ho voglia di abbonarmi al servizio e scaricarmi i vari componenti necessari per provare, forse durante il ponte icon_smile.gif
Facci sapere & bonne chance
Farid


--------------------
Abends lustig, morgens triste
das ist Leben von Artiste
Go to the top of the page
 
+Quote Post
Peace
messaggio 7 Dec 2006, 04:54
Messaggio #6


Level 5/11
*****

Gruppo: Forum User +
Messaggi: 522
Iscritto il: 25-December 03
Da: Milano
Utente Nr.: 1.173



Ciao farid

nottambulo anche tu vedo…

già fatta la prova con script editor
copio incollo tutto da FM a scripteditor = troppo lungo
anche con la coercizione a text esplicita
…
adesso sempre sulla stessa finestra di ScriptEditor (con il testo copiato e incollato da FM) riscrivo direttamente il solo "supercalifragilistichespiralidoso" ossia il testo del campo esattamente così come era fra virgolette, quello che andrà in message… e il messaggio arriva tranquillo. Anche senza forzarlo a text.

Ergo "è proprio il testo che fa testo" per dirla con un gioco di parole…
ovvero che l'AS sia in unicode non interferisce ma che lo sia il testo del messaggio si.
Evidentemente Scripteditor digerisce tranquillamente sia text semplice che unicode ma quando ci scrivi direttamente quello che scrivi è testo semplice.

Comunque anche ScriptEditor non sembra capace di convertire… ovvero se il testo è unicode (perchè ottenuto con il copia incolla da FM) la coercizione as text non sembra funzionare.
Ho provato persino a farla antecedere - sempre in Scripteditor - alla chiamata
tell application "SMS Mac Scripting"
ma il risultato è stato comunque errore SMS troppo lungo quindi unicode.

Una rabbia perchè il limite di 70 caratteri è veramente troppo esiguo.
Sembrava una banalità e invece mi sta facendo perdere la testa

Comunque per fare delle prove non occorre che tu ti abboni al servizio, basta che tu scarichi il widget gratuito. Tu sicuramente sai con As farti restituire la stringa finale… quella che sarà passata a SMS MAC Scripting… la copi e la incolli sul widget e lui ti dice subito se è unicode o no, senza bisogno di spedire il messaggio e quindi anche senza abbonamento.
Se la stringa è testo semplice è fatta la digerisce anche normalmente.

Ciao a presto Peace

P.S. l'errore di usare una vecchia AppleScriptLanguageGuide del 1999 mi ha fatto notare che in quella attuale la differenza fra unicode e text sembra non esserci. La tabella di pag 90 mostra solo da string a styled text.
Nella guida del 99 c'era invece nella stessa tabella anche quella da unicode a text.
Ancora più curioso: nella guida attuale se ricerchi la parola unicode non hai nessuna ricorrenza… praticamente non viene mai nominata. Cosa questo possa significare mi è del tutto ignoto.


--------------------
4 Anni ormai dall'annuncio su Tevac
18/5/2004 15:24 Little Peace is here
Go to the top of the page
 
+Quote Post
Peace
messaggio 7 Dec 2006, 05:23
Messaggio #7


Level 5/11
*****

Gruppo: Forum User +
Messaggi: 522
Iscritto il: 25-December 03
Da: Milano
Utente Nr.: 1.173



P.S. 2
cerca Unicode nell'aiuto in linea di Script editor.
Sembra proprio che lo "digerisca" senza fare differenza.


--------------------
4 Anni ormai dall'annuncio su Tevac
18/5/2004 15:24 Little Peace is here
Go to the top of the page
 
+Quote Post
poweruser
messaggio 7 Dec 2006, 15:33
Messaggio #8


MacInATopic
Gruppo icone

Gruppo: Root Admin
Messaggi: 24.319
Iscritto il: 27-July 03
Da: Maglie (LE)
Utente Nr.: 440



Hai provato con un doppio casting?
CODICE
set originale to "à"

set unico to originale as Unicode text

set normale to unico as string
Non ho FileMaker per controllare icon_sad.gif.

Se AppleScript non ce la fa, si potrebbe provare ad usare il comando da terminale textutil.

Ciao
Paolo


--------------------
Paolo Portaluri

guru, n: A computer owner who can read the manual.
Go to the top of the page
 
+Quote Post
chebfarid
messaggio 7 Dec 2006, 17:08
Messaggio #9


Level 8/11
********

Gruppo: Supporter
Messaggi: 3.763
Iscritto il: 11-July 03
Da: Milano
Utente Nr.: 395



Ho modificato lo script leggermente integrandolo in un database scritto ad hoc per fare un test (conoscendoti sono sicuro che la tua soluzione in FileMaker sarà molto più complessa, ma per sperimentare con "SMS Mac" dovrebbe bastare icon_wink.gif
Il database contiene i campi di testo theAccount, thePIN, theText, theRecipient, theSender e il campo calcolato AS_Code che contiene l'assemblaggio dei valori degli altri campi:

e due pulsanti "send SMS" che esegue lo script di AS_Code direttamente dall'interno di FileMaker e "ScriptEditor" che esporta il codice dello script in ScriptEditor per eseguirlo da qui.
A me sembra che vadano entrambi i pulsanti, non riesco a capire però dove vedi se il messaggio di "SMS Mac" e di formato Text o Unicode. (Per il resto non lo vedo neanche usando il widget...)

Buon lavoro
Farid


--------------------
Abends lustig, morgens triste
das ist Leben von Artiste
Go to the top of the page
 
+Quote Post
chebfarid
messaggio 7 Dec 2006, 17:13
Messaggio #10


Level 8/11
********

Gruppo: Supporter
Messaggi: 3.763
Iscritto il: 11-July 03
Da: Milano
Utente Nr.: 395



PS: allego anche il codice FileMaker del calcolo per "AS_Code" così si fa prima se qualcun altro volesse provare:
CODICE
"tell application "SMS Mac Scripting""  & ¶ &

"set account to " & """ & theAccount & """ & ¶ &

"set pin to " & """ & thePIN & """ & ¶ &

"set myText to " & """ & theText & """ & ¶ &

"set m to make new outgoing sms with properties {flash:false}" & ¶ &

"tell m" & ¶ &

"set message to myText" & ¶ &

"set recipients to " & """ & theRecipient & """ & ¶ &

"set sender to " & """ & theSender & """ & ¶ &

"set delivery report to true" & ¶ &

"set c to class of myText as string" & ¶ &

"set chars to count of characters of myText" & ¶ &

"display dialog "Il tuo messaggio è di classe " & c & return & "ed è composto da " & chars & " caratteri." & return & "Inviarlo ora?" buttons {"Annulla", "OK"} default button 2 with icon 1" & ¶ &

"if button returned of the result = "OK" then" & ¶ &

"try" & ¶ &  

"send" & ¶ &

"on error errMsg number errNum" & ¶ &

"display dialog "Error: " & errNum & ". " & errMsg" & ¶ &

"end try" & ¶ &

"end if" & ¶ &

"end tell" & ¶ &

"end tell"

Bon travail
Farid


--------------------
Abends lustig, morgens triste
das ist Leben von Artiste
Go to the top of the page
 
+Quote Post
luigi
messaggio 7 Dec 2006, 20:03
Messaggio #11


Level 3/11
***

Gruppo: Forum User +
Messaggi: 213
Iscritto il: 7-August 04
Da: Parma
Utente Nr.: 2.179



Ho trovato questa discussione http://bbs.applescript.net/viewtopic.php?id=12569 su MacScripter, forse può essere utile.
Per Farid : da dove vengono tutti quei "& ¶ &" alla fine di ogni linea del tuo script ?

ciao
Go to the top of the page
 
+Quote Post
Peace
messaggio 7 Dec 2006, 20:51
Messaggio #12


Level 5/11
*****

Gruppo: Forum User +
Messaggi: 522
Iscritto il: 25-December 03
Da: Milano
Utente Nr.: 1.173



Ciao farid

ho preso il tuo calcolo e l'ho sosituito al mio
si è popolato ma nell'invio ha fallito per testo troppo lungo.

Questo da FM 8.5 ma anche da script editor.
Infatti se prendo il tuo calcolo dopo che è stato eseguito o polpolato e lo copio incollo in script editor il risultato è lo stesso.

Per quanto riguarda il widget è semplice:

sempre da script editor con il tuo codice popolato - copiato da FM e quindi unicode - ho sostituito l'istruzione
send
con l'istruzione
return mytext

a questo punto quando lo eseguo in script editor mi appare sotto il risulatato myText…
lo selezioni e lo copi incolli sul Widget e lui ti dice di quanti caratteri è e se è o no unicode.

Ciao Paolo

P.S. Ma scusa a te funziona ? anche con più di 70 caratteri ?


--------------------
4 Anni ormai dall'annuncio su Tevac
18/5/2004 15:24 Little Peace is here
Go to the top of the page
 
+Quote Post
chebfarid
messaggio 7 Dec 2006, 21:39
Messaggio #13


Level 8/11
********

Gruppo: Supporter
Messaggi: 3.763
Iscritto il: 11-July 03
Da: Milano
Utente Nr.: 395



CITAZIONE(Peace)
P.S. Ma scusa a te funziona ? anche con più di 70 caratteri ?

Lo posso solo confermare per quanto riguarda la "meccanica": lo script, lanciato sia da FileMaker sia da ScriptEditor funziona; ad un certo punto ovviamente arriva un messaggio di errore da parte di "SMS Mac" perché non ho nessun account e nessun PIN per inviare dei messaggi sul serio.
Comunque è bella strana questa cosa: il testo passato da AppleScript è "testo nudo e crudo", non so perché SMS Mac lo interpreti come Unicode.
Potresti mandarci un esempio vero invece della citazione di Pipi Calzalunga icon_razz.gif per capire meglio?

CITAZIONE(Luigi)
Per Farid : da dove vengono tutti quei "& ¶ &" alla fine di ogni linea del tuo script ?

E' la formattazione dello ScriptEditor di FileMaker che non c'entra niente con l'AppleScript Editor; i "&" concatenano stringe e simboli, i "¶" sono dei "vai a capo" (come il "return" di AS)

Saluti
Farid


--------------------
Abends lustig, morgens triste
das ist Leben von Artiste
Go to the top of the page
 
+Quote Post
Peace
messaggio 7 Dec 2006, 23:02
Messaggio #14


Level 5/11
*****

Gruppo: Forum User +
Messaggi: 522
Iscritto il: 25-December 03
Da: Milano
Utente Nr.: 1.173



Ciao farid

hai ragione. non dannarti su As il problema sta in Fm

per la precisione in una delle mie complicazioni. In certi casi il risultato del calcolato è semplice testo in altri casi è unicode. Non so esattamente ancora dove sta il "bivio" ma non è di sicuro nella stringa o in suoi caratteri.
comunque se è FM lo scoverò e vi darò sicuramente l'esito di questa ricerca.

Sono certo di aver risolto mio problema e vi ringrazio tutti.
Il problema pratico è a posto ma da un punto di vista teorico (che rompiballe che sono) non si capisce bene in As quando sia semplice testo e quando unicode - entrambi sono di classe = string o text che dir si voglia - e sopratutto non si sa ora come convertire unicode a testo semplice in AS.
Di fatto in Script editor se metto una stringa unicode non riesco a trasformarla in testo semplice con as string perchè unicode è esso stesso di classe string.

Ritornando ad Fm per domattina vi saprò dire quel'è l'elemento del calcolo, la funzione o la relazione… o il mio errore che forza la stringa ad unicode.
Per stasera devo fermarmi qui dopo il piccolo, che finalmente dorme, ora è la moglie che - giustamente - mi reclama.


Ciao a tutti e grazie.
Peace & Son ……& wife


--------------------
4 Anni ormai dall'annuncio su Tevac
18/5/2004 15:24 Little Peace is here
Go to the top of the page
 
+Quote Post
Peace
messaggio 8 Dec 2006, 12:50
Messaggio #15


Level 5/11
*****

Gruppo: Forum User +
Messaggi: 522
Iscritto il: 25-December 03
Da: Milano
Utente Nr.: 1.173



Ciao a tutti

come promesso eccomi a darvi gli esiti della nottata…
Per la verità ho rischiato di dovermi rimangiare la mia sicumera circa il fatto che "se il problema era FM l'avrei sicuramente e rapidamente risolto". Invece ci sono diventato pazzo.

A un certo punto non riuscivo proprio più a riprodurre l'errore ossia il testo FM in unicode… i messaggi partivano nella notte come proiettili di mitragliatrice…

Alla fine è saltato fuori il problema:
tutto stava in un apostrofo nero fra le parole "m'incazzo" icon_mad.gif icon_mad.gif icon_mad.gif
(perdonatemi l'espressione colorita). icon_redface.gif icon_redface.gif icon_redface.gif
Il fatto è che la frase conteneva la parola "l'appuntamento" e quell'apostrofo scritto in Fm risulta unicode scritto con altri programmi no perchè in realtà è, credo, un apice. Di fatto uno è leggermente inclinato l'altro , invece, perfettamente verticale.
Ma io usavo sempre lo stesso tasto della tastiera pro, quello che sopra ha il ?, solo che in FM produce una cosa, in script editor o text edit un'altra.

Forse da un punto di vista formale ha ragione Fm un apice non è un apostrofo però certo sarebbe cosa buona uniformare la tastiera: o quel tasto produce apici o apostrofi.

Una cosa da dannarsi l'anima anche perchè i miei occhi non sono più quelli di un tempo e la dimensione del font era normalmente piccolina 12p .

Mi spiace aver tirato dentro Aplle script e voi per una piccolissima "caccola" inclinata che FileMaker produce diversamente… icon_redface.gif icon_redface.gif icon_redface.gif

Circa le conversioni in AS da unicode a testo semplice… chi lo sa. Probabilmente neppure esiste nel semplice testo l'apostrofo vero e proprio e quindi non può essere convertito.

grazie comunque a tutti

Peace


--------------------
4 Anni ormai dall'annuncio su Tevac
18/5/2004 15:24 Little Peace is here
Go to the top of the page
 
+Quote Post
poweruser
messaggio 8 Dec 2006, 13:08
Messaggio #16


MacInATopic
Gruppo icone

Gruppo: Root Admin
Messaggi: 24.319
Iscritto il: 27-July 03
Da: Maglie (LE)
Utente Nr.: 440



La sostituzione apice/apostrofo è una funzione utilizzata dalla gran parte delle applicazioni Apple (vedi Pages - FileMaker è prodotto da Apple icon_wink.gif), credo sia una funzione del sistema operativo da sempre, ma è tenuta nascosta per non so quale motivo, pare che in Leopard sarà accessibile da qualsiasi applicazione Cocoa. Il funzionamento è lo stesso che regola le legature: scrivendo {f}{i} si ottiene un nuovo carattere {fi} e non due.
Puoi disabilitare la conversione andando dentro FileMaker al menu File > Opzioni file… > Testo.

Ciao
Paolo


--------------------
Paolo Portaluri

guru, n: A computer owner who can read the manual.
Go to the top of the page
 
+Quote Post
chebfarid
messaggio 8 Dec 2006, 13:47
Messaggio #17


Level 8/11
********

Gruppo: Supporter
Messaggi: 3.763
Iscritto il: 11-July 03
Da: Milano
Utente Nr.: 395



CITAZIONE(chebfarid)
Non è che ci siano strani caratteri all'interno del campo che costringono l'applicazione di utilizzare Unicode?

icon_razz.gif icon_wink.gif icon_biggrin.gif
CITAZIONE(poweruser)
Puoi disabilitare la conversione andando dentro FileMaker al menu File > Opzioni file… > Testo.

Bravo! Anche a me era venuto in mente che potrebbe aver che fare con l'uso degli "Smart Quotes" ma ero troppo cotto per indagare icon_biggrin.gif
Sembra comunque che la regola di AS sia che nel caso di combinazioni fra stringhe di testo e stringhe Unicode abbia prevalenza la seconda perché offre un più ricco assortimento di caratteri. AS di default ora usa Unicode UTF-16.

Saluti
Farid


--------------------
Abends lustig, morgens triste
das ist Leben von Artiste
Go to the top of the page
 
+Quote Post
Peace
messaggio 8 Dec 2006, 15:24
Messaggio #18


Level 5/11
*****

Gruppo: Forum User +
Messaggi: 522
Iscritto il: 25-December 03
Da: Milano
Utente Nr.: 1.173



Bingo

Complimenti a tutti e due.

Ciao Peace


--------------------
4 Anni ormai dall'annuncio su Tevac
18/5/2004 15:24 Little Peace is here
Go to the top of the page
 
+Quote Post