Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - BlackZeroX

#2371
1byte = 1 Byte
1Long = 4 Bytes

Para pasarlo a long toma 4 bytes y con copymemory pega esos 4 bytes en una variable tipo long!¡, de igual forma con alguna otra variable de mayor amplitud como double!¡.

P.D.: no se si a esto te referias xP

Dulce Infierno Lunar!¡.
#2372
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
#2373
@Cobein

Código (vb) [Seleccionar]


Public Function Entre_Texto(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
Dim 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 If
End Function
Public 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 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"
   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!¡.
#2374
Cita de: BlackZeroX▓▓▒▒░░ en 29 Mayo 2010, 11:50 AM
[b]lo peor que se puede hacer en un lugar de un tema fijado es relacionarlo con otro cuando este no le importa en lo absoluto al individuo sudicho, aquen que lo de expresiones regulares esta bien... pero el ejemplo esta pesimo en este subforo.[/b]

* Aqui la liga a expresiones regulares en vb6.0.

http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/166-expresiones-regulares.htm

Dulce Infierno Lunar!¡.

#2375
usa el buscador este problema ya esta solucionado hasta donde se!¡.

Dulce Infierno Lunar!¡.
#2376
Cita de: *PsYkE1* en  1 Junio 2010, 00:54 AM
mmmmmmmm
OK
Porque no es aconsejable utilizar muchas veces  Len() o Instr()??  :huh:
Lo de Mid$() lo sabia, pero se me olvido... :P (ya esta corregido)

Gracias!

1er Caso:

Donde 12 +5 se repite una sola vez y se usa su resultado:

Código (vb) [Seleccionar]


Variable1 = 12 + 5
Variable2 = Variable1 + 7 + 2 + Variable1





2do Caso:

Donde (12+5) se repite 3 veces.



Variable1 = (12 + 5) + (12 + 5) + 7 + 2 + (12 + 5)



Ahora imagina 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!¡.

#2377
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.

Código (vb) [Seleccionar]


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!¡.
#2378

se me olvido el formato REAL de InStr() es



Function InStr([Start], [String1], [String2], [Compare As VbCompareMethod = vbBinaryCompare])
   Miembro de VBA.Strings
   Devuelve la posición de la primera instancia de una cadena dentro de otra

Function InStrB([Start], [String1], [String2], [Compare As VbCompareMethod = vbBinaryCompare])
   Miembro de VBA.Strings
   Devuelve la posición del byte de la primera instancia de una cadena dentro de otra

Function InStrRev(StringCheck As String, StringMatch As String, [Start As Long = -1], [Compare As VbCompareMethod = vbBinaryCompare]) As Long
   Miembro de VBA.Strings
   Returns the position of the last occurrence of one string within another



Para quien no sepa que funciones existen en vb6 abran el IDE creen o abaran un nuevo proyecto y opriman la fecla [/b]F2

Tamabien se pueden acceder desde el Intelicense escribiendo

VBA.

como si fuese

Me.

Text1.

ETC...



Dulce Infierno Lunar!¡.
#2379
.
Dejen de decir C&P y opinen ("Eso diria si fuese el autor del hilo...")

Código (vb) [Seleccionar]


Dim pos1 as integer



Es pos1 o pos?

para que no te sucedan estas cosas feas usa al inicio

Código (vb) [Seleccionar]


option explicit



* Lo peor que puedes hacer en una funcion es meterle un msgbox inputbox o X cosa SON ESTORBOS CREEME NO SON DINAMICOS.

Por otra parte...

Aqui esta mi funcion Entre Texto es "Anti-Error".

Código (vb) [Seleccionar]


'
' ////////////////////////////////////////////////////////////////
' // Autor: BlackZeroX ( Ortega Avila Miguel Angel )            //
' //                                                            //
' // Web: http://InfrAngeluX.Sytes.Net/                         //
' //                                                            //
' // |-> Pueden Distribuir Este Codigo siempre y cuando         //
' // no se eliminen los creditos originales de este codigo      //
' // No importando que sea modificado/editado o engrandesido    //
' // o achicado, si es en base a este codigo                    //
' ////////////////////////////////////////////////////////////////
Option Explicit
Public Function Entre_Texto(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
Dim 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 If
End Function



Aqui dejo tres funciones que hacen esactamente lo mismo (Ojo esta igual viene incluida pero corregida por un servidor, incluyo la que yo cree y use desde hace mucho).

Código (vb) [Seleccionar]


Option Explicit

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

Public Function Text_Between_Words(Text As String, String1 As String, String2 As String) As String
    Dim Pos1              As Integer
    Dim Pos2              As Integer
    Dim Start             As Integer
    Dim TotalLen          As Integer
    Pos1 = InStr(Text, String1)
    Pos2 = InStr(Text, String2)
    If Pos1 = 0 Or Pos2 = 0 Then GoTo NoExists
    Start = Pos1 + Len(String1)
    TotalLen = Pos2 - Start
    Text_Between_Words = Mid(Text, Start, TotalLen)
    Exit Function
NoExists:
    MsgBox "Error, check that the two words are in the text, if so," & vbCrLf _
    & " make sure you are entered correctly.", vbCritical
End Function

'
' ////////////////////////////////////////////////////////////////
' // Autor: BlackZeroX ( Ortega Avila Miguel Angel )            //
' //                                                            //
' // Web: http://InfrAngeluX.Sytes.Net/                         //
' //                                                            //
' // |-> Pueden Distribuir Este Codigo siempre y cuando         //
' // no se eliminen los creditos originales de este codigo      //
' // No importando que sea modificado/editado o engrandesido    //
' // o achicado, si es en base a este codigo                    //
' ////////////////////////////////////////////////////////////////
Public Function Entre_Texto(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
Dim 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 If
End Function

Private Sub Form_Load()
Const StrOri As String = "Miguel Angel Ortega Avila"
Const StrIni As String = "an"
Const StrFin As String = "vila"

    MsgBox Text_Between_Words(StrOri, StrIni, StrFin)
    MsgBox TextoEntreMedio(StrOri, StrIni, StrFin)
   
    MsgBox Entre_Texto(StrOri, StrIni, StrFin, True)
    MsgBox Entre_Texto(StrOri, StrIni, StrFin, False)
End Sub



Dulce Infierno Lunar!¡.
#2380
Cita de: Dreamaker en 29 Mayo 2010, 21:52 PM
Cuando pones:

Código (vb) [Seleccionar]
Dim TmpChar             As String * 1

Es para declarar que la variable contendrá un carácter y por eso se coloca el *1?

Para qué es necesario? Declarando que contendrá un sólo carácter ocupa menos memoria que si le pones un sólo caracter sin poner el *1?




yo en lo personal lo hago por que solo ocupo y dejo lo nesesario en su declaracion es decir su longitud maxima y cuando uso el mid$ no se nesesita seguir estos pasos:

Redimencionar string
establecer String

y esto X veces sea en el bucle por lo cual conlleva un poco mas de tiempo, por lo contrario si se hace de la forma en la declaracion en una longitud fija solo va a pasar a introducir el valor y la variable  string SIEMPRE va a contener la logitud deseada y si no se llenace totalmente se poner Bytes 0 o nullos.

Dulce Infierno Lunar!¡.