Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: mecoman - Marzo 31, 2015, 03:56:10 pm

Titolo: modifica automatica del separatore decimale
Inserito da: mecoman - Marzo 31, 2015, 03:56:10 pm
Ciao a tutti. Sono ancora qui per chiedere il vostro aiuto.
Pensavo di aver finito di scrivere il mio primo programmino in Lazarus e invece mi sbagliavo di grosso... :'( :'(

Vi spiego brevemente il problema: quando utilizzo l'applicazione nel mio pc funziona perfettamente, mentre se provo a utilizzarla da un mio amico mi genera delle eccezioni in quanto il suo sistema operativo utilizza un separatore decimale diverso dal mio (la "," al posto del ".").

Ho pensato di risolvere il problema in questo modo: nel momento in cui si inseriscono i dati numerici e si clicca sul ".", nelle edit mi deve comparire il "." oppure la "," in base a come è impostato il separatore decimale del sistema operativo.
In poche parole, se nel sistema operativo è impostato come separatore decimale il "." allora nelle edit mi deve comparire come separatore decimale solo il "." (anche se premo la ","); viceversa se nel sistema operativo è impostato come separatore decimale la "," allora nelle edit mi deve comparire come separatore decimale solo la "," (anche se premo il ".").

Spero possiate aiutarmi. Ciao. :)
 
Titolo: Re:modifica automatica del separatore decimale
Inserito da: nomorelogic - Aprile 02, 2015, 02:54:39 pm
dai un'occhiata qua

http://wiki.lazarus.freepascal.org/jujiboutils

ci sono dei componenti per l'editing dei float
Titolo: Re:modifica automatica del separatore decimale
Inserito da: mecoman - Aprile 02, 2015, 06:25:40 pm
Ciao, do un occhiata e ti faccio sapere se riesco a risolvere il mio problema.
Titolo: Re:modifica automatica del separatore decimale
Inserito da: mecoman - Aprile 08, 2015, 07:50:50 pm
Ciao nomorelogic. Ho dato un occhiata al link che mi hai indicato ma non ha risolto il mio problema.

Provvisoriamente ho scritto questo codice molto banale:

Codice: [Seleziona]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = ',' then
    Key := '.'
end;

In passato ho utilizzato anche Visual Basic e devo dire che in alcuni aspetti semplificava un po la vita perché anche li avevo avuto questo piccolo problema e lo avevo risolto molto più agevolmente in quanto con una sola riga di codice ero riuscito a dire al programma di verificare quale era il separatore decimale del sistema operativo in uso del pc.

Questa era la riga di codice:

Codice: [Seleziona]
SeparatoreWindows = System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator

Speravo di ripetere la stessa identica procedura anche in Lazarus ma sto trovando molte più difficoltà del previsto... :'(

Qualche aiuto? Ciao, Grazie.
Titolo: Re:modifica automatica del separatore decimale
Inserito da: Stilgar - Aprile 08, 2015, 07:58:18 pm
Ciao.
http://lazarus-ccr.sourceforge.net/docs/rtl/sysutils/tformatsettings.html

questo lo hai controllato?

Senza impazzire c'è anche questo:
http://lazarus-ccr.sourceforge.net/docs/rtl/sysutils/formatfloat.html

Stilgar
Titolo: Re:modifica automatica del separatore decimale
Inserito da: El Salvador - Aprile 09, 2015, 12:41:47 am
Citazione
Speravo di ripetere la stessa identica procedura anche in Lazarus ma sto trovando molte più difficoltà del previsto...
Banalmente esiste la variabile DecimalSeparator nella SysUtils http://lazarus-ccr.sourceforge.net/docs/rtl/sysutils/decimalseparator.html
Titolo: Re:modifica automatica del separatore decimale
Inserito da: Stilgar - Aprile 09, 2015, 01:20:17 am
Codice: [Seleziona]
 { Character that comes between integer and fractional part of a number }
  DecimalSeparator : Char absolute DefaultFormatSettings.DecimalSeparator deprecated;


Meglio non usarla ;)

Stilgar
Titolo: Re:modifica automatica del separatore decimale
Inserito da: Antonello - Aprile 09, 2015, 09:53:07 am
procedure TForm1.Button1Click(Sender: TObject);
var fmtstg: TFormatSettings;
begin
  GetLocaleFormatSettings(0, fmtstg);
  edit1.text := fmtstg.DecimalSeparator;
end;
Titolo: Re:modifica automatica del separatore decimale
Inserito da: mecoman - Aprile 09, 2015, 04:54:21 pm
Ciao a tutti. Grazie mille per l'aiuto, penso di aver risolto. Ciao :)