Separacion de string en ciclo

Tengo un problema tengo un string.. Con los siguientes datos
ls_parametro= 1101,1102,1103,1104... Etc
lo que necesito es separar cada uno y meterlos en una variable.
Todo esto lo quiero meter en un ciclo, por que no se cual sera la longitud del string
tengo la idea.. Pero no la tengo clara de como hacerlo, creo que debo meterno en un ciclo y luego en un arreglo... Podrías ayudarme por favor

1 Respuesta

Respuesta
1
Princesa_zub Podrías almacenar los valores en un vector. De la siguiente manera.
integer i ,li_con
string ls_cadena
string vector[]
ls_cadena = '1111,2222,3333,4444,5555,6666,7777,8888,9999,1010,1111,1212'
for i = 1 to len(ls_cadena)
    if mid(ls_cadena,i,1) = ',' then
        li_con ++        
        vector[1] = mid(ls_cadena,1,4)            
        vector[li_con + 1] = mid(ls_cadena,i + 1,4)    
    end if
next
messagebox("",vector[1] )
messagebox("", vector[2] )
messagebox("", vector[3] )
messagebox("", vector[4] )
messagebox("", vector[5] )
messagebox("", vector[6] )
messagebox("", vector[7] )
messagebox("", vector[8] )
messagebox("", vector[9] )
messagebox("", vector[10] )
messagebox("", vector[11] )
messagebox("", vector[12] )
//Eso de los mensajes lo puse para el ejemplo no, porque si quisiera trabajar con ellos tendrías que hacerlo en un bucle, ahora esto funcionara siempre que tus cracteres delimitados por COMAS sean de 4.
Funciona super bien gracias...
vas a decir ke enfadosa soy... pero tengo otra duda, mira
 ya que tengo lleno cada vector como tu lo planteaste
messagebox("",vector[1] )  y sale 1101
messagebox("",vector[2] )       1102
messagebox("",vector[3] )      1103
 como puedo validar el dato de cada vector por decir, intente hacer esto.. que por cierto me marco error jeje
if vector[] = ls_codigo then
dw_1.Object.c_costo_cta[ 1] = 'S'
end if
Espero me haya explicado je je
Ayúdame pofistas
Ahora el IF que tienes pues tienes que indicarle el indice del vector que quieres comparar. De la siguiente manera.
if vector[1] = ls_codigo then
dw_1.Object.c_costo_cta[ 1] = 'S'
end if
Ahora si quieres validar todos los datos del vector tienes que meterlo en un bucle y en lugar del numero 1, tendrías que poner la variable entero.
Cualquier cosa te dejo mi msn carlosvera_10hotmail.com.
Osea me kedaria así:
integer i ,li_con
string ls_cadena ,ls_Codigo2,ls_cuenta_principal
string vector[]
ls_Codigo2 = dw_1.Object.c_costo_cta[ 1]
ls_cadena = f_getparmvalue('015')
for i = 1 to len(ls_cadena)
    if mid(ls_cadena,i,1) = ',' then
        li_con ++        
        vector[1] = mid(ls_cadena,1,4)            
        vector[li_con + 1] = mid(ls_cadena,i + 1,4)
    end if
next
ls_cuenta_principal = mid((ls_control),1,4)
  if vector[1] = ls_cuenta_principal then
  dw_1.Object.c_costo_cta[ 1] = 'S'
 else
  dw_1.Object.c_costo_cta[ 1] = 'S'
 end if
 mi duda es.. la validacion del vector[1] va dentro del For... o  fuera??
Por cierto aquí en mi trabajo solo tengo skype
agrega si gustas mi cuenta es kelly_alejandra
por cierto muchas gracias..! por tu ayuda... te debo mil jajja
Si la validación iría en un FOR, es que más que todo depende de la necesidad de la validación, pero en un for seria así.
for j =  1 to UpperBound(vector[])
   if vector[j] = ls_cuenta_principal then
       dw_1.Object.c_costo_cta[ j] = 'S'
   else
       dw_1.Object.c_costo_cta[ j] = 'N'
   end if
