Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: 79137913 en 16 Febrero 2011, 13:08 pm



Título: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: 79137913 en 16 Febrero 2011, 13:08 pm
HOLA!!!

Este reto consiste en poner mayusculas a las letras que estan delante de un punto , punto y aparte , nueva linea , signo de exclamacion o signo de interrogacion (abiertos o cerrados).

Estructura:
Código
  1. uCaseCorrect(Txt as String) as String

La funcion debe corregir las mayusculas de la cadena poniendo mayusculas despues de los puntos y en cuanto a los ¡! y ¿?  miren esto : http://goo.gl/z14ab

:¬¬ FROG :¬¬

Creo que con eso lo habran entendido...

GRACIAS POR LEER!!!


Título: Re: [RETO] uCaseCorrect(Txt as String) as String ______Corrector de Mayusculas.
Publicado por: Psyke1 en 16 Febrero 2011, 13:13 pm
Que bonito! :D
Me apunto! :)
Igual quedaría más divertido metiendo más cosas, como por ejemplo despues de las comas... :P

DoEvents! :P


Título: Re: [RETO] uCaseCorrect(Txt as String) as String ______Corrector de Mayusculas.
Publicado por: 79137913 en 16 Febrero 2011, 13:39 pm
HOLA!!!

Como despues de las comas? XD

Que yo sepa despues de las comas se escribe igual.

Ya se le agregamos los otros signos de puntuacion como ¿? y ¡! Que luego hay que escribir mayusculas.

GRACIAS POR LEER!!!


Título: Re: [RETO] uCaseCorrect(Txt as String) as String ______Corrector de Mayusculas.
Publicado por: Psyke1 en 16 Febrero 2011, 16:04 pm
Pero...
Mira esto : http://goo.gl/z14ab

DoEvents! :P


Título: Re: [RETO] uCaseCorrect(Txt as String) as String ______Corrector de Mayusculas.
Publicado por: 79137913 en 16 Febrero 2011, 16:09 pm
HOLA!!!

Actualizado el RETO!

Agregadas variables booleanas para seleccionar si queres poner mayusculas despues de puntos, signos de interrogacion o exclamacion.


GRACIAS POR LEER!!!


Título: Re: [RETO] uCaseCorrect(Txt as String) as String ______Corrector de Mayusculas.
Publicado por: Edu en 16 Febrero 2011, 16:18 pm
Pero Frog, en el coso q pasaste es porq dice un Nombre xD, voy a ver si puedo hacer este reto aunquesea xD


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: 79137913 en 16 Febrero 2011, 17:55 pm
HOLA!!!

Al fin!

Termine la funcion, estoy feliz con que sea funcional XD no se como me va a ir con la velocidad, seguro es lenta :P

