Newsgroup: it.comp.lang.delphi
Titolo: Funzione Trunc

Ciao a tutti,
ho la necessita di variare dei valori di variabili dichiarata come
AsFloatField che si presentano come 
p.es
. 11.5 in 0001150.
L'ormai amico Andrea mi aveva suggerito cdi usare la funzione trunc che
però, trasforma dei real in integer. I miei  float purtroppo appartengono
alla categoria integer, infatti la funzione trunc non funge. Come posso
ovviare? Avete suggerimenti? Questo è l'ultimo scoglio per completare il mio
primo programmino in Delphi. Aiutatemi Pelase!!!!
--
Roberto Petillo


E se provi a moltiplicare il tuo float per 100 (nell'esempio), e poi usi la
funzione Format? Mi pare il modo pěů semplice. Vedi al guida per i
parametri, non č complicata.
A.

I miei  float purtroppo appartengono alla categoria integer
In che senso ?
-- 
Andrea Laforgia
#exclude <windows.h>

> In che senso ?
Nel senso che guardando la guida di Delphi, nella categoria dei Real non ci
sono i float.

 AsFloatField che si presentano come 
p.es
. 11.5 in 0001150.
Spiegati meglio, io non ho capito.
Cioč, sul tuo DB hai un campo con 0001150 e vuoi considerarlo come 11.5
oppure sul DB hai 11.5 e vuoi visualizzare 0001150?
--
Jax

 Jax
Ho un database Paradox dove compare un valore che č di tipo "N" e vale 11.5.
Lo voglio stampare come 0001150. Il fatto di moltiplicarlo per 100 non č una
soluzione valida perche, qualunque sia il numero alla fine devo ottenere
sempre 5 cifre per la parte intera e due per i decimali, poiche l'output che
sto generando verrą letto da un altro programma.

Lo voglio stampare come 0001150.
var
  Valore: Double;
...
Valore := FieldByName('TuoCampo').AsFloat;
ShowMessage(Format('%.5d%.2d', [Trunc(Valore),
                                Trunc(Frac(Valore)*100)]));


 programma.
Perfetto, adesso ci siamo :)
Questo è quello che ho saputo fare io... spero ci sia di meglio:
var
 fNumero: Real;
begin
 fNumero := 11.5;
 Label1.Caption := Format('%.5d%d', [Trunc(fNumero),
Trunc(Frac(fNumero)*100)]);
end;
--
Jax

                                 Trunc(Frac(Valore)*100)]));
Azz, mi sono dimenticato il .2
^__^;;
E' questa quella giusta.
--
Jax

Ciao Ragazzi, finalmente ieri sera sono riuscito a far funzionare il tutto,
l'unica cosa e che ho dovuto fare cosi:
Valore:= Tabella1.FieldByName('nome_campo').AsFloat;
ma cosa dovrei fare se invece di stamparli a monitor volessi salvarli in
delle variabili per poi inserirle in un Writeln gia esistente?
Ho provato a creare altre variabili Double a fare nome_variabile:=
(Format(.........)) Ma mi diceh il tipo doble è incompatibile con il tipo
String? mah!

 tipo String? mah!
Beh, la proprietà Caption di una label non è altro che una String, per
cui per salvare quel valore in una stringa non devi salvarlo in una
variabile Double, ma in una String.
Se posso permettermi, ti consiglierei prima di studiarti un po' di
sintassi pascal, perché senza queste basi si incorre appunto in questi
"finti" problemi.
Un ottima guida la puoi trovare a 
http://www.marcocantu.it/EPascal/
--
Jax

delle variabili per poi inserirle in un Writeln gia esistente?
var
  S: String;
...
begin
  S := Format(.......
end.


In effetti, sto usando Delphi da meno di una settimana, e devo dire che fino
ad ora (nelle semplici cose che ho fatto) non ho traovato molte difficoltà,
e se ne ho trovate sono riuscito a risolverle con l'utilizzo della guida in
linea. Comunque grazie, vedro di rae un'occhiata alla guida che mi hai
indicato, il problema vero è la mancanza  di tempo, per questo mi sono
permesso, non senza farmi scrupoli, di chiedere qui! Comunque grazie mille.
Ciaooooo
Roberto

 scrupoli, di chiedere qui! Comunque grazie mille. Ciaooooo
Figurati, se fossimo tutti esperti non ci sarebbe piů niente da dire :)
La mancanza di tempo č una brutta bestia.
--
Jax