Página 1 de 1

String em valor

Enviado: 11 Mar 2010 10:07
por fxavierds
Galera talvez essa pergunta seja básica demais mas não tou conseguindo resolver, então ai vai:

Tenho uma matriz de texto formatada da seguinte forma:

1 | Nome | 3.456,55 | 23,99 |

Dai utilizo uma função para separar cada item dessa matriz em um array (separador "|") o problema é que preciso pegar esses dois valores para totalizar, porém quando transformo o mesmo para valor utilizando a função val ele considera que a parte decimal é a partir do . (ponto) e não da vírgula, como faço para ele considera a partir da virgula?

Re: String em valor

Enviado: 11 Mar 2010 11:12
por rochinha
Amiguinho,

Coloque:

SET DATE TO BRIT

No inicio do seu programa

Re: String em valor

Enviado: 11 Mar 2010 14:35
por gvc
1) Remova o ponto da variável. var2 := strtran(var1, '.')
2) Transforme a virgula em ponto: var3 := strtran(var2, ',', '.')
3) Transforme o valor da variável de string para numerico: var4 := val(var3)

Re: String em valor

Enviado: 11 Mar 2010 15:11
por alxsts
Olá!

Segue outra solução.

Código: Selecionar todos


   LOCAL cVar, nVar

   cVar := 3.456,55 

   ? Val(  ( nVar := StrDigits( cVar ) ) ) / 10 

//------------------------------------------------------------------------------
Function StrDigits( cString )

   // #Alexandre Santos - 27/01/06 - 12:08
   // Extrai apenas os d¡gitos de uma string formatada, caso existam

   Local cRet := "", n, l, c

   If ! Empty( cString ) .and. ValType( cString ) == "C"
      l := Len( ( cString := AllTrim( cString ) ) )
      For n := 1 To l
         c  := Substr( cString, n, 1 )
         If Asc( c ) >= 48 .and. Asc( c ) <= 57
            cRet += c
         Endif
      Next
   Endif

   Return cRet
//------------------------------------------------------------------------------

String em valor

Enviado: 11 Mar 2010 18:02
por Pablo César
Xavier, no seu caso é um vetor que contém uma string "1 | Nome | 3.456,55 | 23,99 |". Eu pergunto, por quê você não colca esse valores com o tipo de dados que ele deviam possuir em MATRIZ.

Código: Selecionar todos

aMatriz:= {1,"Nome",3456.55,23.99}
FOR I=1 TO LEN(aMatriz)
    ? str(aMatriz[i,1]5,0)+" | "+aMatriz[i,2]+" | "+transform(aMatriz[i,3],""@e 9,999.99)+" | "+transform(aMatriz[i,4],""@e 999.99)+" | "
NEXT
Ou então envez de exibir na tela ou na impressão, adicione para outro vetor, não sei para que é esse formato, seria algo com o GAS ou Miro ??

Re: String em valor

Enviado: 12 Mar 2010 11:23
por gvc

Código: Selecionar todos

LOCAL cVar, var2, var3, var4

cls


cVar := "3.456,55"

// 1) Remova o ponto da variável. var2 := strtran(var1, '.')
var2 :=  strtran(cvar, '.')

// 2) Transforme a virgula em ponto: var3 := strtran(var2, ',', '.')
var3 := strtran(var2, ',', '.')

// 3) Transforme o valor da variável de string para numerico: var4 := val(var3)
var4 := val(var3)

? var4

// ou
? val(strtran(strtran(cvar, '.'), ',', '.'))

return