Newsgroup: it.comp.lang.delphi
Titolo: Conversione Variant to String

Ciao.
Ho un problemino con le conversioni da Variant a String e viceversa.
Praticamente, devo convertire un variant contenente un numero reale
(ad esempio 1234.56) in una stringa. Chiaramente, direte voi, mi basta
associare la stringa al variant... ma c'è un problema. A causa di una
certa standardizzazione dell'output grafico del programma, ho la
necessità di vedere i numeri reali sempre nella notazione italiana,
quindi l'esempio precedente dovrebbe portare alla stringa '1234,56'.
Se però il computer dell'utente che utilizzerà il programma è
impostato per un altro standard (per esempio l'inglese), la suddetta
conversione darà luogo alla stringa '1234.56', che NON mi va bene.
Ho già provato a impostare DecimalSeparator a ',' e a disabilitare
l'aggiornamento automatico delle variabili d'ambiente con
Application.UpdateFormatSettings := False, ma la conversione dei
variant pare fregarsene altamente (mentre per esempio FloatToStr viene
influenzata e produce sempre la stringa '1234,56'). Se non c'è altra
soluzione, dovrò convertire manualmente (con appunto FloatToStr e
StrToFloat) i valori, ma mi trovo ad affrontare il problema su un
programma che effettua conversioni da variant/string qualche migliaio
di volte in diverse decine di unit...
Possibile che Delphi sia così "furbo" da non effettuare le conversioni
automatiche dei variant in base alle variabili d'ambiente? Perchè, a
sto punto, mi chiedo quanto servano quelle variabili...
Se avete idee, suggerimenti o soluzioni al problema, sono tutto
orecchi... ehm, occhi! :)
Grazie e CIAO.
/|/|_Bozzy_|\|\



> Possibile che Delphi sia così "furbo" da non effettuare le
conversioni automatiche dei variant in base alle variabili d'ambiente?
Perchè, a sto punto, mi chiedo quanto servano quelle variabili... <<
Dovrebbe essere scritto nell'help: "Format strings specify required
formats to formatting routines". Cioe', sono usate per le funzioni di
formattazione delle stringhe.
Se variant e' un tipo (benche' strano) con delle regole di conversione,
non vedo perche' Borland debba arrogarsi il diritto di modificare tali
regole (non e' mica la ms!).
Saluti
Paolo Arosio

regole (non e' mica la ms!).
Io mi chiedo il contrario: se variant è un tipo come lo sono i vari
float, perchè questo non dovrebbe essere convertito seguendo le
impostazioni che gli sono state date da programma (impostando
DecimalSeparator) quando per i tipi reali questo accade?
Tornando al punto iniziale, c'è un modo per forzare Delphi a
convertire come voglio io i variant contenenti numeri reali in
stringhe?
Grazie di nuovo.
Ciao.
/|/|_Bozzy_|\|\

 stringhe?
Non senza riscrivere un pezzo di sysutils.pas (per D5)
Un buon posto per iniziare mi pare FormatBuf
Puoi verificare se D6 ha il comportamento che richiedi scaricando la
versione demo (se non l'hai gia'). Se e' secondo i tuoi requisiti sei a
posto. I variants sono -credo- in variant.pas, ma *devi* mettere l'upd 1
perche' senza sono piuttosto buggy.
Saluti
Paolo Arosio

 DecimalSeparator) quando per i tipi reali questo accade?
Probabilmente perché il supporto per i Variant è implementato a livello 
di piattaforma Windows, quindi di DecimalSeparator - che è roba 
specifica di Delphi - non gli potrebbe fregar di meno al codice che fa 
quella conversione.

perche' senza sono piuttosto buggy.
Grazie per i suggerimenti. Darň un'occhio a sysutils.pas, a
variant.pas e controllerň anche con Delphi6 (ho la demo a casa,
purtroppo non ce l'ho qua al lavoro).
CIAO.
/|/|_Bozzy_|\|\