| 
	
		|  Autor | Tema: [SRC] + [Función] Text_Between_Words [by *PsYkE1*]  (Leído 7,322 veces) |  
	| 
			| 
					
						| Psyke1 
								Wiki  Desconectado 
								Mensajes: 1.089
								
								     | 
 
Gracias Black!   Corregire esos detalles...     Se puede hacer en una linea! En cuanto a lo del Msgbox lo hice para que fuera mas grafico, para no meter el resultado de la funcion en una variable...   Como me recomiendas ponerlo?¿    Salu2!   
 
 |  
						| 
								|  |  
								| « Última modificación:  1 Junio 2010, 00:14 am por *PsYkE1* » |  En línea | 
 
 |  |  |  | 
			| 
					
						| BlackZeroX 
								Wiki  Desconectado 
								Mensajes: 3.158
								
								 
								I'Love...!¡.
								
								
								
								
								
								     | 
 
si se puede en una linea lo malo es que se usan variadas veces   Len() o Instr() o X cosa yo pefiero hacerlo una sola vez aun  que sean mas lineas.  Private Function TextoEntreMedio(Texto As String, Palabra1 As String, Palabra2 As String)    TextoEntreMedio = Left$(Mid$(Texto, InStr(Texto, Palabra1) + Len(Palabra1)), InStr(Mid$(Texto, InStr(Texto, Palabra1) + Len(Palabra1)), Palabra2) - 1)End Function  
 y lo del msgbox como dije no metas nada dentro de una funcion a mi personalmente no me convence por que no es DINAMICO . A se me paso lo del Mid() cuando uses un string usa Mid$() en lugar de Mid() es cuando tomas X texto y lo almacenas en una variable tipo strinmg o similar!¡. Dulce Infierno Lunar!¡.
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 The Dark Shadow is my passion. |  |  |  | 
			| 
					
						| Psyke1 
								Wiki  Desconectado 
								Mensajes: 1.089
								
								     | 
 
mmmmmmmm OK Porque no es aconsejable utilizar muchas veces  Len() o Instr()??    Lo de Mid$() lo sabia, pero se me olvido...    (ya esta corregido) Gracias! |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  |  |  | 
			| 
					
						| BlackZeroX 
								Wiki  Desconectado 
								Mensajes: 3.158
								
								 
								I'Love...!¡.
								
								
								
								
								
								     | 
 
1er Caso:mmmmmmmm OK Porque no es aconsejable utilizar muchas veces  Len() o Instr()??    Lo de Mid$() lo sabia, pero se me olvido...    (ya esta corregido) Gracias!Donde 12 +5 se repite una sola vez y se usa su resultado: 2do Caso: Variable1 = 12 + 5Variable2 = Variable1 + 7 + 2 + Variable1  
 Donde (12+5) se repite 3 veces. Ahora imaginaVariable1 = (12 + 5) + (12 + 5) + 7 + 2 + (12 + 5)
 
 
 que ese (12 + 5) te conlleva 15 segundos: 1er Caso: Calculo de (12+5 = 15 seg ) + Segundos extras 2do Caso: Como se repite (12+5) tres veces: (12+5) = 15 segundos por 3 = 45 segundos + segundos extras Conclusion: Si puedes almacenar el resultado de una funcion o x dato en una variable será mas optimo por que no se repite el proceso inesesariamente!¡. En otras Palabras las cosas minimalistas NO SIEMPRE  son las mas optimas y adaptables!¡. P.D.: Como dice Seba123Neo  esa funcionla sa que de el post que cito.} Dulce Infierno Lunar!¡. |  
						| 
								|  |  
								| « Última modificación:  1 Junio 2010, 06:49 am por BlackZeroX▓▓▒▒░░ » |  En línea | 
 
 The Dark Shadow is my passion. |  |  |  | 
			| 
					
						| Psyke1 
								Wiki  Desconectado 
								Mensajes: 1.089
								
								     | 
 
por si no te fijaste, la que posteo BlackZeroX▓▓▒▒░░ , ya te la habia puesto en este post:[Ayuda] Leer texto webAJAJAJA   No me habia fijado... Gracias por la explicacion BlackZeroX▓▓▒▒░░!   Salu2! |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| cobein | 
 
