Página 1 de 1
Erro Ao extrair Digitos
Enviado: 25 Mai 2010 17:44
por Samuk.exe
Ola...
Comecei a Programar Pouco tempo Intao desculpe qualquer ignorancia.
O negocio é o Seguinte: Eu precisava extrair os caracteres de determinadas posiçoes.
Ex. Se fosse " 13465 "
Queria extrair o Segundo caracter. Resposta --->" 3 "
Andei pesquisando e achei a função ValPos()
Intao eu Fiz..
Código: Selecionar todos
...
Procedure Click
Local a,b
a := "12345678"
b := ValPos( a , 2 )
...
Mais o "b " fica vazio... Ou Seja , Não da resposta...
Se alguem puder me ajudar
Abraços
Re: Erro Ao extrair Digitos
Enviado: 25 Mai 2010 18:15
por Toledo
Olá Amigo, seja bem-vindo ao fórum!
O seu exemplo funciona sim, compile este outro exemplo:
Código: Selecionar todos
Function Main()
Local a,b
a := "12345678"
b := ValPos( a , 2 )
? b
Return Nil
Mas acho que o problema deve ser por que você está definindo a variável "b" como Local. E toda variável Local só mantem seu valor dentro da função que a criou.
Abraços,
Re: Erro Ao extrair Digitos
Enviado: 25 Mai 2010 20:21
por Samuk.exe
Amigo .. Tbm não resolveu! Continua retornando um campo vazio.
Tah ai o programa completo... Pra vcs testarem.
Código: Selecionar todos
#include "minigui.ch"
Function main()
i=0;
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 400 ;
HEIGHT 300;
TITLE 'EAN 13';
MAIN;
TOPMOST
@ 50 , 100 BUTTON Button_1;
CAPTION "Codigo de Barras";
ACTION CLick();
WIDTH 200;
HEIGHT 30;
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
Return
Procedure Click
a := InputBox (' Digite o Codigo de Barras', 'Codigo Ean' , 'Codigo',)
b := ValPos ( a , 2 )
MsgInfo ( b )
Return nil
O que vc falou d declarar o b como local, acho que não é. Pois msm sem declara Funfa!
Esse programa vai ser para calculo do digito verificador EAN... Se alguem já fez epuder ajudarrr...
Abraços
Re: Erro Ao extrair Digitos
Enviado: 25 Mai 2010 21:52
por Toledo
Realmente tem algum problema com a função ValPos(), então vamos usar a SUBSTR()...
Veja exemplo:
Código: Selecionar todos
Procedure Click
a := InputBox (' Digite o Codigo de Barras', 'Codigo Ean' , 'Codigo',)
b := Substr( a , 2, 1 )
MsgInfo ( b )
Return nil
Sobre o dígito verificador do EAN13, veja:
https://pctoledo.org/forum/viewto ... 107#p21422
Abraços,
Re: Erro Ao extrair Digitos
Enviado: 26 Mai 2010 08:04
por Samuk.exe
Valeu Toledo...
Com o Substr funcionou Sim!
Abraços!
Re: Erro Ao extrair Digitos
Enviado: 27 Mai 2010 03:10
por rochinha
Amiguinhos,
Se o caso era retornar o valor contido na variavel B mesmo que esta estivesse identificada como LOCAL bastaria devolver o resultado no RETURN.
Código: Selecionar todos
Function Main()
Local a,b
a := "12345678"
b := ValPos( a , 2 )
Return b
Código: Selecionar todos
Function RetornaValorNaPosicao( Valor, QualPosicao )
Return ValPos( Valor, QualPosicao )
Acho até que PROCEDURE é um termo em desuso ja que a possibilidade de uso de FUNCTION se torna mais maleável.
Só não entendi direito qual a forma de uso desta função que para mim é nova.
O 2 retorna a segunda posição?
O 2 retorna os dois caracteres a esquerda/direita?