Lsplit (Split para Linux Gambas y alternativa VB6) By Linkgl
Publicado: 25 Dic 2009, 19:46
En gambas la funcion Split() no es como en vb6 en gambas no puedes reemplazar una cadena completa solo puedes reemplazar caracteres y eso cualquiera que programe malware no le sirve de nada, por eso me invente esta funcion llamda Lsplit
Codigo:
Modo de uso:
La funcion Lsplit tiene tres parametros 1 la frase entera, 2 la palabra a cortar 3 el numero de veces que se encuentra la palabra a cortar iniciando por el 0 la funcion devuelve un array inverso, un ejemplo:
Explicacion: a1 es un array que debe quedar como variable GLOBAL, para adaptar a visual basic debe ponerse en option explicit esa unica variable, el numero del array de a1 debe ser el numero de veces que se repite la firma si yo tengo #LINK# 3 veces contando desde 0 serian 2 (0, 1, 2) entonces a1 es a1[2] y como es inversa message(a1[2]) contiene hola
message(a1[1]) contiene como
message(a1[0]) contiene estas
DUDAS PREGUNTEN, el codigo es FACILISIMO adaptarlo a vb6 por eso no lo explicaré ademas de que en vb6 es inutil existiendo ya la funcion split() pero puede usarse por si un av detecta split reemplazas por Lsplit para que se vaya el av
Codigo:
Código: Seleccionar todo
' Gambas class file
'*****************************************************
'*****************************************************
'** Autor : Linkgl **
'** Version : 1.0 **
'** Funcion : Lsplit() **
'** Email : [email protected] **
'** Web : www.Indetectables.net **
'*****************************************************
'*****************************************************
'array con el numero de firmas que tiene nuestra string iniciando de 0
PUBLIC a1 AS String[3]
'declaramos la funcion
PUBLIC FUNCTION Lsplit(palabra AS String, limitador AS String, firmas AS Integer)
'buffer actua de almacen
DIM buffer AS String
'sp actua como el numero en la posicion en que se encuentra determinado caracter
DIM sp AS Integer
'i es usado en el bucle
DIM i AS Integer
'indicamos a buffer que almacene la palabra
buffer = palabra
'iniciamos el bucle hasta el numero de firmas que vamos a cortar
FOR i = 0 TO firmas
'extraemos la posicion del primer limitador de derecha a izquierda
sp = RInStr(buffer, limitador)
'sumamos la cantidad de caracteres que tiene el limitador para eliminarlas
sp = sp + Len(limitador)
'separamos el buffer o la palabra de la firma
a1[i] = Mid$(buffer, sp)
'reemplazamos la cadena por nada para ir reduciendola
buffer = Replace(buffer, limitador & a1[i], "")
'repetimos las acciones hasta que no haya mas firmas
NEXT
'la ultima firma la extraemos
a1[firmas] = buffer
END
La funcion Lsplit tiene tres parametros 1 la frase entera, 2 la palabra a cortar 3 el numero de veces que se encuentra la palabra a cortar iniciando por el 0 la funcion devuelve un array inverso, un ejemplo:
Código: Seleccionar todo
' Gambas class file
'*****************************************************
'*****************************************************
'** Autor : Linkgl **
'** Version : 1.0 **
'** Funcion : Lsplit() **
'** Email : [email protected] **
'** Web : www.Indetectables.net **
'*****************************************************
'*****************************************************
PUBLIC a1 AS String[2]
PUBLIC SUB Button1_Click()
Lsplit("hola#LINK#como#LINK#estas", "#LINK#", 2)
message(a1[2])
END
PUBLIC FUNCTION Lsplit(palabra AS String, limitador AS String, firmas AS Integer)
DIM buffer AS String
DIM sp AS Integer
DIM i AS Integer
buffer = palabra
FOR i = 0 TO firmas
sp = RInStr(buffer, limitador)
sp = sp + Len(limitador)
a1[i] = Mid$(buffer, sp)
buffer = Replace(buffer, limitador & a1[i], "")
NEXT
a1[firmas] = buffer
END
message(a1[1]) contiene como
message(a1[0]) contiene estas
DUDAS PREGUNTEN, el codigo es FACILISIMO adaptarlo a vb6 por eso no lo explicaré ademas de que en vb6 es inutil existiendo ya la funcion split() pero puede usarse por si un av detecta split reemplazas por Lsplit para que se vaya el av