Cita de: MCKSys Argentina en 10 Mayo 2017, 22:47 PM
Mi banco es el ICBC (International and Commercial Bank of China) y nunca me ha faltado un centavo (por ahora)...
La anonimicidad, amigo, marca la diferencia...

Igualmente pasa con el hackeo...
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úCita de: MCKSys Argentina en 10 Mayo 2017, 22:47 PM
Mi banco es el ICBC (International and Commercial Bank of China) y nunca me ha faltado un centavo (por ahora)...
#Region "clase para generar el alfabeto"
''' <summary>
''' Facilitador para crear el alfabeto a usar.
''' </summary>
''' <remarks></remarks>
Public Class AlfabetoToUse
Private p_Alfabeto(0 To 255) As Byte ' 08 bits
Private p_Sizealfabeto As Short ' 16 bits
''' <summary>
''' Facilita la generación automática del alfabeto, basado en un valor que identifica claramente el conjunto que se toma.
''' </summary>
''' <remarks></remarks>
Public Enum CaracteresUsadosEnAlfabeto
''' <summary>
''' Este valor o inferior es un valor ilegal.
''' </summary>
''' <remarks></remarks>
ALFABETO_VALOR_ILEGAL_MENOR = -2
''' <summary>
''' El cliente pasa el array con el alfabeto que desea usar.
''' </summary>
''' <remarks></remarks>
ALFABETO_CUSTOM = -1
''' <summary>
''' El alfabeto es todo el espacio ASCII.
''' </summary>
''' <remarks></remarks>
ALFABETO_ASCII = 0
''' <summary>
''' El alfabeto contiene los números.
''' </summary>
''' <remarks></remarks>
ALFABETO_09 = 1
''' <summary>
''' El alfabeto contiene las mayúsculas (no 'Ñ' ni otros caracteres extendidos).
''' </summary>
''' <remarks></remarks>
ALFABETO_AZ_UPPERCASE = 2
''' <summary>
''' El alfabeto contiene las minúsculas (no 'ñ' ni otros caracteres extendidos).
''' </summary>
''' <remarks></remarks>
ALFABETO_AZ_LOWERCASE = 4
''' <summary>
''' El alfabeto es tomado parcialmente del ASCII
''' </summary>
''' <remarks></remarks>
ALFABETO_OFFSET = 8
''' <summary>
''' Este valor o superior es un valor ilegal.
''' </summary>
''' <remarks></remarks>
ALFABETO_VALOR_ILEGAL_MAYOR = 9
End Enum
Public ReadOnly Property Alfabeto() As Byte() ' 8 bits
Get
Alfabeto = p_Alfabeto
End Get
End Property
Public ReadOnly Property SizeAlfabeto As Short ' 16 bits
Get
SizeAlfabeto = p_Sizealfabeto
End Get
End Property
''' <summary>
''' Por defecto, el alfabeto es el ASCII y el tamaño 256.
''' </summary>
''' <remarks>Si las claves han de ser imprimibles como texto, se perderán aquellos caracteres no imprimibles. en tal caso definir el alfabeto a usar.</remarks>
Public Sub New()
'Me.New(0)
p_Sizealfabeto = 256
Call ConstruyeAlfabeto(CaracteresUsadosEnAlfabeto.ALFABETO_ASCII)
End Sub
''' <summary>
''' Facilita la construcción del alfabeto basado en un valor de enumeración.
''' </summary>
''' <param name="Tipo">Pueden unirse entre sí los conjuntos: 0-9, A-Z y a-z (pero será en ese orden)</param>
''' <remarks>Aunque el valor 'custom' consta en la enumeración, es el cliente qien debe expresar en ese caso el conjunto de caracteres que se emplea.</remarks>
Public Sub New(ByVal Tipo As CaracteresUsadosEnAlfabeto)
If (ConstruyeAlfabeto(Tipo) = False) Then
Err.Raise(-1, , "El 'tipo' recibido, no consta en la enumeración y/o no permite deducir el conjunto de caracteres a tomar para generar el alfabeto. Introduzca un valor en el rango admitido.")
End If
End Sub
''' <summary>
''' Permite declarar un alfabeto parcialmente indicando un desplazamiento sobre la tabla ASCII
''' </summary>
''' <param name="Comienzo">Punto de comienzo desde donde se toma el alfabeto.</param>
''' <param name="SizeAlfabeto">Cantidad de caracteres que se toman del alfabeto. Si es preciso se trunca.</param>
''' <remarks>Ejemplo: para generar un alfabeto que use solo las mayúsculas se llamaría con New(65,26)</remarks>
Public Sub New(ByVal Comienzo As Byte, Optional ByRef SizeAlfabeto As Byte = 255)
If (Comienzo < 255) Then
If (SizeAlfabeto + Comienzo > 255) Then
SizeAlfabeto = (255 - Comienzo)
End If
p_Sizealfabeto = (SizeAlfabeto + 1)
Call ConstruyeAlfabeto(CaracteresUsadosEnAlfabeto.ALFABETO_OFFSET, Comienzo)
Else
Err.Raise(-1, , "Si el comienzo es el byte 255, el tamaño del diccionario es 1 y solo genera una clave. ...¿qué sentido tiene???")
End If
End Sub
''' <summary>
''' Permite al usuario introducir su propio alfabeto.
''' </summary>
''' <param name="AlfabetoCustom">Array con el alfabeto del usuario.</param>
''' <remarks>OJO: No se verifica la validez del alfabeto, se supone correcto.</remarks>
Public Sub New(ByRef AlfabetoCustom() As Byte)
p_Alfabeto = AlfabetoCustom
p_Sizealfabeto = p_Alfabeto.Length
If (p_Sizealfabeto = 0) Then
Err.Raise(-1, , "El alfabeto del usuario no puede estar vacío, o tener solo 1 elemento. ...¿con qué fin???")
End If
End Sub
''' <summary>
''' Recrea el alfabeto basado en la enumeración recibida
''' </summary>
''' <param name="Tipo">Enumeración que señala qué caracteres se tomarán para el alfabeto. Los conjuntos 0-9, A-Z y a-z, pueden aunarse entre sí.</param>
''' <returns>Devuelve True si el tipo recibido es existente o subyacente en la enumeración</returns>
''' <remarks>No se debe invocar el tipo 'custom'</remarks>
Friend Function ConstruyeAlfabeto(ByVal Tipo As CaracteresUsadosEnAlfabeto, Optional ByVal Offset As Byte = 0) As Boolean
Dim k As Short, n As Short
n = 0 ' por claridad
If (Tipo > CaracteresUsadosEnAlfabeto.ALFABETO_CUSTOM) And (Tipo < CaracteresUsadosEnAlfabeto.ALFABETO_VALOR_ILEGAL_MAYOR) Then
Select Case Tipo
Case CaracteresUsadosEnAlfabeto.ALFABETO_ASCII, CaracteresUsadosEnAlfabeto.ALFABETO_OFFSET
For k = Offset To (p_Sizealfabeto + Offset) ' 0 to 255, si es ASCII
p_Alfabeto(n) = k
n += 1 ' n=k si offset=0
Next
Case Else
p_Sizealfabeto = 0
' Intervienen los números?
If ((Tipo And CaracteresUsadosEnAlfabeto.ALFABETO_09) = CaracteresUsadosEnAlfabeto.ALFABETO_09) Then
For k = 48 To 57
p_Alfabeto(n) = k
n += 1
Next
End If
' intervienen las mayúsculas?. Si sí, añadirlas (tras lo previo)
If ((Tipo And CaracteresUsadosEnAlfabeto.ALFABETO_AZ_UPPERCASE) = CaracteresUsadosEnAlfabeto.ALFABETO_AZ_UPPERCASE) Then
For k = 65 To 90
p_Alfabeto(n) = k
n += 1
Next
End If
' Intervienen las minúsculas?. Si sí, añadirlas (tras lo previo)
If ((Tipo And CaracteresUsadosEnAlfabeto.ALFABETO_AZ_LOWERCASE) = CaracteresUsadosEnAlfabeto.ALFABETO_AZ_LOWERCASE) Then
For k = 97 To 122
p_Alfabeto(n) = k
n += 1
Next
End If
p_Sizealfabeto = n
End Select
Return True
Else
Return False ' el tipo recibido no permite deducir el conjunto de caracteres a tomar para generar el alfabeto.
End If
End Function
End Class
#End Region
''' <summary>
''' Clase: Combinatoria-Alfabeto-Diccionario. Crea diccionario (in situ), mediante combinatoria.
''' </summary>
''' <remarks>No se ha previsto en ningún momento almacenar a fichero el diccionario creado</remarks>
Public Class cBaseNum
' siempre contiene 256 bytes, aunque luego no se usen todos.
Private p_Alfabeto(0 To 255) As Byte ' 08 bits sin signo
Private p_Sizealfabeto As Short ' 16 bits con signo
Private s_LargoClaves As Byte
Private s_MaxPermutaciones As UInt32 ' 64 bits sin signo
#Region "clase para generar el alfabeto"
''' <summary>
''' Facilitador para crear el alfabeto a usar.
''' </summary>
''' <remarks></remarks>
Public Class AlfabetoToUse
'... AQUI: va el código d ela clase anterior (que está anidada). Si un lenguej no permite anidar clases, dejarla fuera al mismo nivel y listo.
End Class
#End Region
Public Structure PermutarDatosImprescindibles
Public Charset As AlfabetoToUse
Public LargoClaves As Byte
Public PermutacionInicialStr As String
Public PermutacionInicialLng As Long
End Structure
''' <summary>
''' Enumera todas las permutaciones.
''' </summary>
''' <param name="Datos">Alfabeto que se va a usar, Tamaño de las claves a generar y valor inicial.</param>
''' <remarks>El método usado en este algoritmo es la conversión entre sistemas de numeración.</remarks>
Public Sub Enumerar(ByRef Datos As PermutarDatosImprescindibles)
Dim Clave() As Byte
Dim k As UInt32, n As Short ' contadores de bucle
Dim v As UInt32, x As Byte, Numchars As Short
Dim Crono As Single
Crono = TimeOfDay.Ticks ' ticks a la hora actual
With Datos
p_Alfabeto = .Charset.Alfabeto
p_Sizealfabeto = .Charset.SizeAlfabeto
s_LargoClaves = .LargoClaves
s_MaxPermutaciones = (p_Sizealfabeto ^ s_LargoClaves)
Numchars = ((s_LargoClaves * 2) - 2)
ReDim Clave(0 To Numchars + 1)
If (.PermutacionInicialLng < 0) Then .PermutacionInicialLng = 0
If (.PermutacionInicialStr.Length > 0) Then
' FALTA: código para convertir la clave a la enésima permutación.
' es el proceso inverso al seguido en el algoritmo y debiera facilitarse como una función pública.
' k= EnesimaPermutacion(.PermutacionStr)
Else
k = .PermutacionInicialLng
End If
Do
v = k
n = Numchars
Do
x = (v Mod p_Sizealfabeto)
Clave(n) = p_Alfabeto(x) ' convertir el byte a char.
v \= p_Sizealfabeto ' división entera.
n -= 2
Loop While (n >= 0)
' USAR la clave desde aquí
' llamada a FuncionX(Clave)
k += 1
Loop While (k < s_MaxPermutaciones)
End With
Crono = ((TimeOfDay.Ticks - Crono) / 10000000) ' ticks a la hora actual, menos los de comienzo= ticks invertidos en la tarea.
MessageBox.Show(Crono.ToString & vbCrLf & s_MaxPermutaciones.ToString)
End Sub
End Class
Public Class frm1 ' la ventana, formulario...
Dim alfa As cBaseNum.AlfabetoToUse
Dim SizeAlfabeto As Short
Dim TipoAlfabeto As cBaseNum.AlfabetoToUse.CaracteresUsadosEnAlfabeto
''' <summary>
''' Por defecto, al inicio el alfabeto es A-Z (26 caracteres)
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TipoAlfabeto = cBaseNum.AlfabetoToUse.CaracteresUsadosEnAlfabeto.ALFABETO_AZ_UPPERCASE
SizeAlfabeto = 26
End Sub
''' <summary>
''' Selección del tipo de alfabeto a usar
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks>Se han ligado los eventos de todos los checkbox a este método</remarks>
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged
TipoAlfabeto = 0 : SizeAlfabeto = 0
If (CheckBox1.Checked = True) Then
TipoAlfabeto = cBaseNum.AlfabetoToUse.CaracteresUsadosEnAlfabeto.ALFABETO_09
SizeAlfabeto = 10
End If
If (CheckBox2.Checked = True) Then
TipoAlfabeto = (TipoAlfabeto Or cBaseNum.AlfabetoToUse.CaracteresUsadosEnAlfabeto.ALFABETO_AZ_UPPERCASE)
SizeAlfabeto += 26
End If
If (CheckBox3.Checked = True) Then
TipoAlfabeto = (TipoAlfabeto Or cBaseNum.AlfabetoToUse.CaracteresUsadosEnAlfabeto.ALFABETO_AZ_LOWERCASE)
SizeAlfabeto += 26
End If
' si se deseleccionó todo, por defecto será todo el rango ASCIIasigna
If TipoAlfabeto = 0 Then SizeAlfabeto = 256
GroupBox1.Text = "Tamaño del diciconario: " & SizeAlfabeto.ToString
End Sub
''' <summary>
''' Reunir todos los datos y llamar a la enumeración.
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim datos As cBaseNum.PermutarDatosImprescindibles
Dim cad As New cBaseNum
' Reunir los parámetros en una estructura, único parámetro del método enuerar de la clase...
With datos
.Charset = New cBaseNum.AlfabetoToUse(TipoAlfabeto) ' construir el alfabeto
.LargoClaves = NumericUpDown1.Value ' tamaño de las claves a generar.
.PermutacionInicialLng = -1 ' cambiar si se quiere iniciar en una secuencia distinta de la primera.
.PermutacionInicialStr = "" ' no se ha implmenetado en la clase el inicio dado una clave concreta...
End With
cad.Enumerar(datos)
MessageBox.Show("Finalizada la enumeración.")
End Sub
End Class
Cita de: PETTETE en 9 Mayo 2017, 07:20 AMBien, entonces tenías un fichero sin formato en el mismo, pero con un formato no implícito y (supongo que por claridad a la hora de consultarlo) ahora quieres guardar todos los datos de nuevo a otro fichero, pero manteniendo algún tipo de formato, ¿es así?.
tengo un txt. el txt me viene así, 0002254866villaruel garcia paco blablabla blablabla.
he tenido que meter los datos a una matriz b. Para darle un formato correcto.
0002254866 villaruel garcia paco bla blabla blabla bla.
la matriz quedaría algo asi b(i,200) = i filas, 200 columnas.
a cosa es que ahora me gustaría escribir todas las filas(i) en otro txt distinto al que tengo... y no se como hacerlo.
Interfaz Planta
enumeracion TipoDehojas
Perenne=0
Caducifolio=1
fin enumeración
propiedad Nombre
Propiedad Raiz ' valor fijo para propiedad...
Raiz = True
fin propiedad
propiedad Hojas(modelo como TipoDehojas))
propiedad Fruto
propiedad Tallo
propiedad FechaDeRecoleccion
método Madurar(CantidadFrutos)
método Floracion(Cantidad, Color)
método Recolectar( P como Planta, fechaActual) como buleano
Si p.FechaDeRecoleccion >= fechaActual luego
Mostrar mensaje "Ha llegado la hora de recolectar."
Devolver cierto
fin si ' devuelve falso
fin metodo
' si hubiera métodos privados, las clases que implementen la interfaz, no requieren implementarlos... o si los necesita puedne llamarse de forma diferente y contener parámetros distintos.
Clase Amapola implementa Planta
miembro privado _TipoDehojas como TipoDeHojas
miembro privado _FechaDeRecoleccion numero
propiedad Nombre
Devolver "Amapola"
fin propiedad
propiedad Raiz 'ejemplo que delega en algo por defecto.
Devolver Planta.Raiz
fin propiedad
' Nota que por simplicidad se ha puesto propiedad x... como representación de lo que corresponda: lectura y escritura/solo lectura/ solo escritura)
' Aquí se representaría Write y Read de la propiedad Hojas
propiedad HojasW(modelo como TipoDehojas)
_tipoDehoja=modelo
fin propiedad
propiedad HojasR como TipoDehojas
devolver _TipoDeHojas
fin propiedad
propiedad Fruto....
...
...
...
propiedad FechaDeRecoleccion
devolver _FechaDeRecoleccion
fin propiedad
método Madurar(CantidadFrutos)
....
fin metodo
método Floracion(Cantidad, Color)
llamar AumentarFlores(Cantidad)
llamar CambiarColores(Color)
Fin método
método Recolectar( P como Planta, fechaActual) como buleano ' método por defecto...
llamar Planta.Recolectar(Esta Amapola, FechaActual)
fin metodo
metodo privado AumentarFlores(cantidad)
...
fin metodo
metodo privado CambiarColor(Color)
...
fin metodo