Funcion de concatenar letras.
- jrestojeda
- Posts: 601
- Joined: Wed Jul 04, 2007 3:51 pm
- Location: Buenos Aires - Argentina
Funcion de concatenar letras.
Hola a todos...
Estoy necesitando una funcion que concatene letras al estilo columnas de planilla excel.
Me explico mejor...
Por ejemplo necesito 200 combinaciones. (Solo entre A y Z y ordenadas de la siguiente manera)
A,B,C,D,....X,Y,Z,AA,AB,AC,AD,...AX,AY,AZ,BA,BB,BC,BD, etc, hasta completar la cantidad de combinaciones que elija. (En este caso 200)
¿Alguien ya tiene esta función armada?
Desde ya muchas gracias.
Estoy necesitando una funcion que concatene letras al estilo columnas de planilla excel.
Me explico mejor...
Por ejemplo necesito 200 combinaciones. (Solo entre A y Z y ordenadas de la siguiente manera)
A,B,C,D,....X,Y,Z,AA,AB,AC,AD,...AX,AY,AZ,BA,BB,BC,BD, etc, hasta completar la cantidad de combinaciones que elija. (En este caso 200)
¿Alguien ya tiene esta función armada?
Desde ya muchas gracias.
Ojeda Esteban Eduardo.
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
- karinha
- Posts: 7935
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 3 times
- Contact:
Re: Funcion de concatenar letras.
Talbéz:
Code: Select all | Expand
cNombre := ALLTRIM(SA1->NOMBRE)
MSGINFO(“Dados do campo NOMEBRE:”+CRLF
“Tamanho:” + CVALTOCHAR(LEN(SA1->NOMBREE))+CRLF
“Texto:” + CVALTOCHAR(LEN(cNombre)))
FUNCTION Concatena(Arg1)
Local nConta := 0
Local cLetra := ""
Local cRet := ""
Arg1 := Upper(Arg1)
For nConta:= 1 To Len(Arg1)
cLetra := SubStr(Arg1, nConta, 1)
Do Case
Case (Asc(cLetra) > 191 .and. Asc(cLetra) < 198) .or.;
(Asc(cLetra) > 223 .and. Asc(cLetra) < 230)
cLetra := "A"
Case (Asc(cLetra) > 199 .and. Asc(cLetra) < 204) .or.;
(Asc(cLetra) > 231 .and. Asc(cLetra) < 236)
cLetra := "E"
Case (Asc(cLetra) > 204 .and. Asc(cLetra) < 207) .or.;
(Asc(cLetra) > 235 .and. Asc(cLetra) < 240)
cLetra := "I"
Case (Asc(cLetra) > 209 .and. Asc(cLetra) < 215) .or.;
(Asc(cLetra) == 240) .or. (Asc(cLetra) > 241 .and. Asc(cLetra) < 247)
cLetra := "O"
Case (Asc(cLetra) > 216 .and. Asc(cLetra) < 221) .or.;
(Asc(cLetra) > 248 .and. Asc(cLetra) < 253)
cLetra := "U"
Case Asc(cLetra) == 199 .or. Asc(cLetra) == 231
cLetra := "C"
EndCase
cRet := cRet+cLetra
Next
Return UPPER(cRet)
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
- jrestojeda
- Posts: 601
- Joined: Wed Jul 04, 2007 3:51 pm
- Location: Buenos Aires - Argentina
Re: Funcion de concatenar letras.
Gracias por la respuesta...
Por lo que veo en tu función hace otra cosa.
No es lo que necesito.
Por lo que veo en tu función hace otra cosa.
No es lo que necesito.
Ojeda Esteban Eduardo.
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
- karinha
- Posts: 7935
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 3 times
- Contact:
- jrestojeda
- Posts: 601
- Joined: Wed Jul 04, 2007 3:51 pm
- Location: Buenos Aires - Argentina
Re: Funcion de concatenar letras.
No,
Tampoco. Nada que ver con Excel, dije como las columnas del excel a modo de ejemplo.
Sería como contar con letras. (Con los caracteres desde 'A' a 'Z')
A,B,C,D,....X,Y,Z,AA,AB,AC,AD,...AX,AY,AZ,BA,BB,BC,BD, etc,
Poner por ejemplo:
aResultado:={}
FOR nCantidad=1 TO 200
cCadena := contar con letras
AADD(aResultado,cCadena)
NEXT
Y el resultado del array sería algo asi: {A,B,C,D,....X,Y,Z,AA,AB,AC,AD,...AX,AY,AZ,BA,BB,BC,BD, etc,}
Me expliqué mejor?
Tampoco. Nada que ver con Excel, dije como las columnas del excel a modo de ejemplo.
Sería como contar con letras. (Con los caracteres desde 'A' a 'Z')
A,B,C,D,....X,Y,Z,AA,AB,AC,AD,...AX,AY,AZ,BA,BB,BC,BD, etc,
Poner por ejemplo:
aResultado:={}
FOR nCantidad=1 TO 200
cCadena := contar con letras
AADD(aResultado,cCadena)
NEXT
Y el resultado del array sería algo asi: {A,B,C,D,....X,Y,Z,AA,AB,AC,AD,...AX,AY,AZ,BA,BB,BC,BD, etc,}
Me expliqué mejor?
Ojeda Esteban Eduardo.
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
- karinha
- Posts: 7935
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 3 times
- Contact:
Re: Funcion de concatenar letras.
Mira se ayuda:
http://www.pctoledo.com.br/forum/viewto ... unt#p74250
http://fivetechsupport.com/forums/viewt ... unt#p61655
Salu2.
http://www.pctoledo.com.br/forum/viewto ... unt#p74250
http://fivetechsupport.com/forums/viewt ... unt#p61655
Salu2.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
- jrestojeda
- Posts: 601
- Joined: Wed Jul 04, 2007 3:51 pm
- Location: Buenos Aires - Argentina
Re: Funcion de concatenar letras.
Karinha,
Sigue sin ser lo que necesito. No se si me estoy explicando mal...
Saludos,
Sigue sin ser lo que necesito. No se si me estoy explicando mal...
Saludos,
Ojeda Esteban Eduardo.
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
- FranciscoA
- Posts: 2163
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Funcion de concatenar letras.
Esteban, mira si es lo que necesitas. La he recién creado para agregarla a mi carpetas de ejemplos y pruebas:
Saludos.
Code: Select all | Expand
//-----------------------//Obtener x combinaciones de letras
FUNCTION CombinaLetras()
local aLetras := {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","Ñ","O","P","Q","R","S","T","U","V","W","X","Y","Z"}
local aCombinaciones := {}
local nCombinaciones := 200
local n:=0,n2,n3
local aLetCombi :={}
//AAdd(aCombinaciones,aLetras)
//En un array Multi-dimensional
For n2 := 1 to len(aLetras)
aLetCombi :={}
For n3 := 1 to len(aLetras)
aadd( aLetCombi, aLetras[n2] + aLetras[n3] )
if (n+=1) >= nCombinaciones
exit
endif
Next
aadd( aCombinaciones, aLetCombi )
if n >= nCombinaciones
exit
endif
Next
xBrowse(aCombinaciones,"COMBINACIONES DE LETRAS")
//En un array uni-dimensional
aCombinaciones := {} // ó aCombinaciones := aLetras, segun tu ejemplo
n:=0
For n2 := 1 to len(aLetras)
For n3 := 1 to len(aLetras)
aadd( aCombinaciones, aLetras[n2] + aLetras[n3] )
if (n+=1) >= nCombinaciones
exit
endif
Next
if n >= nCombinaciones
exit
endif
Next
MsgInfo("Longitud: "+str(len(aCombinaciones))+CRLF+;
"Ultima combinacion: "+Atail(aCombinaciones),"COMBINACIONES DE LETRAS - Array Uni-Dimensional")
Return nil
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
- karinha
- Posts: 7935
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 3 times
- Contact:
Re: Funcion de concatenar letras.
Puedes probar este trozo de código tambien
Code: Select all | Expand
#include "fivewin.ch"
Function Main()
Local nIni := 65 //"A"
Local nFin := 90 //"Z"
Local nVeces := 806 // Nº de Combinaciones
Local x
Local aCombina := {}
Local cResult := ""
aCombina := CombLetras( nIni, nFin, nVeces, aCombina, )
For x = 1 to Len( aCombina )
cResult := cResult + aCombina[ x ] + " "
Next x
? Str( Len( aCombina ) ) + CRLF + cResult
// xbrowse( aCombina )
Return nil
Function CombLetras( nIni, nFin, nCombina, aCombina, nChars )
Local x := 0
Local y := 0
Local z := nFin - nIni + 1
Local nPos := 0
DEFAULT nChars := 1
if empty( aCombina )
For x = nIni to nFin
AAdd( aCombina, Chr( x ) )
if len( aCombina ) >= nCombina
x := nFin + 1
endif
Next x
if z < nCombina
aCombina := CombLetras( nIni, nFin, nCombina, aCombina, nChars + 1 )
endif
else
nPos := Int( Len( aCombina ) / z )
For x = nIni to nFin
For y = nIni to nFin
AAdd( aCombina, aCombina[ nPos ] + Chr( y ) )
if len( aCombina ) >= nCombina
y := nFin + 1
endif
Next y
if len( aCombina ) >= nCombina
x := nFin + 1
endif
nPos++
Next x
if Len( aCombina ) < nCombina
aCombina := CombLetras( nIni, nFin, nCombina, aCombina, nChars + 1 )
endif
endif
Return aCombina
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: Funcion de concatenar letras.
Saludos
aqui tienes otro trozo de codigo
aqui tienes otro trozo de codigo
Code: Select all | Expand
#define _INICIO_A 65
#define _FIN_Z 90
#define _TOTAL_LETRAS ( _FIN_Z - _INICIO_A + 1)
function main()
local idx
local aColumnas := {}
local cTemp := ""
local n
for idx = 1 to 200
n = idx % _TOTAL_LETRAS
if idx > _TOTAL_LETRAS
cTemp = aColumnas[ int( idx / _TOTAL_LETRAS ) ]
end
AADD( aColumnas, cTemp + Chr( _INICIO_A + ( If( n == 0, _TOTAL_LETRAS, n ) ) - 1 ) )
next
return nil
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Re: Funcion de concatenar letras.
Y un poco mas depurado
Code: Select all | Expand
#include "fivewin.ch"
Function Main()
Local nIni := 65 //"A"
Local nFin := 90 //"Z"
Local nVeces := 806 // Nº de Combinaciones
Local x
Local aCombina := {}
Local cResult := ""
aCombina := CombLetras( nIni, nFin, nVeces, aCombina, )
For x = 1 to Len( aCombina )
cResult := cResult + aCombina[ x ] + " "
Next x
? Str( Len( aCombina ) ) + CRLF + cResult
// xbrowse( aCombina )
Return nil
Function CombLetras( nIni, nFin, nCombina, aCombina, nChars )
Local x := 0
Local y := 0
Local z := nFin - nIni + 1
Local nPos := 0
DEFAULT nChars := 1
nPos := Int( Len( aCombina ) / z )
For x = nIni to nFin
For y = nIni to nFin
if nPos > 0
AAdd( aCombina, aCombina[ nPos ] + Chr( y ) )
else
AAdd( aCombina, Chr( y ) )
endif
if len( aCombina ) >= nCombina
y := nFin + 1
endif
Next y
if len( aCombina ) >= nCombina
x := nFin + 1
endif
nPos++
Next x
if Len( aCombina ) < nCombina
aCombina := CombLetras( nIni, nFin, nCombina, aCombina, nChars + 1 )
endif
Return aCombina
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
- FranciscoA
- Posts: 2163
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Funcion de concatenar letras.
Jugando un poco...
Code: Select all | Expand
//-----------------------//Obtener x combinaciones de letras
FUNCTION CombinaLetras()
local aLetras := {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","Ñ","O","P","Q","R","S","T","U","V","W","X","Y","Z"}
local aCombinaciones := {}
local nCombinaciones := 200, lFin
local n:=0,n2,n3
local aLetCombi :={}
local lIncLetBases := .f.
local nCombMaximas
if !MisGets("Combinacion de Letras",,"¿Cuantas combinaciones desea?",@nCombinaciones,"Lupa")
Return nil
endif
if MsgYesNo("Incluir las letras bases? (A...Z)","Elija su opcion")
lIncLetBases := .t.
nCombMaximas := len(aLetras) + ( len(aLetras)*len(aLetras) )
else
nCombMaximas := ( len(aLetras)*len(aLetras) )
endif
if nCombinaciones > nCombMaximas
MsgStop( "Combinaciones maximas permitidas son: "+alltrim(str(nCombMaximas)) )
return nil
endif
//Si queremos incluir las letras bases...
if lIncLetBases
AAdd(aCombinaciones,aLetras)
n := len(aLetras)
endif
//EN UN ARRAY MULTI-DIMENSIONAL
For n2 := 1 to len(aLetras)
aLetCombi :={}
For n3 := 1 to len(aLetras)
aadd( aLetCombi, aLetras[n2] + aLetras[n3] )
if (n+=1) >= nCombinaciones
exit
endif
Next
aadd( aCombinaciones, aLetCombi )
if n >= nCombinaciones
exit
endif
Next
xBrowse(aCombinaciones,Str(nCombinaciones)+" COMBINACIONES DE LETRAS")
//EN UN ARRAY UNI-DIMENSIONAL
aCombinaciones := {}
n:=0
lFin:=.f.
//Si queremos incluir las letras bases...
if lIncLetBases
For n := 1 to len(aLetras)
aadd(aCombinaciones,{n,aLetras[n]})
Next
n:=len(aLetras)
endif
For n2 := 1 to len(aLetras)
For n3 := 1 to len(aLetras)
n+=1
aadd( aCombinaciones, {n, aLetras[n2] + aLetras[n3]} )
if n >= nCombinaciones
lFin := .t.
exit
endif
Next
if lFin
exit
endif
Next
XBROWSE(aCombinaciones, Str(nCombinaciones)+" COMBINACIONES DE LETRAS")
Return nil
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
- jrestojeda
- Posts: 601
- Joined: Wed Jul 04, 2007 3:51 pm
- Location: Buenos Aires - Argentina
Re: Funcion de concatenar letras.
Bueno gente...
Muchas gracias a por sus respuestas.
Ya tengo como para jugar bastante!!
Saludos a todos,
Muchas gracias a por sus respuestas.
Ya tengo como para jugar bastante!!
Saludos a todos,
Ojeda Esteban Eduardo.
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda