>----Messaggio originale----
>Da: [email protected]
>
>Il 07/03/2012 02:39, Valerio Messina ha scritto:
>> Paolo Mantovani ha scritto:
>[....]
>> usando "com.sun.star.sheet.addin.Analysis.getDec2Bin" o
>> "DEC2BIN" su LO ottengo lo stesso risultato.
>> Domani provo su OO
>
>Per questo ti avevo chiesto di specificare se stai usando OOo o LO
Chiarisco: mi interessa arrivare a scrivere una funzione che calcola la parità
binaria, con OO3.3.0 USA su WinXP.
Perché è il pacchetto che ho installato sul PC del lavoro e li mi serve il
calcolo della parità.
Inoltre su OO mancano le funzioni bit a bit, per cui su quello ho scritto le
varie BitAND, BitXOR, ecc, in Basic,
su LO non avrebbe senso scriverle perché già implementate.
Sul PC di casa ho LO3.4 perchè Ubuntu ti mette quello.
Come ultimo desiderio potrebbe essere utile che andasse anche li la parità, ma
non mi serve veramente.
Dunque: ho provato ora su OO3.3 USA, su WinXP, le due funzioni:
Function tra (val)
val = 23
svc = CreateUnoService ("com.sun.star.sheet.FunctionAccess")
arg = Array (val, 10)
tra = svc.callFunction ("com.sun.star.sheet.addin.Analysis.getDec2Bin", arg)
print tra
End Function
Function trb (val)
val = 23
svc = CreateUnoService ("com.sun.star.sheet.FunctionAccess")
arg = Array (val, 10)
trb = svc.callFunction ("Dec2Bin", arg)
print trb
End Function
fanno esattamente la stessa cosa.
Il problema sorge quando commento l'assegnamento di val, per prendere il
valore passato dal foglio:
'val = 23
ottengo in entrambi i casi error:
BASIC runtime error.
An exception occurred
Type: com.sun.star.lang.IllegalArgumentException
Message: .
>Lo sospettavo ma è difficile e frustrante darti supporto se le
>informazioni che fornisci sono vaghe e incomplete.
sorry, non posso usare la version italiana, o meglio, mi piacerebbe avere i
menù in italiano, ma non posso permettermi di avere le formule di CALC
tradotte.
Devo per forza usare le formule con il nome USA, l'unico modo che ho trovato è
usare il menù in inglese.
>Il tipo variant può contenere ogni tipo di dato e corrisponde più omeno
>al tipo any del c o di altri linguaggi.
in C che io sappia, non esiste un modo per non indicare il tipo di una
variabile, il compilatore deve conoscere quanto spazio serve.
Al massimo, per stare sul massimo generico, puoi allocare un certo numero di
byte, e usare un puntatore alla zona di memoria,
e farci quello che vuoi, con storture tipo cast, un sacco di warn in
compilazione, richio di piazzare un sacco di bachi. Insomma da non fare.
Forse con union boh.
>Anche questo non quadra per nulla:
>Non esiste *nessun* modo per scrivere un numero binario in una cella.
>- Puoi scrivere una stringa che *somiglia* ad un binario.
>- Puoi scrivere un intero decimale che *somiglia* ad un binario, ma
>- non puoi scrivere un numero binario
>
>Come dicevo nel primo post sarebbe bene evitare confusione tra il
>concetto di numerale e la sua rappresentazione.
ok, ancora ho scritto in modo impreciso, riprovo:
Il contenuto della cella è un numero (decimale), che usa solo le cifre 1 e 0,
per cui può rappresentare un numero binario.
Su queste celle, le mie misere funzioncine da principiante funzionano.
In realtà la differenza tra formattazione e contenuto mi è ben chiara, perché
in C c'è lo stesso concetto di Calc.
>Tornando al tuo codice, se io passo alle tue funzioni dei numeri
>decimali che somigliano a dei numeri binari non ottengo nulla di
>speciale in quanto la funzione li tratta come numeri decimali qualsiasi
>(e vorrei pure vedere il contrario ;)
però poi le funzioni del Basic: AND, XOR e OR trattano quei numeri bit a bit,
e non come numero decimale,
quindi funzionano per quello che serve a me (ok è un metodo fast&dirty lo
ammetto).
Ovviamente invece non funzionano se gli passo dei numeri che usano le cifre 2-
9
Inoltre non mi funziona la NOT del Basic nemmeno con numeri che sembrano
binari, boh.
P.S. se penso che in C è così semplice calcolare la parità bit a bit ... ;-))
solo che poi non avrei tutte le altre comodità di Calc.
Valerio
---------------------------------------------------------------------
Per cancellarsi: [email protected]
Per informazioni: http://www.openoffice.org/it/
Per avviare una nuova discussione: [email protected]
Archivi: http://mail-archives.apache.org/mod_mbox/incubator-ooo-utenti-it