Tema destacado: Nueva página de elhacker.net en Google+ 
Autor
|
Tema: [RETO] Recortar cadena. (Leído 769 veces)
|
Psyke1
Wiki
Desconectado
Mensajes: 1.005
|
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! 
|
|
|
|
|
En línea
|
|
|
|
Tenient101
Desconectado
Mensajes: 127
|
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
Mensajes: 780
4 Esquinas
|
HOLA!!! Esto es la funcion inversa a un mid :S Aca mi codigo: Con primera letra POS 0: 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
|
|
|
|
|
79137913
Desconectado
Mensajes: 780
4 Esquinas
|
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
Mensajes: 2.832
I'Love...!¡.
|
Se supone que el primer indice de un caracter es el 1 no el 0... respecto a la string claro... Ej: Hol a hoy estoy cansado Call Recortar(s, 4, 4) Holy estoy cansado Vale todo el más rápido gana. Dulces Lunas!¡.
|
|
|
|
|
En línea
|
|
|
|
79137913
Desconectado
Mensajes: 780
4 Esquinas
|
HOLA!!! Se supone que el primer indice de un caracter es el 1 no el 0... respecto a la string claro... Ej: Hol a 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!!!
|
|
|
|
|
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
Mensajes: 331
Level xXx
|
 Funcion -> Eliminar pedazo de cadena, con su INICIO (VARIABLE) y su fin (VARIABLE) Function nico(ByVal testo As String, ByVal posini As Long, ByVal posfin As Long) final = Replace$(testo, (Mid(testo, posini, posfin)), "") MsgBox final Uso: 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... 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
Mensajes: 2.832
I'Love...!¡.
|
Vale todo el más rápido gana.
 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 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
|
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.005
|
Más tarde publico la mía. DoEvents! 
|
|
|
|
« Última modificación: 23 Octubre 2011, 13:50 por Psyke1 »
|
En línea
|
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.005
|
Vale todo el más rápido gana.   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! 
|
|
|
|
« Última modificación: 23 Octubre 2011, 20:43 por Psyke1 »
|
En línea
|
|
|
|
BlackZeroX (Astaroth)
Wiki
Desconectado
Mensajes: 2.832
I'Love...!¡.
|
@Psyke1 Tu funcion Crashea!¡. 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
|
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.005
|
A mí no me crashea con más de tres llamadas...  Prueba a quitar el Static por si acaso... DoEvents! 
|
|
|
|
|
En línea
|
|
|
|
BlackZeroX (Astaroth)
Wiki
Desconectado
Mensajes: 2.832
I'Love...!¡.
|
A mí no me crashea con más de tres llamadas...  ... 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: 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
|
|
|
|
BlackZeroX (Astaroth)
Wiki
Desconectado
Mensajes: 2.832
I'Love...!¡.
|
Cuando se Hacen los Test?
Dulces Lunas!¡.
|
|
|
|
|
En línea
|
|
|
|
|
| Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
recortar xp sp2
Windows
|
Legn@
|
8
|
2,633
|
1 Febrero 2008, 22:02
por ash_1987
|
|
|
recortar video swf
Dudas Generales
|
motocros_elche
|
2
|
2,130
|
2 Febrero 2010, 23:30
por motocros_elche
|
|
|
recortar texto vb6
Programación Visual Basic
|
Psyke1
|
2
|
2,365
|
28 Febrero 2010, 21:44
por Psyke1
|
|
|
Recortar número
Programación Visual Basic
|
Psyke1
|
11
|
1,526
|
12 Agosto 2010, 08:51
por Psyke1
|
|
|
[RETO] Entero a cadena
« 1 2 »
Programación Visual Basic
|
Karcrack
|
19
|
1,782
|
1 Septiembre 2010, 21:55
por Psyke1
|
|