Newsgroup: it.comp.lang.vo-clipper
Titolo: STR2() e TRANSFORM2()

Cari amici, a seguito di ripensamenti e riflessioni, vi sottopongo
queste due versioni della STR() e della TRANSFORM() che non dovrebbero
avere il problema dell'arrotondamento. La ROUND() utilizzata da queste
deve essere una di quelle corrette (ROUND2(), ROUND3(), etc.). Ecco le
mie due proposte:
FUNCTION STR2( nValue, nLength, nDecimals )
    RETURN STR( ROUND( nValue, nDecimals ), nLength, nDecimals )
FUNCTION TRANSFORM2( xValue, cPicture )
    LOCAL nDotPos
    IF VALTYPE( xValue ) = "N"
        nDotPos = AT( ".", cPicture )
        IF nDotPos > 0
            xValue = ROUND( xValue, LEN( cPicture ) - nDotPos )
        ENDIF
    ENDIF
    RETURN TRANSFORM( xValue, cPicture )
Vi prego di provarle.
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

     RETURN STR( ROUND( nValue, nDecimals ), nLength, nDecimals )
Tieni presente che è possibile chiamare la STR() anche senza i successivi
parametri. In questo caso faresti Round(NIL,NIL)
Ciao.
Davide.


Ecco, vedi a che servono le collaborazioni? :-) Comunque verrebbe ROUND(
nValue, NIL ), giusto? Allora prova quest'altra:
FUNCTION STR2( nValue, nLength, nDecimals )
    IF nLength   = NIL; RETURN STR( nValue ); ENDIF
    IF nDecimals = NIL; RETURN STR( nValue, nLength ); ENDIF
    RETURN STR( ROUND( nValue, nDecimals ), nLength, nDecimals )
EMG


mie due proposte:
Ho perso un po' di vista le cose, causa la tirata di fine anno.
Siete giunti a delle versioni stabili per queste funzioni ? In caso
positivo, dove le trovo ?
E poi (e scusate se rompo) come faccio a sostituirle alle originali ?
Almeno comincio anche io ad utilizzarle in produzione, cosi'
aumentiamo il campo di test :)
Ciao.Alberto.
-------------------------------------------------------------
Alberto Rubinelli           Mail : 
alb...@retrocomputing.net
A2 SISTEMI                  Http : 
www.retrocomputing.net
Via Costantino Perazzi 22   Tel 0321 640149
28100 NOVARA (NO) - ITALY   Fax 0321 391769
ICQ : 49872318              Odigo : 5269083

 aumentiamo il campo di test :)
Ottimo. Fammi sapere se incontri problemi, specialmente nelle STR() e
TRANSFORM() nuove.


TRANSFORM() nuove.
Ho solo un dubbio, forse perche' ho seguito la discussione pensando
contemporaneamente a trecento altre cose : come mai la tua round e'
piuttosto corta, a livello di codice, mentre quella proposta mi sembra
da davide e' molto piu' lunga ? sono tecniche diverse ?


 da davide e' molto piu' lunga ? sono tecniche diverse ?
Esatto.


 a causa del fine anno.
proprio così.
Scusa se non ho più provato le funzioni, ma mille altri impegni...
Ciao.
Davide.

 da davide e' molto piu' lunga ? sono tecniche diverse ?
la round di Enrico è stata la prima proposta.
Durante quella discussione era stato sollevato il dubbio che potesse non
funzionare in qualche caso perchè il risultato (RETURN) della sua round
corretta, alla fine utilizza di nuovo la round originale del Clipper (pur
modificando il valore da arrotondare).
A questo punto si è deciso di sviluppare altre round che utilizzassero
tecniche diverse dall' EPS ed un programma di test per verificare
l'affidabilità delle varie proposte.
I risultati dei test effettuati su numeri considerevoli (anche se non su
tutti per ovvi motivi) hanno sufficientemente dimostrato (secondo me) che
tutte le round proposte funzionavano bene, anche se ovviamente alcune sono
più performanti di altre. Quella di Enrico in cima a tutte.
Io personalmente ora utilizzo la round di Enrico con la direttiva #translate
del preprocessore, tenendo in quel prg anche una copia commentata delle
ultime (spero) versioni delle altre proposte. Tanto per avere una eventuale,
anche se improbabile, "ruota di scorta".
Se ti interessa, posso inviarti il prg all'indirizzo e-mail privato.
Ciao.
Davide.

Se ti interessa, posso inviarti il prg all'indirizzo e-mail privato.
Te ne ringrazio davide, faro' anche io la stessa cosa, adesso sto
usando quella di EMG, che sta gia' girando su una decina di clienti
"mission critical" :)


 Scusa se non ho piů provato le funzioni, ma mille altri impegni...
Sei piů che scusato. :-)


 "mission critical" :)
Ragazzi, vi ringrazio molto per la fiducia ma occhi aperti, mi
raccomando.


raccomando.
Non preoccuparti, nel software che controlla il lancio dello shuttle
ho specificato chiaramente il tuo nome :))))


 ho specificato chiaramente il tuo nome :))))
Giuro!: all'epoca della famosa tragedia ancora non avevo scritto queste
funzioni! :-)))
