- Code: Select all Expand view
function Ponceros( cValor, nCeros )
cValor = strzero( val( cValor ), nCeros )
return .T.
ponga esta funcion en un valid y envie cValor como referencia Poncers( @cValor, 6 )
saludos
Wilson
function Ponceros( cValor, nCeros )
cValor = strzero( val( cValor ), nCeros )
return .T.
wilsongamboa wrote:Rosita buenas tardes
- Code: Select all Expand view
function Ponceros( cValor, nCeros )
cValor = strzero( val( cValor ), nCeros )
return .T.
ponga esta funcion en un valid y envie cValor como referencia Poncers( @cValor, 6 )
saludos
Wilson
function ValidaMascara( cValor )
local aValores := listasarray( alltrim( cValor ), '-' )
local i
local cResult := ''
//0002-0001-0003-0004
for i = 1 to len( aValores )
cResult += strzero( val( aValores[ i ] ), 4 ) + if( i == len( aValores ), '', '-' )
next
cValor = cResult
return .t.
/***
* ListAsArray( <cList>, <cDelimiter> ) --> aList
* Converierte un string delimitado a un array de elementos
*
*/
FUNCTION ListAsArray( cList, cDelimiter )
LOCAL nPos
LOCAL aList := {} // Defino un array vac¡o
IF cDelimiter = NIL
cDelimiter := ","
ENDIF
//
DO WHILE (nPos := AT(cDelimiter, cList)) != 0
AADD(aList, SUBSTR(cList, 1, nPos - 1)) // Aumento nuevo elemento del array
cList := SUBSTR(cList, nPos + 1)
ENDDO
AADD(aList, cList) // aumento el £ltimo
//
RETURN aList // Retorno el array
wilsongamboa wrote:Ok le entendi mal
use esto
- Code: Select all Expand view
function ValidaMascara( cValor )
local aValores := listasarray( alltrim( cValor ), '-' )
local i
local cResult := ''
//0002-0001-0003-0004
for i = 1 to len( aValores )
cResult += strzero( val( aValores[ i ] ), 4 ) + if( i == len( aValores ), '', '-' )
next
cValor = cResult
return .t.
/***
* ListAsArray( <cList>, <cDelimiter> ) --> aList
* Converierte un string delimitado a un array de elementos
*
*/
FUNCTION ListAsArray( cList, cDelimiter )
LOCAL nPos
LOCAL aList := {} // Defino un array vac¡o
IF cDelimiter = NIL
cDelimiter := ","
ENDIF
//
DO WHILE (nPos := AT(cDelimiter, cList)) != 0
AADD(aList, SUBSTR(cList, 1, nPos - 1)) // Aumento nuevo elemento del array
cList := SUBSTR(cList, nPos + 1)
ENDDO
AADD(aList, cList) // aumento el £ltimo
//
RETURN aList // Retorno el array
llamandolo en un valid por referencia
saludos
Wilson
ender wrote:rosa te paso un manual de fivewin no es nuevo pero espero que para comprender su metologia te sirva .
https://www.dropbox.com/s/xhbwms3cqdew2 ... N.PDF?dl=0
p.d. no es mio y espero que el legitimo dueño no le importe si no retirare el enlace
wilsongamboa wrote:Rosita buenas tardes
No soy contador soy Ingeniero Electronico dedicado a programar desde hace muuuchos años
Me alegro mucho que le haya servido
Cualquier duda a las ordenes
saludos
Wilson
wilsongamboa wrote:Rosita
encantado de intercambiar experiencias tengo sistema contable funcionando varios años
saludos
Wilson
Rosita wrote:wilsongamboa wrote:Rosita
encantado de intercambiar experiencias tengo sistema contable funcionando varios años
saludos
Wilson
Gracias mi estimado Wilson, le dejo mi correo y el manual que descargue es interesante puros defines y mas defines .
este es mi correo rositatun@gmail.com
Gracias y saludos
Rosa
//------------------------------------------------------------------------------
* FORMATO1 CON GUION 0000-0000-0000-0000 ó SIN GUION 000000000000
FUNCTION FORMATO1(VarCta, Ctaf,lGuion)
Local lcad1, lcad2, lcad3, lCad4, I, cFormCta
I := 0
lcad1 := ""
lcad2 := ""
lcad3 := ""
lcad4 := ""
//Procesa el primer campo de 4 Digitos: 0000- // Nivel 1
Do While .T.
I=I+1
IF SubStr(Ctaf, I, 1) == '-' .OR. I > Len(Ctaf)
Exit
EndIF
lcad1 := lcad1 + SubStr(Ctaf, I , 1)
EndDo
//Procesa el segundo campo de 4 Digitos: 0000-0000 // Nivel 2
Do While .T.
I=I+1
IF SubStr(Ctaf, I, 1) == '-' .OR. I > Len(Ctaf)
Exit
EndIF
lcad2 := lcad2 + SubStr(Ctaf, I , 1)
EndDo
//Procesa el tercer campo de 4 Digitos: 0000-0000-0000 // Nivel 3
Do While .T.
I=I+1
IF SubStr(Ctaf, I, 1) == '-' .OR. I > Len(Ctaf)
Exit
EndIF
lcad3 := lcad3 + SubStr(Ctaf, I, 1)
EndDo
//Procesa el cuarto campo de 4 Digitos: 0000-0000-0000-0000 // Nivel 4
Do While .T.
I=I+1
IF SubStr(Ctaf, I, 1) == '-' .OR. I > Len(Ctaf)
Exit
EndIF
lcad4 := lcad4 + SubStr(Ctaf, I, 1)
EndDo
*Nota: Tienes que indicar los 3 '-', ej: 1--, y como resultado: 00001-0000-0000-0000
IF lGuion
cFormCta := STRZERO(Val(lcad1),4) +'-'+ STRZERO(Val(lcad2),4)+'-'+ STRZERO(Val(lcad3),4)+'-'+ STRZERO(Val(lcad4),4)
ELSE
cFormCta := STRZERO(Val(lcad1),4) + STRZERO(Val(lcad2),4) + STRZERO(Val(lcad3),4) + STRZERO(Val(lcad4),4)
ENDIF
*MsgInfo(cFormCta)
RETURN (cFormCta)
ACC69 wrote:Rosita wrote:wilsongamboa wrote:Rosita
encantado de intercambiar experiencias tengo sistema contable funcionando varios años
saludos
Wilson
Gracias mi estimado Wilson, le dejo mi correo y el manual que descargue es interesante puros defines y mas defines .
este es mi correo rositatun@gmail.com
Gracias y saludos
Rosa
Hola Ing. Rosi buenas tardes como esta, de antemano le envio cordial saludos.
Tarde pero llegue ,te paso la rutina de como rellenar ceros a la izquierda.
- Code: Select all Expand view
//------------------------------------------------------------------------------
* FORMATO1 CON GUION 0000-0000-0000-0000 ó SIN GUION 000000000000
FUNCTION FORMATO1(VarCta, Ctaf,lGuion)
Local lcad1, lcad2, lcad3, lCad4, I, cFormCta
I := 0
lcad1 := ""
lcad2 := ""
lcad3 := ""
lcad4 := ""
//Procesa el primer campo de 4 Digitos: 0000- // Nivel 1
Do While .T.
I=I+1
IF SubStr(Ctaf, I, 1) == '-' .OR. I > Len(Ctaf)
Exit
EndIF
lcad1 := lcad1 + SubStr(Ctaf, I , 1)
EndDo
//Procesa el segundo campo de 4 Digitos: 0000-0000 // Nivel 2
Do While .T.
I=I+1
IF SubStr(Ctaf, I, 1) == '-' .OR. I > Len(Ctaf)
Exit
EndIF
lcad2 := lcad2 + SubStr(Ctaf, I , 1)
EndDo
//Procesa el tercer campo de 4 Digitos: 0000-0000-0000 // Nivel 3
Do While .T.
I=I+1
IF SubStr(Ctaf, I, 1) == '-' .OR. I > Len(Ctaf)
Exit
EndIF
lcad3 := lcad3 + SubStr(Ctaf, I, 1)
EndDo
//Procesa el cuarto campo de 4 Digitos: 0000-0000-0000-0000 // Nivel 4
Do While .T.
I=I+1
IF SubStr(Ctaf, I, 1) == '-' .OR. I > Len(Ctaf)
Exit
EndIF
lcad4 := lcad4 + SubStr(Ctaf, I, 1)
EndDo
*Nota: Tienes que indicar los 3 '-', ej: 1--, y como resultado: 00001-0000-0000-0000
IF lGuion
cFormCta := STRZERO(Val(lcad1),4) +'-'+ STRZERO(Val(lcad2),4)+'-'+ STRZERO(Val(lcad3),4)+'-'+ STRZERO(Val(lcad4),4)
ELSE
cFormCta := STRZERO(Val(lcad1),4) + STRZERO(Val(lcad2),4) + STRZERO(Val(lcad3),4) + STRZERO(Val(lcad4),4)
ENDIF
*MsgInfo(cFormCta)
RETURN (cFormCta)
Esta es la funcion y como se usa ?:
Aqui desde get:
REDEFINE GET oG_D[01] VAR cCta ID 105 OF oDlg2 BITMAP "AYUDA" PICT "@K ###################";
ACTION ListCat(@cCta,S08,"cCta",oG_D[01]);
WHEN lNew VALID V_Cta()
Function V_CTA()
cCta := FORMATO1("cCta",cCta, .T.) // Si Permite separar guiones
cCta2 := FORMATO1("cCta",cCta, .F.) // No Permite separar guiones
RETURN NIL
Adaptalo a tus necesidades Rosi.
Si alguien la pueda mejorar,seria mejor
Saludos cordiales .
Atte: Adrian C. C.
acc69@hotmail.com
Willi Quintana wrote:Holas,,,
Disculpen, pero seria también fácil, tener 4 variables en 4 GETs, y luego a cada uno rellenar con los ceros a la izquierda (STRZERO(x)) y concatenarlos a una variable...
A1 := A2 := A3 := A4 := SPACE(4)
@ 5, 10 GET A1 PICTURE "9999"
@ 5, 15 GET A2 PICTURE "9999"
@ 5, 20 GET A3 PICTURE "9999"
@ 5, 25 GET A4 PICTURE "9999"
READ
A1 := STRZERO(VAL(A1),4)
A2 := STRZERO(VAL(A2),4)
A3 := STRZERO(VAL(A3),4)
A4 := STRZERO(VAL(A4),4)
AX := A1 + "-" + A2 + "-" + A3 + "-" + A4
@ X,Y SAY AX
RESULTADO 0034-0344-3445-0001
Saludos
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: Google [Bot] and 71 guests