[Herramienta+Source] Creador de "Cabezeras" para Codigo Fuente

Iniciado por agus0, 18 Diciembre 2010, 04:03 AM

0 Miembros y 1 Visitante están viendo este tema.

agus0

Hola Foro Como ahora estoy empezando a Hacer módulos y demás proyectos que voy a compartir dije ... "Tengo que ponerle mi marca, Como hacen Los chicos del foro..." así que para facilitarme la creación de estos me hice un programa que los Auto completa.... y lo comparto con Ustedes, por supuesto también el Source.

Se que el Código se puede reducir... pero Lo hice rapidito y sin pensarlo mucho, lo que mas me importaba era el resultado final, igual por supuesto siempre estoy abierto a criticas constructivas... sin mas Bla, Bla, Bla:




                                                                                                                                                           
Solo mMakeHeader.bas:

Código (vb) [Seleccionar]

'////////////////////////////////////////////////////////////////////////////////////////////////////////'
'///                                                                                                  ///'
'///  º Tite:          mMakeHeader.bas                                                                ///'
'///  º Author:        agus0                                                                          ///'
'///  º Mail:          agus0@vbfree.com.ar                                                            ///'
'///  º Date:          17/12/10                                                                       ///'
'///  º Contributors:  -                                                                              ///'
'///  º Web:           www.agus0.com.ar & www.vbfree.com.ar                                           ///'
'///                                                                                                  ///'
'////////////////////////////////////////////////////////////////////////////////////////////////////////'

Option Explicit

Private Const cLine1 = "'/////////////////////////////////////////////////////////////////////////////////////////////////////////'"
Private Const cLine2 = "'///                                                                                                   ///'"
Private Const cLineT = "'///  º Tite:          TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT  ///'"
Private Const cLineA = "'///  º Author:        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA  ///'"
Private Const cLineM = "'///  º Mail:          MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM  ///'"
Private Const cLineD = "'///  º Date:          DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD  ///'"
Private Const cLineC = "'///  º Contributors:  CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC  ///'"
Private Const cLineW = "'///  º Web:           WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW  ///'"
Private Const cLine3 = "'///                                                                                                   ///'"
Private Const cLine4 = "'/////////////////////////////////////////////////////////////////////////////////////////////////////////'"
Private Const cCadenaT = "TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
Private Const cCadenaA = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Private Const cCadenaM = "MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
Private Const cCadenaD = "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"
Private Const cCadenaC = "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
Private Const cCadenaW = "WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"

Public Function MakeHeader(Titulo As String, Autor As String, Mail As String, Fecha As String, Ayuda As String, Web As String, Optional Style As String = "///", Optional Vig As String = "º") As Variant
    Dim Linea1, Linea2, LineaT, LineaA, LineaM, LineaD, LineaC, LineaW, Linea3, Linea4 As String
    Dim B As Integer
    Dim Space As String
    'Estilos:
    Linea1 = Replace(cLine1, "///", Style)
    Linea2 = Replace(cLine2, "///", Style)
    Linea3 = Replace(cLine3, "///", Style)
    Linea4 = Replace(cLine4, "///", Style)
    LineaT = Replace(cLineT, "º", Vig)
    LineaT = Replace(LineaT, "///", Style)
    LineaA = Replace(cLineA, "º", Vig)
    LineaA = Replace(LineaA, "///", Style)
    LineaM = Replace(cLineM, "º", Vig)
    LineaM = Replace(LineaM, "///", Style)
    LineaD = Replace(cLineD, "º", Vig)
    LineaD = Replace(LineaD, "///", Style)
    LineaC = Replace(cLineC, "º", Vig)
    LineaC = Replace(LineaC, "///", Style)
    LineaW = Replace(cLineW, "º", Vig)
    LineaW = Replace(LineaW, "///", Style)
    'Pasaje de Variables (Max Len 77)
    Titulo = Left(Titulo, 77)
    Autor = Left(Autor, 77)
    Mail = Left(Mail, 77)
    Fecha = Left(Fecha, 77)
    Ayuda = Left(Ayuda, 77)
    Web = Left(Web, 76)
    Space = ""
    For B = Len(Titulo) To 77
        Space = Space & " "
    Next B
    LineaT = Replace(LineaT, cCadenaT, Titulo & Space)
    Space = ""
    For B = Len(Autor) To 77
        Space = Space & " "
    Next B
    LineaA = Replace(LineaA, cCadenaA, Autor & Space)
    Space = ""
    For B = Len(Mail) To 77
        Space = Space & " "
    Next B
    LineaM = Replace(LineaM, cCadenaM, Mail & Space)
    Space = ""
    For B = Len(Fecha) To 77
        Space = Space & " "
    Next B
    LineaD = Replace(LineaD, cCadenaD, Fecha & Space)
    Space = ""
    For B = Len(Ayuda) To 77
        Space = Space & " "
    Next B
    LineaC = Replace(LineaC, cCadenaC, Ayuda & Space)
    Space = ""
    For B = Len(Web) To 77
        Space = Space & " "
    Next B
    LineaW = Replace(LineaW, cCadenaW, Web & Space)
    'Juntar
    MakeHeader = Linea1 & vbCrLf & Linea2 & vbCrLf & LineaT & vbCrLf & LineaA & vbCrLf & LineaM & vbCrLf & LineaD & vbCrLf & LineaC & vbCrLf & LineaW & vbCrLf & Linea3 & vbCrLf & Linea4 & vbCrLf
