Aqui presento el BCP (Best Cactus Programmer). Presento este concurso para animar a la gente que programe sencillas funciones que cumplan unos requisitos y objetivos claros. Los ganadores seleccionados serán añadidos como "Colaboradores" en la ventana de "About" y en el "Leame" del nuevo Cactus Joiner, añadiendo su nick, mail y pagina web como motivo de agradecimiento.
Para ello voy a formular a lo largo de esta semana unas cuantas preguntas sobre programación. El primer usuario que responda mi problema correctamente se añadirá su código en el cactus y pondré su nick en los creditos.
Primera pregunta:
Tengo una variable con una ruta completa de un archivo, necesito sacar el nombre del archivo completo y su extensión. El nombre del archivo no tiene una longitud estática. Y la estensión del archivo suele ser de 3 carácteres, aunque podría tener más o menos carácteres. Pido una sencilla función con un solo parámetro de entrada (la ruta completa del archivo) y 2 variables de salida: El nombre del archivo y su extensión.
TERMINADO: Hendrix y WarGhost
FUNCIÓN:
Código:
Public Function ExtraerCadena(cadena As String, l As Long) As String
Dim FullName As String
FullName = Mid(cadena, InStrRev(cadena, "\") + 1)
Select Case l
Case 1
ExtraerCadena = Mid(FullName, 1, InStrRev(FullName, ".") - 1)
Case 2
ExtraerCadena = Mid(FullName, InStrRev(FullName, ".") + 1)
Case 3
ExtraerCadena = FullName
End Select
End Function
Dim FullName As String
FullName = Mid(cadena, InStrRev(cadena, "\") + 1)
Select Case l
Case 1
ExtraerCadena = Mid(FullName, 1, InStrRev(FullName, ".") - 1)
Case 2
ExtraerCadena = Mid(FullName, InStrRev(FullName, ".") + 1)
Case 3
ExtraerCadena = FullName
End Select
End Function
Citar
1 = Devuelve el nombre
2 = Devuelve la extesion
3 = Devuelve el FullName
2 = Devuelve la extesion
3 = Devuelve el FullName
Segunda pregunta:
Necesito una función para cifrar programas. No se puede usar la función XOR ya que nos puede aparecer el carácter Chr(0) (fin de cadena).
1) La función no puede ser muy extensa y no tiene que consumir muchos recursos.
2) Aparte tiene que ser recursiva (que sirva tanto para cifrar/descifrar opcional)
3) Si ciframos un virus con esa función, los AV no tienen que detectarlo
TERMINADO: Hendrix
FUNCIÓN:
Código:
Public Function crypt(cadena As String) As String
crypt = StrReverse(cadena)
End Function
crypt = StrReverse(cadena)
End Function
Tercera pregunta:
Necesito una función (o varias) que me devuelvan el nombre completo y su extensión del propio programa que estamos ejecutando. Por ejemplo: Si el programa se llama 'hola.exe' que devuelva 'hola.exe' si se llama 'adios.bat' que devuelva 'adios.bat'. La variable App.EXEName solo devuelve el nombre del ejecutable, pero no su extensión.
TERMINADO: Lympex[/b]
FUNCION:[/b]
Código:
Private Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long
Private Sub Form_Load()
Dim nombre As String
nombre = String$(255, Chr$(0))
GetModuleFileName 0, nombre, Len(nombre)
MsgBox nombre
End Sub
Private Sub Form_Load()
Dim nombre As String
nombre = String$(255, Chr$(0))
GetModuleFileName 0, nombre, Len(nombre)
MsgBox nombre
End Sub