Código
  1. Private Function uCaseCorrect7913(Txt As String) As String
  2. Dim X         As Long
  3. Dim Y         As Long
  4. Dim Aux()     As String
  5. Dim MED       As Long
  6. Dim Ubi()     As Long
  7. Dim Susp      As Long
  8. Dim SIGNO(2)  As String
  9.  
  10. SIGNO(0) = ".": SIGNO(1) = "?": SIGNO(2) = "!"   'TOMADO DE XXX-ZERO-XXX
  11.  
  12. Txt = "." & Txt & "a"
  13. ReDim Sus(Int(Len(Txt) / 3))
  14. ReDim Ubi(Len(Txt) + 5)
  15.    '".?¡"
  16.    For X = 0 To 2
  17.        Do
  18.            Y = Y + 1
  19.            Ubi(Y) = InStr(Ubi(Y - 1) + 1, Txt, SIGNO(X))
  20.        Loop While Ubi(Y) <> 0
  21.    Next
  22.    'COMPROBAR "..."
  23.    Do
  24.        Susp = InStr(Susp + 1, Txt, "...")
  25.        If Susp <> 0 Then
  26.            For X = 1 To Y
  27.                If Ubi(X) = Susp + 2 Then Ubi(X) = 0
  28.            Next
  29.        End If
  30.    Loop While Susp <> 0
  31.    'PONER MAYUSCULAS A LA PUNTUACION
  32.    ReDim Preserve Ubi(Y)
  33.    For X = 1 To Y
  34.        If Ubi(X) > 0 Then
  35.            MED = Ubi(X)
  36.            Do
  37.                MED = MED + 1
  38.            Loop While Not (((Asc(Mid$(Txt, MED, 1)) > 64) And Asc(Mid$(Txt, MED, 1)) < 91) Or ((Asc(Mid$(Txt, MED, 1)) > 96) And Asc(Mid$(Txt, MED, 1)) < 123)) And Not (Mid$(Txt, MED, 1) = "," Or Mid$(Txt, MED, 1) = ";" Or Mid$(Txt, MED, 1) = ".")
  39.            Mid$(Txt, MED, 1) = UCase$(Mid$(Txt, MED, 1))
  40.        End If
  41.    Next
  42.    'vbNewLine--------vbNewLine
  43.    Aux = Split(Txt, vbNewLine)
  44.    For X = 0 To UBound(Aux)
  45.        MED = 0
  46.        If X <> 0 Then
  47.            If Right$(Aux(X - 1), 1) = "." Or Right$(Aux(X - 1), 1) = "?" Or Right$(Aux(X - 1), 1) = "!" Then
  48.                Do
  49.                    MED = MED + 1
  50.                Loop While Not (((Asc(Mid$(Aux(X), MED, 1)) > 64) And Asc(Mid$(Aux(X), MED, 1)) < 91) Or ((Asc(Mid$(Aux(X), MED, 1)) > 96) And Asc(Mid$(Aux(X), MED, 1)) < 123))
  51.                Mid$(Aux(X), MED, 1) = UCase$(Mid$(Aux(X), MED, 1))
  52.            End If
  53.        End If
  54.    Next
  55.    For X = 0 To UBound(Aux)
  56.        uCaseCorrect7913 = uCaseCorrect7913 & Aux(X) & vbNewLine
  57.    Next
  58.    uCaseCorrect7913 = Mid$(uCaseCorrect7913, 2, Len(uCaseCorrect7913) - 4)
  59. End Function
  60.  

GRACIAS POR LEER!!!


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: Edu en 16 Febrero 2011, 18:39 pm
Bueno yo dejo la mia, como siempre 0 profesional xD pero bue.. talvez es la forma mas facil y eso es bueno no se.

EDITADOOO: Me dedico a otra cosa mejor mientras.. xD


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: BlackZeroX en 16 Febrero 2011, 18:54 pm
@79137913

Error:

Cadenas:

* "miguel, ¡cuanto me alegro de que hayas llamado!"
** Debe retornar: "Miguel, ¡cuánto me alegro de que hayas llamado!"

Dulces Lunas!¡.


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: Edu en 16 Febrero 2011, 19:00 pm
Me faltan mas cosas pero voy dejando aca, desp voy modificando este post:

Código
  1. Option Explicit
  2.  
  3. Function uCaseCorrect(txt As String) As String
  4.  
  5. Dim sFrase As String, sText As String
  6. Dim pos As Long, i As Long, k As Long
  7. Dim signo(4) As String
  8. signo(0) = "¡": signo(2) = "."
  9. signo(1) = "¿": signo(3) = "!": signo(4) = "?"
  10.  
  11. sText = UCase$(Left$(txt, 1))
  12. sFrase = sText & Mid$(txt, 2)
  13. uCaseCorrect = sFrase
  14.  
  15. For i = 0 To 4
  16. If InStr(1, sFrase, signo(i)) <> 0 Then
  17. k = 1
  18. Do
  19. pos = InStr(k, sFrase, signo(i))
  20. While Mid$(sFrase, pos + 1, 1) = " "
  21. pos = pos + 1
  22. Wend
  23. sText = UCase$(Mid$(sFrase, pos + 1, 1)) & Mid$(sFrase, pos + 2)
  24. sFrase = Left$(sFrase, pos) & sText
  25. k = k + 1
  26. Loop While InStr(k, sFrase, signo(i)) <> 0
  27. End If
  28. Next i
  29.  
  30. uCaseCorrect = sFrase
  31.  
  32. End Function
  33.  
  34. Private Sub Form_Load()
  35.  
  36. Debug.Print uCaseCorrect("¡hola! ¿como andas? espero que bien che!!!   Que pases bien entonces. chau. bye!")
  37.  
  38. End Sub
  39.  

Salida:

Citar
¡Hola! ¿Como andas? Espero que bien che!!!   Que pases bien entonces. Chau. Bye!


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: 79137913 en 16 Febrero 2011, 19:17 pm
HOLA!!!

@BlackZeroX▓▓▒▒░░: SOLUCIONADO, proba con el codigo nuevo.

GRACIAS POR LEER!!!


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: Edu en 16 Febrero 2011, 20:04 pm
Bueno ahora con nuevas reglas tengo q cambiar el codigo -_-' pero queda re simple ahora, mejor dejo asi ;)


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: Psyke1 en 16 Febrero 2011, 20:13 pm
Bueno, aquí dejo mi forma de hacerlo :rolleyes: :

Con una clase:
Código
  1. Option Explicit
  2. '======================================================================
  3. ' º Class      : cFrogUCase.cls
  4. ' º Version    : 1.3
  5. ' º Author     : Mr.Frog ©
  6. ' º Country    : Spain
  7. ' º Mail       : vbpsyke1@mixmail.com
  8. ' º Date       : 16/02/2011
  9. ' º Twitter    : http://twitter.com/#!/PsYkE1
  10. ' º Recommended Websites :
  11. '       http://foro.h-sec.org
  12. '       http://visual-coders.com.ar
  13. '       http://InfrAngeluX.Sytes.Net
  14. '======================================================================
  15. Private Declare Sub PutMem4 Lib "msvbvm60" (ByVal Ptr As Long, ByVal Value As Long)
  16. Private Declare Function VarPtrArray Lib "msvbvm60.dll" Alias "VarPtr" (Ptr() As Any) As Long
  17. Private Declare Function IsCharLowerA Lib "user32" (ByVal cChar As Integer) As Long
  18. Private Declare Function IsCharAlphaNumericA Lib "user32" (ByVal cChar As Integer) As Long
  19. Private Declare Function SysAllocStringByteLen Lib "oleaut32" (ByVal olestr As Long, ByVal BLen As Long) As Long
  20.  
  21. Private lngAscHeader&(0 To 5)
  22. Private intAsc%()
  23.  
  24. Friend Function CorrectUCase(ByRef strText$) As String
  25. Dim lngLength&, Q&
  26.  
  27.    lngLength = LenB(strText) \ 2
  28.    If lngLength Then
  29.        lngAscHeader(3) = StrPtr(strText)
  30.  
  31.        Do While Q < lngLength
  32.            If IsCharAlphaNumericA(intAsc(Q)) Then
  33.                If IsCharLowerA(intAsc(Q)) Then intAsc(Q) = intAsc(Q) - 32
  34.                Exit Do
  35.            End If
  36.            Q = Q + 1
  37.        Loop
  38.  
  39.        Q = Q + 1
  40.        Do While Q < lngLength
  41.            If intAsc(Q) < 64 Then
  42.                Select Case intAsc(Q)
  43.                    Case 33, 46, 63 '! . ?
  44.                        Do
  45.                            Q = Q + 1
  46.                            Select Case intAsc(Q)
  47.                                Case 59, 44, 46 '; , .
  48.                                    Q = Q + 1
  49.                                    GoTo Next_:
  50.                            End Select
  51.                        Loop While Q < lngLength And IsCharAlphaNumericA(intAsc(Q)) = 0
  52.  
  53.                        If IsCharLowerA(intAsc(Q)) Then intAsc(Q) = intAsc(Q) - 32
  54.                End Select
  55.            End If
  56. Next_:      Q = Q + 1
  57.        Loop
  58.  
  59.        PutMem4 VarPtr(CorrectUCase), SysAllocStringByteLen(VarPtr(intAsc(0)), lngLength + lngLength)
  60.    End If
  61. End Function
  62.  
  63. Private Sub Class_Initialize()
  64.    lngAscHeader(0) = &H1&: lngAscHeader(1) = &H2&: lngAscHeader(4) = &H7FFFFFFF
  65.    PutMem4 VarPtrArray(intAsc), VarPtr(lngAscHeader(0))
  66. End Sub
  67.  
  68. Private Sub Class_Terminate()
  69.    PutMem4 VarPtrArray(intAsc), 0&
  70. End Sub