End Function


BlackZeroX

.
En lugar de los for next y de las constantes con gran cantidad de texto no seria mejor usar

String()

Dulces Lunas!¡.
.
The Dark Shadow is my passion.

Psyke1

#2
Ey agus0, la idea es buena! ;)
En serio, me gusto, solo unas cosas:

Podrias hacerlo más configurable:

*Poder meter las Webs que se quiera en diferentes líneas (con paramArray creo que podrias hacer algo), un ej:
Código (vb) [Seleccionar]
Option Explicit

Private Sub Form_Load()
   TestPA "Que", "vivan", "las", "ranas"
End Sub

Sub TestPA(ParamArray Frog())
   MsgBox Join$(Frog, vbNewLine)
End Sub


*En la fecha podrias poner por defecto la fecha actual con Date$

*Si hay un campo vacío lo puedes eliminar

*El codigo se puede optimizar/reducir bastante.
Código (vb) [Seleccionar]
MakeHeader = Linea1 & vbCrLf & Linea2 & vbCrLf & LineaT & vbCrLf & LineaA & vbCrLf & LineaM & vbCrLf & LineaD & vbCrLf & LineaC & vbCrLf & LineaW & vbCrLf & Linea3 & vbCrLf & Linea4 & vbCrLf
Si usaras una array que guardara las lineas podner todo eso con join (al principio te puse un ej)

*No me gusta esto :  :-\
Código (vb) [Seleccionar]

Private Const cLine1 = "'/////////////////////////////////////////////////////////////////////////////////////////////////////////'"
Private Const cLine2 = "'///                                                                                                   ///'"
Private Const cLineT = "'///  º Tite:          TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT  ///'"
Private Const cLineA = "'///  º Author:        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA  ///'"
Private Const cLineM = "'///  º Mail:          MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM  ///'"
Private Const cLineD = "'///  º Date:          DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD  ///'"
Private Const cLineC = "'///  º Contributors:  CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC  ///'"
Private Const cLineW = "'///  º Web:           WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW  ///'"
Private Const cLine3 = "'///                                                                                                   ///'"
Private Const cLine4 = "'/////////////////////////////////////////////////////////////////////////////////////////////////////////'"
Private Const cCadenaT = "TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
Private Const cCadenaA = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Private Const cCadenaM = "MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
Private Const cCadenaD = "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"
Private Const cCadenaC = "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
Private Const cCadenaW = "WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"


*Después lo que dice Black de usar String$() para las repeticiones

*Un detallito:
Código (vb) [Seleccionar]
'///  º Tite:          mMakeHeader.bas                                                                ///'
Es Title no Tite... :xD
...

Con esto ya tienes para un rato, solo son sugerencias, nada más...  :P

DoEvents! :P

agus0

Gracias Ranita, Lo de La Fecha se me había ocurrido ahora cuando lo retoque le agrego que el ancho varíe según el largo de la cadena mas larga así no es exageradamente grande, Jajaj no me di cuenta de lo de Title jaja. Después Voy a Chequear todo lo que me dijeron por que hay cosas que no conocía.

Gracias por Sus Recomendaciones y me alegro que te guste la idea :)

raul338

Esta linda la idea, y tambien seria mejor si pudieras poner que el usuario elija con que caracteres rellenar el cuadro!

Código (vb) [Seleccionar]
'///  º Contributors:  -   
Queda muy orgulloso eso :xD

Karcrack

Os recomiendo MZ-Tools, que ademas de tener la opcion de crear cabeceras tiene otras muchas cosas utiles :D
http://www.mztools.com/v3/download_sp.aspx

Un saludo :)

agus0

Cita de: Karcrack en 18 Diciembre 2010, 15:17 PM
Os recomiendo MZ-Tools, que ademas de tener la opcion de crear cabeceras tiene otras muchas cosas utiles :D
http://www.mztools.com/v3/download_sp.aspx

Un saludo :)

No conocía ningún programa por el estilo. pero me imagine que habría alguno...  es mas pensé "Seguro alguien de foro tira un "Tenes X programa para hacer eso"...

Gracias Karcrack ahora lo Pruebo

Psyke1

Cita de: Karcrack en 18 Diciembre 2010, 15:17 PM
Os recomiendo MZ-Tools, que ademas de tener la opcion de crear cabeceras tiene otras muchas cosas utiles :D
http://www.mztools.com/v3/download_sp.aspx

Un saludo :)
Wooow Karcry, esta genial! :D

DoEvents! :P

agus0

Cita de: Mr. Frog © en 18 Diciembre 2010, 16:29 PM
Wooow Karcry, esta genial! :D

DoEvents! :P

Si es verdad Lo Termine de probar Esta excelente!! Murió mi Proyecto :S