Todas las funciones esas tiene un problema de logica..... Si, por ejemplo, hago una busqueda asi     Const StrOri As String = "Miguel Angel Ortega Avila"     Const StrIni As String = "El"     Const StrFin As String = "el" el resultado va a ser nulo porque se comienza a buscar desde el principio en ambas ocasiones y en realidad la segunda palabra se tiene que buscar a partir del final de la primera..... Public Function Entre_Texto(ByRef StrIn As String, ByVal StrIni As String, ByVal StrFin As String, Optional ComparacionEstricta As Boolean) As StringDim Pos(1) As Long
 Dim IniPos As Long
 
 If Len(StrIn) Then
 Pos(0) = InStr(1, StrIn, StrIni, Abs(Not ComparacionEstricta))
 If Pos(0) = 0 Then Exit Function
 IniPos = Pos(0) + Len(StrIni)
 Pos(1) = InStr(IniPos, StrIn, StrFin, Abs(Not ComparacionEstricta))
 If Pos(1) = 0 Then Exit Function
 Entre_Texto = Mid$(StrIn, IniPos, Pos(1) - IniPos)
 End If
 End Function
 
 Private Sub Form_Load()
 Const StrOri As String = "Miguel Angel Ortega Avila"
 Const StrIni As String = "El"
 Const StrFin As String = "el"
 
 'MsgBox Text_Between_Words(StrOri, StrIni, StrFin)
 'MsgBox TextoEntreMedio(StrOri, StrIni, StrFin)
 
 Debug.Print Entre_Texto(StrOri, StrIni, StrFin, True)
 Debug.Print Entre_Texto(StrOri, StrIni, StrFin, False)
 End Sub
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| BlackZeroX 
								Wiki  Desconectado 
								Mensajes: 3.158
								
								 
								I'Love...!¡.
								
								
								
								
								
								     | 
 
@Cobein  Public Function Entre_Texto(ByRef StrIn As String, ByVal StrIni As String, ByVal StrFin As String, Optional ComparacionEstricta As Boolean) As StringDim Pos(1) As LongDim IniPos As LongDim OptionalCompare As VbCompareMethod     If Len(StrIn) > 0 Then        If ComparacionEstricta Then            OptionalCompare = vbBinaryCompare        Else            OptionalCompare = vbTextCompare        End If        Pos(0) = InStr(1, StrIn, StrIni, OptionalCompare)        Pos(1) = InStr(1, StrIn, StrFin, OptionalCompare)        If CBool(Pos(0)) And CBool(Pos(1)) And Pos(0) < Pos(1) Then            IniPos = Pos(0) + Len(StrIni)            Entre_Texto = Mid$(StrIn, IniPos, Pos(1) - IniPos)        End If    End IfEnd FunctionPublic Function Entre_Texto_EditCobein(ByRef StrIn As String, ByVal StrIni As String, ByVal StrFin As String, Optional ComparacionEstricta As Boolean) As String    Dim Pos(1) As Long    Dim IniPos As Long     If Len(StrIn) Then        Pos(0) = InStr(1, StrIn, StrIni, Abs(Not ComparacionEstricta))        If Pos(0) = 0 Then Exit Function        IniPos = Pos(0) + Len(StrIni)        Pos(1) = InStr(IniPos, StrIn, StrFin, Abs(Not ComparacionEstricta))        If Pos(1) = 0 Then Exit Function        Entre_Texto_EditCobein = Mid$(StrIn, IniPos, Pos(1) - IniPos)    End IfEnd FunctionPrivate Sub Form_Load()    Const StrOri As String = "Miguel Angel Ortega Avila"    Const StrIni As String = "El"    Const StrFin As String = "el"    Debug.Print "BlackZeroX"    Debug.Print "with true """; Entre_Texto(StrOri, StrIni, StrFin, True); """"    Debug.Print "with false """; Entre_Texto(StrOri, StrIni, StrFin, False); """"    Debug.Print "Cobein"    Debug.Print "with true """; Entre_Texto_EditCobein(StrOri, StrIni, StrFin, True); """"    Debug.Print "with false """; Entre_Texto_EditCobein(StrOri, StrIni, StrFin, False); """"End Sub  
 Creo que no viste esta linea!¡.If CBool(Pos(0)) And CBool(Pos(1)) And Pos(0) < Pos(1) Then Aunque Cbool() se vea un poco demas solo es para compresion igual se quita. Dulñce Infierno Lunar!¡. |  
						| 
								|  |  
								|  |  En línea | 
 
 The Dark Shadow is my passion. |  |  |  | 
			| 
					
						| cobein | 
 
       IniPos = Pos(0) + Len(StrIni)
 Pos(1) = InStr(IniPos, StrIn, StrFin, Abs(Not ComparacionEstricta))
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| BlackZeroX 
								Wiki  Desconectado 
								Mensajes: 3.158
								
								 
								I'Love...!¡.
								
								
								
								
								
								     | 
 
ya Sorry xP se me paso ¬¬", aunque igual con la comparacion de aquella linea no deja seguir (y mira que postee el formato en este hilo).
 Edito:
 Aun asi es un error grave!¡.
 
 Dulce Infierno
 |  
						| 
								|  |  
								| « Última modificación:  2 Junio 2010, 07:08 am por BlackZeroX▓▓▒▒░░ » |  En línea | 
 
 The Dark Shadow is my passion. |  |  |  |  |  
 
	
   |