elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 09:00  


Tema destacado: Nueva página de elhacker.net en Google+ Google+

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo, raul338)
| | |-+  [RETO] Recortar cadena.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [RETO] Recortar cadena.  (Leído 769 veces)
Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.005



Ver Perfil WWW
[RETO] Recortar cadena.
« en: 21 Octubre 2011, 10:18 »

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

Ej:
Código:
Hola hoy estoy cansado

Código:
Call Recortar(s, 4, 4)

Código:
Hola estoy cansado

Vale todo el más rápido gana.

DoEvents! :P


En línea

Tenient101

Desconectado Desconectado

Mensajes: 127


Ver Perfil
Re: [RETO] Recortar cadena.
« Respuesta #1 en: 21 Octubre 2011, 10:44 »

Código
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


« Última modificación: 22 Octubre 2011, 07:20 por Tenient101 » En línea
79137913


Desconectado Desconectado

Mensajes: 780


4 Esquinas


Ver Perfil WWW
Re: [RETO] Recortar cadena.
« Respuesta #2 en: 21 Octubre 2011, 13:49 »

HOLA!!!

Esto es la funcion inversa a un mid :S

Aca mi codigo:
Con primera letra POS 0:
Código
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!!!
« Última modificación: 21 Octubre 2011, 21:18 por 79137913 » En línea

"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*                                                          Resumenes Cs.Economicas
Elemental Code


Desconectado Desconectado

Mensajes: 499


Im beyond the system


Ver Perfil
Re: [RETO] Recortar cadena.
« Respuesta #3 en: 21 Octubre 2011, 16:27 »

a = PosComienzo + PosComienzo

a = PosComienzo *2


 :huh: :huh: :huh:
En línea

79137913


Desconectado Desconectado

Mensajes: 780


4 Esquinas


Ver Perfil WWW
Re: [RETO] Recortar cadena.
« Respuesta #4 en: 21 Octubre 2011, 16:31 »

HOLA!!!

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

GRACIAS POR LEER!!!
En línea

"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*                                                          Resumenes Cs.Economicas
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.832


I'Love...!¡.


Ver Perfil WWW
Re: [RETO] Recortar cadena.
« Respuesta #5 en: 21 Octubre 2011, 17:57 »

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

Código:
Call Recortar(s, 4, 4)

Código:
Holy estoy cansado

Vale todo el más rápido gana.

Dulces Lunas!¡.
En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
79137913


Desconectado Desconectado

Mensajes: 780


4 Esquinas


Ver Perfil WWW
Re: [RETO] Recortar cadena.
« Respuesta #6 en: 21 Octubre 2011, 18:22 »

HOLA!!!

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

Código:
Call Recortar(s, 4, 4)

Código:
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!!!
En línea

"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*                                                          Resumenes Cs.Economicas
CAR3S?


Desconectado Desconectado

Mensajes: 331


Level xXx


Ver Perfil
Re: [RETO] Recortar cadena.
« Respuesta #7 en: 21 Octubre 2011, 18:49 »

 ;D

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

Código
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
 
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
sData = "-Viernes-21/10/2011"
inicio = 1
fin = Len(sData) - 10
cancer = Replace(sData, Mid(sData, inicio, fin), "")
MsgBox cancer
« Última modificación: 21 Octubre 2011, 19:04 por nukje » En línea
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.832


I'Love...!¡.


Ver Perfil WWW
Re: [RETO] Recortar cadena.
« Respuesta #8 en: 21 Octubre 2011, 19:27 »

Vale todo el más rápido gana.

 >:D

Código
 
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
 
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!¡.
« Última modificación: 23 Octubre 2011, 08:16 por BlackZeroX (Astaroth) » En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.005



Ver Perfil WWW
Re: [RETO] Recortar cadena.
« Respuesta #9 en: 23 Octubre 2011, 13:38 »

Más tarde publico la mía.


DoEvents! :P
« Última modificación: 23 Octubre 2011, 13:50 por Psyke1 » En línea

Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.005



Ver Perfil WWW
Re: [RETO] Recortar cadena.
« Respuesta #10 en: 23 Octubre 2011, 15:55 »

Vale todo el más rápido gana.
>:D

 >:D

Código
Option Explicit
Private Declare Sub RtlMoveMemory Lib "kernel32" (ByVal pDst As Long, ByVal pSrc As Long, ByVal ByteLen As Long)
Private Declare Function SysAllocStringByteLen Lib "oleaut32.dll" (ByVal oleStr As Long, ByVal BLen As Long) As Long
 
Public Static Function RemoveStr_Psyke1(ByVal sText As String, ByVal lPosIni As Long, ByVal lLen As Long) As String
Dim lLenB                                   As Long
Dim lpString                                As Long
 
   lLenB = LenB(sText)
   If lLenB Then
       If (lPosIni Or lLen) And &H80000000 Then Exit Function
 
       lLen = (lLen + lLen)
       lPosIni = (lPosIni + lPosIni)
 
       If (lPosIni + lLen) = lLenB Then lLen = lLenB
 
       If (lLen = lLenB) And (lPosIni = 0&) Then
           RemoveStr_Psyke1 = sText
           Exit Function
       End If
 
       lpString = StrPtr(sText)
 
       RtlMoveMemory (lpString + lPosIni), (lpString + lPosIni + lLen), (lLenB - lPosIni + lLen)
       RtlMoveMemory VarPtr(RemoveStr_Psyke1), VarPtr(SysAllocStringByteLen(lpString, lLenB - lLen)), 4&
   End If
