[RETO] Recortar cadena.

Iniciado por Psyke1, 21 Octubre 2011, 10:18 AM

0 Miembros y 3 Visitantes están viendo este tema.

Psyke1

Código (vb) [Seleccionar]
Public Function DeleteString(ByVal sString As String, ByVal PosComienzo As Long, ByVal Longitud As Long) As String

Ej:
Hola hoy estoy cansado

Call Recortar(s, 4, 4)

Hola estoy cansado

Vale todo el más rápido gana.

DoEvents! :P

Sanlegas

#1
Código (vb) [Seleccionar]
Public Function DeleteString_TV1(ByVal sString As String, ByVal PosComienzo As Long, ByVal Longitud As Long)
DeleteString = Replace$(sString, Mid(sString, PosComienzo, Longitud), vbNullString)
End Function


Salu2

79137913

#2
HOLA!!!

Esto es la funcion inversa a un mid :S

Aca mi codigo:
Con primera letra POS 0:
Código (vb) [Seleccionar]
Public Function DeleteString7913(ByVal sString As String, ByVal PosComienzo As Long, ByVal Longitud As Long) As String
    DeleteString7913 = LeftB$(sString, PosComienzo + PosComienzo) & RightB$(sString, LenB(sString) - (PosComienzo + PosComienzo + Longitud + Longitud))
End Function


GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

Elemental Code

a = PosComienzo + PosComienzo

a = PosComienzo *2


:huh: :huh: :huh:

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

79137913

HOLA!!!

@Elemental:
Sumar x valores iguales es mas rapido que multiplicar por x
;)

GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

BlackZeroX

Se supone que el primer indice de un caracter es el 1 no el 0... respecto a la string claro...

Ej:
Hola hoy estoy cansado

Call Recortar(s, 4, 4)

Holy estoy cansado

Vale todo el más rápido gana.

Dulces Lunas!¡.
The Dark Shadow is my passion.

79137913

HOLA!!!

Cita de: BlackZeroX (Astaroth) en 21 Octubre 2011, 17:57 PM
Se supone que el primer indice de un caracter es el 1 no el 0... respecto a la string claro...

Ej:
Hola hoy estoy cansado

Call Recortar(s, 4, 4)

Holy estoy cansado

Vale todo el más rápido gana.

Dulces Lunas!¡.

Respetando el enunciado y ejemplos...

La primera letra es Pos = 0

GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

CAR3S?

#7
 ;D

Funcion -> Eliminar pedazo de cadena, con su INICIO (VARIABLE) y su fin (VARIABLE)

Código (vb) [Seleccionar]
Function nico(ByVal testo As String, ByVal posini As Long, ByVal posfin As Long)
final = Replace$(testo, (Mid(testo, posini, posfin)), "")
MsgBox final


Uso:

Código (vb) [Seleccionar]


sData = "-Viernes-21/10/2011"
   
   inicio = 1 'Desde la primera letra hasta.......
   fin = Len(sData) - 10 'Contamos los caracteres y le sacamos 10, que son los unicos que quiero dejar. Si sabemos que empieza en la primera letra, y que los ultimos 10 caracteres quiero dejar, sacara todo y dejara solo los ultimos 10 XD

nico (sData), inicio, fin



offffffffffffffffffff: creo que no entendi la consigna XD, pero me di cuenta que...

Código (vb) [Seleccionar]
sData = "-Viernes-21/10/2011"
inicio = 1
fin = Len(sData) - 10
cancer = Replace(sData, Mid(sData, inicio, fin), "")
MsgBox cancer

BlackZeroX

#8
Cita de: Psyke1 en 21 Octubre 2011, 10:18 AM
Vale todo el más rápido gana.

>:D

Código (Vb) [Seleccionar]


Option Explicit

Private Declare Sub RtlMoveMemory Lib "kernel32" (ByVal pDst As Any, ByVal pSrc As Any, ByVal ByteLen As Long)
Private Declare Sub PutMem4 Lib "msvbvm60" (ByVal Addr As Long, ByVal NewVal As Long)
Private Declare Sub PutMem2 Lib "msvbvm60" (ByVal Addr As Long, ByVal NewVal As Integer)
Private Declare Sub GetMem4 Lib "msvbvm60" (ByVal Addr As Long, ByVal RetVal As Long)

Public Function DeleteString_BZX(ByVal sString As String, ByVal lPosIni As Long, ByVal lSize As Long) As String
Dim lLnb    As Long
Dim lpStr   As Long

    If ((lSize Or lPosIni) And &H80000000) Then Exit Function
    lLnb = LenB(sString)
    if (lLnb = &H0) then exit function
    lSize = (lSize + lSize)
    lPosIni = (lPosIni + lPosIni)

    If (lPosIni >= lLnb) Then Exit Function
    lpStr = (lPosIni + lSize)

    If (lpStr > lLnb) Then
        lSize = (lLnb - lPosIni)
    End If

    GetMem4 VarPtr(sString), VarPtr(lpStr)
   
    If (lSize > &H0) Then
        lLnb = (lLnb - lSize)
        If (lLnb > lPosIni) Then
            RtlMoveMemory (lPosIni + lpStr), ((lPosIni + lpStr) + lSize), (lLnb - lPosIni)
            'MidB$(sString, (lPosIni + 1), (lLnb - lPosIni)) = MidB$(sString, (lPosIni + lSize + 1), (lLnb - lPosIni))
        End If
    End If

    PutMem2 ByVal (lpStr + lLnb), &H0
    PutMem4 ByVal (lpStr - &H4), lLnb
    PutMem4 VarPtr(DeleteString_BZX), lpStr
    PutMem4 VarPtr(sString), &H0
End Function



Código (vb) [Seleccionar]


Private Sub Form_Load()
    Debug.Print DeleteString_BZX("BlackZeroX", -1, 4), Len(DeleteString_BZX("BlackZeroX", -1, 4))
    Debug.Print DeleteString_BZX("BlackZeroX", 9, 4), Len(DeleteString_BZX("BlackZeroX", 9, 4))
    Debug.Print DeleteString_BZX("BlackZeroX", 0, -4), Len(DeleteString_BZX("BlackZeroX", 0, -4))
    Debug.Print DeleteString_BZX("BlackZeroX", 1, 4), Len(DeleteString_BZX("BlackZeroX", 1, 4))
    Debug.Print DeleteString_BZX("BlackZeroX", 0, 4), Len(DeleteString_BZX("BlackZeroX", 0, 4))
    Debug.Print DeleteString_BZX("BlackZeroX", 0, 400), Len(DeleteString_BZX("BlackZeroX", 0, 400))
End Sub



Temibles Lunas!¡.
The Dark Shadow is my passion.

Psyke1

#9
Más tarde publico la mía.


DoEvents! :P