Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: 79137913 en 19 Octubre 2011, 17:37 pm



Título: [SOURCE] cConcatenar7913
Publicado por: 79137913 en 19 Octubre 2011, 17:37 pm
HOLA!!!

Sinceramente no se si sera tan rapida como la de Psyke1 pero me agrado y arme una, alguien haga un test :O

Código
  1. 'cConcatenar7913.cls
  2. Private Memoria As String
  3. Private Capacidad As Long
  4. Private TAM As Long
  5.  
  6. Private Sub Class_Initialize()
  7.        Capacidad = 65536
  8.        Memoria = Space$(65536)
  9.        TAM = 0
  10. End Sub
  11.  
  12. Public Sub Agregar(ByRef STR As String)
  13.    Dim actTAM As Long
  14.        actTAM = LenB(STR) / 2
  15.        Do While actTAM > Capacidad - TAM
  16.            Memoria = Memoria & Space$(Capacidad)
  17.            Capacidad = Capacidad * 2
  18.        Loop
  19.        MidB$(Memoria, TAM + TAM + 2) = STR
  20.        TAM = TAM + actTAM
  21. End Sub
  22.  
  23. Public Property Get CerrarSTR() As String
  24.        CerrarSTR = LeftB$(Memoria, TAM + TAM)
  25.        Call Class_Initialize
  26.        Debug.Print "Se ha borrado el string viejo y creado uno en blanco"
  27. End Property
  28.  
  29. Public Property Get TamañoACT() As Long
  30.        TamanoACT = TAM
  31. End Property

GRACIAS POR LEER!!!


Título: Re: [SOURCE] cConcatenar7913
Publicado por: Psyke1 en 19 Octubre 2011, 22:32 pm
Jajajajaja
¡Así me gusta! ¡Buen trabajo!
Yo estuve peleando con todo este tema hace poco, llegué a hacer mi clase más rápida, pero sebas123neo encontró una que es humanamente imposible de superar.
La idea que usa el hombre este es muy interesante, combinando mi manera de hacerlo con la que haces tú.
Hace un array de strings y va guardando el string en "páginas", muy interesante.
Aquí el código comparando con diferentes métodos, la diferencia es más que notable.
Código:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=37141&lngWId=1

PD: Como no haga Karcrack algo en ASMinline no se me ocurre una forma de hacerlo mejor... ;D

DoEvents! :P


Título: Re: [SOURCE] cConcatenar7913
Publicado por: BlackZeroX en 20 Octubre 2011, 02:06 am
.
El buffer de paginas es estatico?... Se me ocurrio algo...

Dulces Lunas!¡.


Título: Re: [SOURCE] cConcatenar7913
Publicado por: 79137913 en 20 Octubre 2011, 03:39 am
HOLA!!!

Mmm no se si te referis al buffer que uso yo, que por cierto es la variable memoria.

El buffer mio se aumenta la primera vez de 0 a 64kb y luego va multiplicandose por 2 cada vez que se supera, lo cual si es una cadena larga mejora el rendimiento ya que se cambia el buffer menos veces.

GRACIAS POR LEER!!!


Título: Re: [SOURCE] cConcatenar7913
Publicado por: BlackZeroX en 20 Octubre 2011, 03:43 am
.
El comentario era para Psyke1 pero ya revise el codigo de su enlace xP.

Dulces Lunas!¡.


Título: Re: [SOURCE] cConcatenar7913
Publicado por: Psyke1 en 20 Octubre 2011, 22:05 pm
@Black
¿Se te ocurre algo mejor?

PD: Acabar contigo un proyecto es imposible. :P

DoEvents! :P


Título: Re: [SOURCE] cConcatenar7913
Publicado por: BlackZeroX en 20 Octubre 2011, 22:34 pm
.
No ya no se me ocurrieron usar listas enlazadas para evitar usar el array pero no tiene caso...

P.D.: Me quede esperando una solucion por tu parte :-\ de lo contrario lo terminaria yo solo :silbar: digo ya tengo la mitad del troyecto terminado, inclusive toque la parte del proyecto que te correspondia...

Dulces Lunas!¡.