Autor
|
Tema: [RETO] Recortar cadena. (Leído 7,599 veces)
|
Psyke1
Wiki
Desconectado
Mensajes: 1.089
|
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 pm por Psyke1 »
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
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 pm por BlackZeroX (Astaroth) »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.089
|
A mí no me crashea con más de tres llamadas... Prueba a quitar el Static por si acaso... DoEvents!
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
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 pm por BlackZeroX (Astaroth) »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
Cuando se Hacen los Test?
Dulces Lunas!¡.
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Recortar imagenes
Diseño Gráfico
|
Superplay
|
9
|
4,264
|
12 Agosto 2005, 10:59 am
por Superplay
|
|
|
recortar archivo .fla
Diseño Gráfico
|
Unnamed
|
2
|
4,905
|
11 Septiembre 2008, 02:31 am
por Unnamed
|
|
|
recortar texto vb6
Programación Visual Basic
|
Psyke1
|
2
|
6,586
|
28 Febrero 2010, 21:44 pm
por Psyke1
|
|
|
Recortar número
« 1 2 »
Programación Visual Basic
|
Psyke1
|
11
|
4,992
|
12 Agosto 2010, 08:51 am
por Psyke1
|
|
|
[RETO] Entero a cadena
« 1 2 »
Programación Visual Basic
|
Karcrack
|
19
|
7,918
|
1 Septiembre 2010, 21:55 pm
por Psyke1
|
|