next
Con eso te comparas todas los valores del vector, contra tu variable CUENTA_PRINCIPAL.
Hola buen día... aquí sigo batallando je je
el código que me pasaste esta super bien, pero aquí veo un problemita, bueno eso creo..
por ke mira supongamos ke el vector 1 y  ls_cuenta_principal tiene el mismo valor entonces  al ver que ambos tiene el mismo valor.. asigna= 
dw_1.Object.c_costo_cta[ j] = 'S'           y todo bien =)
entonces le puse un return 0 .. para ke salga  y continue...
Pero si quiero volver a cambiar el segundo valor del vector2, entonces
entra el ciclo de nuevo y se encuentra que el vector 1 de nuevo y al ver que son diferentes le pone dw_1. Object. c_costo_cta[ j] = 'N' ... siendo ke tenia ke poner 'S'
te muestro mi codigo para ke veas si tengo al error.. ke lo mas seguro sea ke si jejeje
integer i ,li_con,j
string ls_cadena ,ls_Codigo2,ls_cuenta_principal,ls_costo
string vector[]
ls_Codigo2 = dw_1.Object.c_costo_cta[ 1]
ls_cadena = f_getparmvalue('015')
If istr_parm.s_cad[1] = 'M' or istr_parm.s_cad[1] = 'I'  Then
for i = 1 to len(ls_cadena)
    if mid(ls_cadena,i,1) = ',' then
        li_con ++        
        vector[1] = mid(ls_cadena,1,4)            
        vector[li_con + 1] = mid(ls_cadena,i + 1,4)
    end if
Next
ls_cuenta_principal = mid((dw_1.object.c_codigo[1]),1,4)
for j =  1 to UpperBound(vector[])
   if vector[j] = ls_cuenta_principal then
      dw_1.Object.c_costo_cta[ j]  = 'S'
  return 0
   else
     dw_1.Object.c_costo_cta[ j]  = 'N'
   return
   end if
next
End if  
Me dices en donde tengo el error... gracias! Y que tengas buen día!
No entiendo por que le pones el return? Deberías dejarlo que valide todo los registros. Mira lo que esta haciendo ese código es lo siguiente
Vector                    Cuenta(ls_cuenta_principa)                 dw_1.object.c_costo_cta
1020                      1020                                                     S
1021                      1020                                                     N    
1022                      1020                                                     N
1023                      1020                                                     N
Ahora no entiendo xq le pones el return? Lo raro para mi es tu variable ls_cuenta_principal, porque como ves en la tabla que te pongo siempre tendrá un valor fijo. Para mi la validación seria el vector, contra una lista de CUENTAS VALIDAS, o no se, lo que pasa es que no entiendo exactamente como es que quieres validar.
Hola buen día!
Mira.. lo que pasa es que ya lo probé el código sin el return, y lo que hace es que cuando entra la primera vez el vector1 = ls_cuenta_principal pone perfectamente el valor 'S'
 me marca un error en donde dice ke el valor  dw_1.object.c_costo_cta     
 no puede kedar null =(
Entonces yo le puse el return, para según yo je je decirle a pues. Como ya son iguales los datos debes salirte pero como le puse el return al inicio a pues.. jamas entra al vector 2 .
Espero haberme explicado je je, por cierto te agradezco muchísimo por ayuda! =)
ke crees al fin kedo, tenia mal un dato jeje
ls_cuenta_principal = mid((dw_1.object.c_codigo[1]),1,4)
for j =  1 to UpperBound(vector[])
 if vector[j] = ls_cuenta_principal then
    dw_1.Object.c_costo_cta[ 1]  = 'S'
  exit
 end if
next
Tenia que cambiar el [j] por [1] en el dw_1 y listo
pero en fin MuChiiisiMassS GRACIAS!     :)
Eres un excelente programador, cuidate que tengas una linda semana bye!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas