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?
String em valor
Moderador: Moderadores
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Re: String em valor
Amiguinho,
Coloque:
SET DATE TO BRIT
No inicio do seu programa
Coloque:
SET DATE TO BRIT
No inicio do seu programa
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Re: String em valor
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)
2) Transforme a virgula em ponto: var3 := strtran(var2, ',', '.')
3) Transforme o valor da variável de string para numerico: var4 := val(var3)
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Re: String em valor
Olá!
Segue outra solução.
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
//------------------------------------------------------------------------------
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
String em valor
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.
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 ??
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)+" | "
NEXTUm clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Re: String em valor
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"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