End Function
 
Private Sub Form_Load()
   MsgBox RemoveStr_Psyke1("hola amigo 123456789", 4, 6)
End Sub

DoEvents! :P
« Última modificación: 23 Octubre 2011, 20:43 por Psyke1 » En línea

BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.832


I'Love...!¡.


Ver Perfil WWW
Re: [RETO] Recortar cadena.
« Respuesta #11 en: 23 Octubre 2011, 21:35 »

@Psyke1

Tu funcion Crashea!¡.

Código
 
   Debug.Print RemoveStr_Psyke1("BlackZeroX", -1, 4), Len(RemoveStr_Psyke1("BlackZeroX", -1, 4))
   Debug.Print RemoveStr_Psyke1("BlackZeroX", 9, 4), Len(RemoveStr_Psyke1("BlackZeroX", 9, 4))
   Debug.Print RemoveStr_Psyke1("BlackZeroX", 0, -4), Len(RemoveStr_Psyke1("BlackZeroX", 0, -4))
   Debug.Print RemoveStr_Psyke1("BlackZeroX", 1, 4), Len(RemoveStr_Psyke1("BlackZeroX", 1, 4))
   Debug.Print RemoveStr_Psyke1("BlackZeroX", 0, 4), Len(RemoveStr_Psyke1("BlackZeroX", 0, 4))
   Debug.Print RemoveStr_Psyke1("BlackZeroX", 0, 400), Len(RemoveStr_Psyke1("BlackZeroX", 0, 400))
 
 

Dulces Lunas!¡.
« Última modificación: 23 Octubre 2011, 21:40 por BlackZeroX (Astaroth) » En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.005



Ver Perfil WWW
Re: [RETO] Recortar cadena.
« Respuesta #12 en: 23 Octubre 2011, 21:50 »

A mí no me crashea con más de tres llamadas... :rolleyes:
Prueba a quitar el Static por si acaso...

DoEvents! :P
En línea

BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.832


I'Love...!¡.


Ver Perfil WWW
Re: [RETO] Recortar cadena.
« Respuesta #13 en: 23 Octubre 2011, 22:25 »

A mí no me crashea con más de tres llamadas... :rolleyes:

... Nada tiene que ver static (Que por cierto static para procesos carece de la funcionalidad habitual de llamada a funcion/proceso sin instanciar la clase y por ende esta demas en una funcion miembro static para variables muy diferente a static para miembros de clases y TODO esto deberia ser lo mismo para vb6, pero no es asi).

 * El unico uso que le preveo es una Generalizacion de la declaracion static para las declaraciones internas para EVITAR que se autodestruyan las variables.
 
Mira este codigo:

Código
 
Option Explicit
 
Private Sub Form_Load()
   Debug.Print holaNoStatic, holaStatic
   Debug.Print holaNoStatic, holaStatic
   Debug.Print holaNoStatic, holaStatic
   Debug.Print holaNoStatic, holaStatic
   Debug.Print holaNoStatic, holaStatic
   Debug.Print holaNoStatic, holaStatic
   Debug.Print holaNoStatic, holaStatic
   Debug.Print holaNoStatic, holaStatic
End Sub
 
Public Function holaNoStatic() As String
Dim a As Integer
   Debug.Print "[a=" & VarPtr(a) & "]",
   holaNoStatic = a
   a = a + 1
End Function
 
Public Static Function holaStatic() As String
Dim a As Integer
   Debug.Print "[a=" & VarPtr(a) & "]"
   holaStatic = a
   a = a + 1
End Function
 
 

Revisa tu funcion con las 6 pruebas que deje en el anterior post.

Dulces Lunas!¡.
« Última modificación: 23 Octubre 2011, 22:31 por BlackZeroX (Astaroth) » En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.832


I'Love...!¡.


Ver Perfil WWW
Re: [RETO] Recortar cadena.
« Respuesta #14 en: 29 Octubre 2011, 02:22 »

Cuando se Hacen los Test?

Dulces Lunas!¡.
En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
recortar xp sp2
Windows
Legn@ 8 2,633 Último mensaje 1 Febrero 2008, 22:02
por ash_1987
recortar video swf
Dudas Generales
motocros_elche 2 2,130 Último mensaje 2 Febrero 2010, 23:30
por motocros_elche
recortar texto vb6
Programación Visual Basic
Psyke1 2 2,365 Último mensaje 28 Febrero 2010, 21:44
por Psyke1
Recortar número
Programación Visual Basic
Psyke1 11 1,526 Último mensaje 12 Agosto 2010, 08:51
por Psyke1
[RETO] Entero a cadena « 1 2 »
Programación Visual Basic
Karcrack 19 1,782 Último mensaje 1 Septiembre 2010, 21:55
por Psyke1
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines