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