Problema con i tipi real

di il
7 risposte

Problema con i tipi real

Salve, ho ancora un problema che non riesco a risolvere. Non posto nessun codice perchè basta l'espozione del problema. Ho un oggetto edit1 in cui è inserito il valore 1.345 e lo devo convertire in numero reale. Ho una variabile dichiarata real ( ho provato anche altri tipi ma non funziona), poniamo R:real. Se faccio R:= StrToFloat(edit1.text) mi da un errore. Uso anche la variabile I:integer. Se faccio val ( edit1.text, R,i), R mi restituisce il valore real 1.345, ma se nel edit1 c'è il valore 0.88595 , con val mi ritorna R con valore intero, cioè mi toglie lo 0 e mi restituisce 88595. Il Valore 0.88595 mi serve per fare una conversione monetaria tra euro-sterline ed il valore 0.88595 che acquisisco dai siti finanziari (1 EUR = 0.88595 GBP ) è quello che mi serve per fare l'operazione matematica.Come lo risolvo? C'è un modo? Prima di chiedere quì ho provato molti modi. Grazie.

7 Risposte

  • Re: Problema con i tipi real

    Stringreplace punto con virgola a seconda della configurazione
  • Re: Problema con i tipi real

    Fai una pagina di configurazione dove chiedi (tra le altre cose) il carattere decimale ed in base alla risposta lo imposti con FormatSettings.DecimalSeparator, per tutte le altre possibili impostazioni guarda il record TFormatSettings in System.SysUtils
    W.
  • Re: Problema con i tipi real

    +m2+ ha scritto:


    Stringreplace punto con virgola a seconda della configurazione
    troppo sintetico, ti ringrazio ma non ho capito. Parliamo di delphi?
  • Re: Problema con i tipi real

    Wolfen ha scritto:


    Fai una pagina di configurazione dove chiedi (tra le altre cose) il carattere decimale ed in base alla risposta lo imposti con FormatSettings.DecimalSeparator, per tutte le altre possibili impostazioni guarda il record TFormatSettings in System.SysUtils
    W.
    non sono così esperto da capire tutto. Cosa significa fare una pagina di configurazione? Chiedere il carattere decimale in che senso? Non l'ho mai fatto quindi non conosco i passi da fare.Ho usato FormatSettings.DecimalSeparator ma non funziona, forse lo uso male. Ho usato anche un record di TFormatSettings, ma idem, mi da sempre errore. C'è qualcuno che ha risolto il mio tipo di problema ? L'errore sta solo nello zero prima della virgola - 0,1234, non so come fare visto che è il valore che mi serve.
  • Re: Problema con i tipi real

    +m2+ intendeva che devi usare la funzione StringReplace in modo da settare il separatore decimale a seconda della configurazione
    qualcosa del tipo:

    var r: Extended;
        s: String;
        c: Char;
    begin
      c := FormatSettings.DecimalSeparator;
      s := Edit1.Text;
      case c of
        ',': s := StringReplace(s, '.', c, [rfReplaceAll, rfIgnoreCase]);
        '.': s := StringReplace(s, ',', c, [rfReplaceAll, rfIgnoreCase])
      end;
      R := StrToFloat(s);
      showmessage(r.ToString);
    
    end;
  • Re: Problema con i tipi real

    Ok provo questo, però ribadisco che, il problema non sta nel separatore, il problema è che non ricevo proprio il valore 0,1234, ma solo 1234. Comunque grazie, farò sapere.
  • Re: Problema con i tipi real

    Ok, ha funzionato.Grazie.
Devi accedere o registrarti per scrivere nel forum
7 risposte