String em valor

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

fxavierds
Usuário Nível 1
Usuário Nível 1
Mensagens: 23
Registrado em: 18 Jul 2005 18:04

String em valor

Mensagem 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?
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: String em valor

Mensagem por rochinha »

Amiguinho,

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.
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Re: String em valor

Mensagem 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)
"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}
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: String em valor

Mensagem 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
//------------------------------------------------------------------------------
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

String em valor

Mensagem 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 ??
Um 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.
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Re: String em valor

Mensagem 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
"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}
Responder