Prueba:
Código
  1. Private Sub Form_Load()
  2.    Dim c As New cFrogUCase
  3.    Debug.Print c.CorrectUCase("¿hola como estás?  esto es sólo una prueba Miguel... y además : ¡funciona genial!  amo a las ranas!.")
  4.    Set c = Nothing
  5. End Sub

Retorno:
Código:
¿Hola como estás?  Esto es sólo una prueba Miguel... Y además : ¡funciona genial!  Amo a las ranas!.

DoEvents! :P


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: Edu en 16 Febrero 2011, 21:16 pm
Je y entonces frog porq le decias a 79137913 de cambiar el reto? xD entonces mi codigo es valido, hace lo mismo q el tuyo :P


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: Psyke1 en 16 Febrero 2011, 21:20 pm
Je y entonces frog porq le decias a 79137913 de cambiar el reto? xD entonces mi codigo es valido, hace lo mismo q el tuyo :P
Me confundí al copiar el resultado después de tantas pruebas que hice, ya está arreglado. ;)

DoEvents! :P


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: Edu en 16 Febrero 2011, 21:26 pm
Citar
Retorno:
Código:
¿Hola como estás?  Esto es sólo una prueba Miguel... Y además : ¡funciona genial!  Amo a las ranas!.

Despues de "¿Hola como estás? " no empezaria en minuscula?

Esta bien de cualkier forma q lo hagan para mi, la idea del reto se cumple ;)


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: Psyke1 en 16 Febrero 2011, 21:31 pm
Despues de "¿Hola como estás? " no empezaria en minuscula?

Esta bien de cualkier forma q lo hagan para mi, la idea del reto se cumple ;)
Mayúsculas después de :
Código:
.
!
?

DoEvents! :P


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: Psyke1 en 17 Febrero 2011, 02:19 am
Error:

Código
  1. Debug.Print uCaseCorrect7913(" hola. esto es solo! ¿una prueba? jajjaja")

Código:
Llamada a argumento o procedimiento no válidos

Código
  1. Private Function uCaseCorrect7913(Txt As String) As String
  2. Dim X         As Long
  3. Dim Y         As Long
  4. Dim Aux()     As String
  5. Dim MED       As Long
  6. Dim Ubi()     As Long
  7. Dim SIGNO(4)  As String
  8.  
  9. SIGNO(0) = ".": SIGNO(1) = "?": SIGNO(2) = "!"   'TOMADO DE XXX-ZERO-XXX
  10.  
  11.  
  12. Txt = Txt & "a"
  13. ReDim Ubi(Len(Txt) + 5)
  14.    '.?¡
  15.    For X = 0 To 2
  16.        Do
  17.            Y = Y + 1
  18.            Ubi(Y) = InStr(Ubi(Y - 1) + 1, Txt, SIGNO(X))
  19.        Loop While Ubi(Y) <> 0
  20.    Next
  21.    'vbNewLine--------vbNewLine
  22.    Aux = Split(Txt, vbNewLine)
  23.    For X = 0 To UBound(Aux)
  24.        Mid$(Aux(X), 1, 1) = UCase$(Mid$(Aux(X), 1, 1))
  25.    Next
  26.    For X = 0 To UBound(Aux)
  27.        If X = 0 Then
  28.            Mid$(Aux(X), 1, 1) = UCase$(Mid$(Aux(X), 1, 1))
  29.        Else
  30.            If Right$(Aux(X - 1), 1) = "." Or Right$(Aux(X - 1), 1) = "?" Or Right$(Aux(X - 1), 1) = "!" Then
  31.                Mid$(Aux(X), 1, 1) = UCase$(Mid$(Aux(X), 1, 1))
  32.            End If
  33.        End If
  34.    Next
  35.    uCaseCorrect7913 = Mid$(uCaseCorrect7913, 1, Len(uCaseCorrect7913) - 3)
  36. End Function

DoEvents! :P


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: BlackZeroX en 17 Febrero 2011, 05:10 am
@Mr. Frog

Errores:

Código:

¡Cómo ha nevado esta noche!; ¡qué blanco está todo!; ¡qué frío vamos a pasar hoy!» [RAE: Ortografía, 1999, § 5.6.4]


Código:

¿hola como estás? , esto es sólo una prueba Miguel... y además : ¡funciona genial!  amo a las ranas!.


Dulces Lunas!¡.


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: Psyke1 en 17 Febrero 2011, 09:23 am
Ook, gracias, ya modifiqué, ahora creo que ya está. :D

Código
  1. Private Sub Form_Load()
  2.    Dim c As New Class1
  3.    Debug.Print "----------------------------------------------------"
  4.    Debug.Print c.CorrectUCase("¡Cómo ha nevado esta noche!; ¡qué blanco está todo!; ¡qué frío vamos a pasar hoy!» [RAE: Ortografía, 1999, § 5.6.4]")
  5.    Debug.Print c.CorrectUCase("¿hola como estás? , esto es sólo una prueba Miguel... y además : ¡funciona genial!  amo a las ranas!.")
  6.    Set c = Nothing
  7. End Sub

Resultado:
Código:
----------------------------------------------------
¡Cómo ha nevado esta noche!; ¡qué blanco está todo!; ¡qué frío vamos a pasar hoy!» [RAE: Ortografía, 1999, § 5.6.4]
¿Hola como estás? , Esto es sólo una prueba Miguel... Y además : ¡funciona genial!  Amo a las ranas!.

Si veis algún detalle más a corregir decirlo ;)

DoEvents! :P


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: BlackZeroX en 17 Febrero 2011, 11:08 am
.
Solo corregiste para la 1ra cadena pero la segunda?

P.D.: Estoy bastante ocupado que no puedo participar.

Dulces Lunas!¡.


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: Psyke1 en 17 Febrero 2011, 11:16 am
Ya está! :P

DoEvents! :P


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: 79137913 en 17 Febrero 2011, 12:37 pm
HOLA!!!

@Mr. Frog: Habia tenido un inconveniente al copiar y pegar XD

Me habia quedado la mitad del codigo en el bloc de notas :P

GRACIAS POR LEER!!!


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: Psyke1 en 17 Febrero 2011, 13:05 pm
Te queda el mismo error que dijo BlackZer0x que me quedó a mi antes:

Código
  1. Private Sub Form_Load()
  2.    Debug.Print "----------------------------------------------------"
  3.    Debug.Print uCaseCorrect7913("¡Cómo ha nevado esta noche!; ¡qué blanco está todo!; ¡qué frío vamos a pasar hoy!» [RAE: Ortografía, 1999, § 5.6.4]")
  4.    Debug.Print uCaseCorrect7913("¿hola como estás? , esto es sólo una prueba Miguel... y además : ¡funciona genial!  amo a las ranas!.")
  5. End Sub

Código:
----------------------------------------------------
¡Cómo ha nevado esta noche!; ¡Qué blanco está todo!; ¡Qué frío vamos a pasar hoy!» [RAE: Ortografía, 1999, § 5.6.
¿Hola como estás? , Esto es sólo una prueba Miguel... Y además : ¡funciona genial!  Amo a las ranas

Debería de dar:
Código:
----------------------------------------------------
¡Cómo ha nevado esta noche!; ¡qué blanco está todo!; ¡qué frío vamos a pasar hoy!» [RAE: Ortografía, 1999, § 5.6.4]
¿Hola como estás? , Esto es sólo una prueba Miguel... Y además : ¡funciona genial!  Amo a las ranas!.

DoEvents! :P


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: 79137913 en 17 Febrero 2011, 13:15 pm
HOLA!!!

@Mr. Frog: Creo que ya esta, ahora si funciona como decis :P

Ahora si podes hacer el test de velocidad... aunque ya sabemos cual es mas rapida :(

XD

GRACIAS POR LEER!!!


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: Psyke1 en 17 Febrero 2011, 15:10 pm
Texto en Text1:
Código:
las declaraciones del presidente de la academia de cine español, álex de la iglesia, ayer por la tarde en el programa la ventana de la cadena ser para defender la finalmente tumbada ley sinde son de las que atacan el hígado y hacen que la sangre suba a la cabeza. o esta gente no se ha dado cuenta de en qué mundo vive, o se cree el ombligo del mundo. “si se follan (sic) una película en internet durante la primera semana de su estreno, esa cinta ya no levanta cabeza”, espetó de la iglesia. vaya. bienvenido al mundo real. le diré que no solo les pasa a ustedes. que, por ejemplo, si alguno de mis compañeros periodistas o yo misma escribimos un artículo, una exclusiva o un reportaje a fondo, tenemos que asumir que nuestro trabajo pase a ser gratuito en cuestión de horas, verlo flotar en múltiples páginas de internet y comprobar cómo, cada vez más, es muy complicado poder ingresar dinero por nuestro trabajo. el papel está a punto de pasar a la historia, sí. casi nadie está dispuesto a pagar por lo que puede tener gratis, también. es injusto y es muy difícil encontrar la solución, pues oiga, han descubierto ustedes la pólvora.
la diferencia es que el mundo del periodismo –y hablo de este porque es el que más conozco, aunque hay muchos otros ejemplos– se ve obligado a aceptar que es así porque las cosas evolucionan y, por tanto, los editores se rompen la cabeza a día de hoy para encontrar la solución: la tecla, el formato o la idea revolucionaria que haga compaginar las nuevas tecnologías con el hecho de poder ingresar dinero y que los profesionales puedan recibir un salario sin tener que depender de un mecenas o de las subvenciones del gobierno de turno. mientras medio mundo asume, mientras busca soluciones para reinventarse y superar esta problemática, algunos artistas se creen que solo ellos existen. que son las únicas víctimas del universo. dice de la iglesia que la ley sinde “beneficia a las compañías telefónicas”, porque cuanto más se use la red, más ganan. vaya. de perogrullo, claro. pues carguémonos internet, y aquí paz y después gloria.
“yo pido a los políticos que solucionen los problemas”, continúa el presidente de la academia de cine. ¿y a los demás, quién se los soluciona? porque le recuerdo que hay múltiples sectores con el agua al cuello, cada uno con su particular soga, y no por eso el gobierno crea una ley para cada uno de ellos que establezca un procedimiento de urgencia. a la gente de a pie no le queda más remedio que someterse a largos procesos judiciales para defender sus derechos. procesos demasiado largos, sí, pero ese ya sería otro tema.
“no hay por un lado los internautas y por otro lado los creadores. yo soy internauta y soy creador”, sigue de la iglesia. pues me gustaría saber si el señor presidente de la academia de cine se suscribe cada día a un periódico digital pagando una cuota y si nunca lee información gratuita, como casi todo hijo de vecino. porque de ser así, la siguiente pregunta es: ¿tiene usted un doble discurso o es que cree que solo en el mundo del cine y la música hay creadores y los demás son de segunda categoría?
si se hubiese aprobado la ley sinde, muchos otros estarían también en su derecho de reclamar su propiedad intelectual. el efecto dominó podría ser interminable, hasta suponer que internet perdiese todo el sentido. algunos ya han encontrado la fórmula, respetando los derechos y ofreciendo algo distinto o novedoso por lo que la gente está dispuesta a pagar. pónganse las pilas. aunque claro, una suscripción no es tan rentable como vender un cd o un dvd a 20 euros. la baraja se llama internet. asumamos que no se puede romper, así que juguemos todos. eso sí, sin las cartas marcadas.

Test:
Código
  1. ' Compilado quitando comprobación de límites de arrays. :P
  2. Private Sub Form_Load()
  3. Dim t   As New CTiming
  4. Dim c1  As Class1
  5. Dim X   As Long
  6. Dim s   As String
  7.  
  8.    Set c1 = New Class1
  9.    AutoRedraw = True
  10.  
  11.    s = Text1.Text
  12.  
  13.    t.Reset
  14.    For X = 1 To 20000
  15.        uCaseCorrect7913 s
  16.    Next
  17.    Me.Print "uCaseCorrect7913", t.sElapsed
  18.  
  19.    DoEvents
  20.  
  21.    t.Reset
  22.    For X = 1 To 20000
  23.        c1.CorrectUCase s
  24.    Next
  25.    Me.Print "cFrogUCase.cls", t.sElapsed
  26.  
  27.    Set c1 = Nothing
  28. End Sub

Resultado:
(http://img844.imageshack.us/img844/8171/dibujouu.jpg)

DoEvents! :P


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: ssccaann43 © en 17 Febrero 2011, 15:46 pm
jajajaja, me encanta ver estos retos..! Excelente Rana...!


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: BlackZeroX en 18 Febrero 2011, 04:04 am
.
Esta mal, delante de la coma...

Código:

¡Cómo ha nevado esta noche!; ¡qué blanco está todo!; ¡qué frío vamos a pasar hoy!» [RAE: Ortografía, 1999, § 5.6.4]
¿Hola como estás? , Esto es sólo una prueba Miguel... Y además : ¡funciona genial!  Amo a las ranas!.


Error en la coma.
Signos de puntuación (La Coma) (http://es.wikipedia.org/wiki/Signo_de_puntuaci%C3%B3n#La_coma)

Error en puntos suspensivos:
Puntos Suspensivos (http://es.wikipedia.org/wiki/Puntos_suspensivos)

Dulces Lunas!¡.


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: Psyke1 en 18 Febrero 2011, 09:11 am
Ook, nueeevas cosas a añadir... :D
Sería así:
Código:
¿Hola como estás? , esto es sólo una prueba Miguel... y además : ¡funciona genial!  Amo a las ranas!.

DoEvents! :P


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: 79137913 en 18 Febrero 2011, 13:14 pm
HOLA!!!

Funcional!

GRACIAS POR LEER!!!


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: Psyke1 en 18 Febrero 2011, 14:24 pm
Ya está corregido el mío también... :)



Prueba:
Código
  1. Private Sub Form_Load()
  2. Dim c1  As Class1
  3. Const s1 As String = "¿hola como estás? , esto es sólo una prueba Miguel... y además : ¡funciona genial!  amo a las ranas!."
  4.  
  5.    Set c1 = New Class1
  6.    Debug.Print c1.CorrectUCase(s1)
  7.    Debug.Print uCaseCorrect7913(s1)
  8.    Set c1 = Nothing
  9. End sub

Retorno:
Código:
¿Hola como estás? , esto es sólo una prueba Miguel... y además : ¡funciona genial!  Amo a las ranas!.
¿Hola como estás? , esto es sólo una prueba Miguel... y además : ¡funciona genial!  Amo a las ranas!.A

Cambiando esta linea el 3 por un 4 me da resultado correcto:
Código
  1. uCaseCorrect7913 = Mid$(uCaseCorrect7913, 2, Len(uCaseCorrect7913) - 4)



Test:
Código
  1. 'Compilado quitando comprobación de límites de arrays
  2.  
  3. Option Explicit
  4.  
  5. Private Sub Form_Load()
  6. Dim t   As New CTiming
  7. Dim c1  As Class1
  8. Dim X   As Long
  9. Dim s   As String
  10.  
  11.    Set c1 = New Class1
  12.  
  13.    AutoRedraw = True
  14.  
  15.    s = Text1.Text '// Mismo contenido que en el anterior test
  16.  
  17.    t.Reset
  18.    For X = 1 To 1000
  19.        uCaseCorrect7913 s
  20.    Next
  21.    Me.Print "uCaseCorrect7913", t.sElapsed
  22.  
  23.    DoEvents
  24.  
  25.    t.Reset
  26.    For X = 1 To 1000
  27.        c1.CorrectUCase s
  28.    Next
  29.    Me.Print "cFrogUCase.cls", t.sElapsed
  30.  
  31.    Set c1 = Nothing
  32. End Sub

Resultado:
(http://img402.imageshack.us/img402/4255/dibujofln.jpg)

DoEvents! :P


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: BlackZeroX en 19 Febrero 2011, 07:31 am
yo no se ustedes pero si quieren algo al 100% mejor publicamos Varias cadenas en TODAS las sircustancias para que mas de uno ya tenga a la mano dichas cadenas y haga pruebas y ls compruebe con una ya que este perfecta, es decir meterle puntos comas al grede pero que sean coherentes y tambien por que no incoherentes; pero que estas ultimas nos reporte donde rayos hay errores.

P.D.: No vi el codigo de la Rana anteriormente completo, pero esta genial ese cambio de tipo de los bytes del char a los 2 bytes del integer para asi manipular la string de forma mas facil, si no mal recuerdo esto mismo lo hacia L.A..

Dulces Lunas!¡.


Título: Re: [RETO] uCaseCorrect. Corrector de Mayusculas!
Publicado por: ElFomador en 11 Mayo 2016, 17:51 pm
Este es mi código, espero que os guste. :P
Código
  1. Private Function uCaseCorrector(txt As String) As String
  2.    Dim Signos As String
  3.    Dim Espacios() As Integer
  4.    Dim a, b As Integer
  5.    Dim tmp As String
  6.    Dim tmp2 As String
  7.  
  8.    'Los signos a controlar, se puede incrementar
  9.    Signos = ".;:¿?¡!"
  10.  
  11.    'Sacamos los espacios
  12.    ReDim Espacios(1 To Len(txt))
  13.  
  14.    For a = 1 To Len(txt)
  15.        b = b + 1
  16.        If Mid(txt, a, 1) = " " Then
  17.            Espacios(b) = b
  18.            b = b - 1
  19.        Else
  20.            tmp = tmp + Mid(txt, a, 1)
  21.        End If
  22.    Next a
  23.  
  24.    b = 0
  25.  
  26.    'Corregimos el texto
  27.    For b = 1 To Len(Signos)
  28.        For a = 1 To Len(tmp)
  29.            If Mid(tmp, a, 1) = Mid(Signos, b, 1) And a + 1 < Len(tmp) Then
  30.                Mid(tmp, a + 1, 1) = UCase(Mid(tmp, a + 1, 1))
  31.            End If
  32.        Next a
  33.    Next b
  34.  
  35.    'Colocamos los espacios
  36.    For a = 1 To Len(txt)
  37.        If Espacios(a) <> 0 Then
  38.            tmp2 = tmp2 + " " + Mid(tmp, a, 1)
  39.        Else
  40.            tmp2 = tmp2 + Mid(tmp, a, 1)
  41.        End If
  42.    Next a
  43.  
  44.    'La Solucion
  45.    uCaseCorrector = tmp2
  46. End Function
  47.  

Saludos