Separando letra a letra

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

Separando letra a letra

Mensagem por rbonotto »

Ola,

Estou tentando pegar uma string e desmonta-la letra a letra. Por exemplo:

"apartamento"

var1 := ´a´
var2 := ´p´
var3 := ´a´
var4 := ´r´
etc...

Tentei com a funcao LETFT mas ela vai acumulando:
wRd_cRpt := "apartamento"
cTrnUm := 1
WHILE cTrnUm <= 10
lTraCripta := LEFT(wRd_cRpt,cTrnUm)
@00,00 CLEAR TO 25,80
@ 01,01 SAY cTrnUm
@ 02,01 SAY lTraCripta
gravaletra(lTraCripta)
cTrnUm ++
END

Alguem teria uma ideia de como pegar letra a letra ?
mixsistemas@gmail.com
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Separando letra a letra

Mensagem por alxsts »

Olá!

Abaixo, algumas idéias:

Código: Selecionar todos

FUNCTION TstSplit()

   LOCAL aArray

   CLS

   aArray := StrSplit1( "Apartamento" )

   QOut( "StrSplit1" ) ; QOut()
   Aeval( aarray, { |e| QQout(e) } )

   QOut( "Tecle algo..." )
   Inkey(0)

   QOut( "StrSplit2" ) ; QOut()
   aArray := StrSplit2( "Apartamento" )

   Aeval( aArray, { |e| QQout(e) } )

   RETURN
//------------------------------------------------------------------------------
FUNCTION StrSplit1( cArg )

   LOCAL aArray := {}, nLen, nPos

   If ! Empty( cArg := AllTrim( cArg ) )
      nLen := Len( cArg )

      FOR nPos := 1 TO nLen
         AAdd( aArray, Substr( cArg, nPos, 1 ) )
      Next
   Endif

   RETURN aArray 
//------------------------------------------------------------------------------
FUNCTION StrSplit2( cArg )

   LOCAL aArray := {}


   If ! Empty( cArg := AllTrim( cArg ) )
      
      WHILE ! Empty( cArg )
         AAdd( aArray, Left( cArg, 1 ) )
         If Len( cArg ) > 1
            cArg := Substr( cArg, 2 )
         Else
            cArg := ""
         Endif
      ENDDO
   ENDIF

   RETURN aArray 
//------------------------------------------------------------------------------
[]´s
Alexandre Santos (AlxSts)
anacatacombs
Membro Master
Membro Master
Mensagens: 472
Registrado em: 12 Jul 2005 16:53
Localização: Cianorte-Paraná
Contato:

Re: Separando letra a letra

Mensagem por anacatacombs »

Caso não tenha experiência com bloco de código, poderia usar um FOR também.

Código: Selecionar todos

cString:= "Mostra letra a letra"
nLinha := 01
FOR posi := 1 TO LEN(cString)
      @ nLinha,01 SAY SUBSTR(cString,posi,1) 
     nLinha++
NEXT 
[]'s

Ana
rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

Re: Separando letra a letra

Mensagem por rbonotto »

Obrigado pessoal ! problema resolvido ! :{ :)Pos
mixsistemas@gmail.com
Responder