Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: sorcerer en 17 Noviembre 2006, 14:12 pm



Título: probelma con textbox
Publicado por: sorcerer en 17 Noviembre 2006, 14:12 pm
bue estoy haciendo un pequeño trabajo para la escuela en el cual cifro un texto de la formma siguiente:

Código:
For x = 1 To MaxText
   crypted = crypted & Chr(Asc(Mid(Form1.Texto.Text, x, 1)) + Asc(Mid(pass.Text, y, 1)))
   If (y = MaxPass) Then
      y = 1
   End If
   y = y + 1
Next x
Form1.Texto.Text = crypted

lo que hago es agarrar char por char del texto y sumarle el ascii del char que recivo en el pass, es simple y funciona

el problema es que cuando abro un txt cifrado anterior mente me sale un error en la linea:
Código:
 crypted = crypted & Chr(Asc(Mid(Form1.Texto.Text, x, 1)) + Asc(Mid(Text1.Text, y, 1)))

aca les paso el codigo de todo el programa:

<<<Form1.frm - principal>>>
Código:
Dim File As Integer, txt As String
Private Sub Form_Resize()
On Error GoTo fin
If Form1.Height < 825 Then
   Form1.Height = 826
End If
If Form1.Width < 120 Then
   Form1.Width = 121
End If
Texto.Height = Form1.Height - 825
Texto.Width = Form1.Width - 120
fin:
End Sub


Private Sub menuDecryptItem_Click()
Load Form3
Form3.Visible = True
End Sub

Private Sub menuEncryptItem_Click()
Load Form2
Form2.Visible = True
End Sub

Private Sub menuExitItem_Click()
End
End Sub

Private Sub menuFontItem_Click()
CD.ShowColor
Texto.ForeColor = CD.Color
End Sub

Private Sub menuNewItem_Click()
Texto.Text = ""
encrypted = 0
End Sub

Private Sub menuOpenItem_Click()
On Error GoTo fin
Dim leng As Long
Dim x As Long
File = FreeFile
CD.Filter = "Text Files (*.txt)|*.txt"
CD.ShowOpen
Open CD.FileName For Binary As #File
txt = Space(LOF(File))
Get #File, , txt
Close File
Texto.Text = txt
fin:
End Sub

Private Sub menuSaveItem_Click()
On Error GoTo fin
File = FreeFile
CD.Filter = "Text Files (*.txt)|*.txt"
CD.ShowSave
Open CD.FileName For Output As #File
Print #File, Texto.Text
Close File
fin:
End Sub


<<<Form2.frm - encriptacion>>>
Código:
Dim x, MaxText, y, MaxPass As Long, crypted As String

Private Sub CancelButton_Click()
Unload Me
End Sub

Private Sub Form_Load()
Label2.Visible = False
End Sub

Private Sub OKButton_Click()
Label1.Visible = False
Text1.Visible = False
OKButton.Visible = False
CancelButton.Visible = False
Label2.Visible = True
MaxText = Len(Form1.Texto.Text)
MaxPass = Len(Text1.Text)
y = 1
crypted = ""
For x = 1 To MaxText
   crypted = crypted & Chr(Asc(Mid(Form1.Texto.Text, x, 1)) + Asc(Mid(Text1.Text, y, 1)))
   If (y = MaxPass) Then
      y = 1
   End If
   y = y + 1
Next x
Form1.Texto.Text = crypted
Unload Me
End Sub


<<<Form3.frm Decriptacion>>>
Código:
Dim x, MaxText, y, MaxPass As Long, decrypted As String
Private Sub CancelButton_Click()
Unload Me
End Sub

Private Sub OKButton_Click()
On Error GoTo fin
Label1.Visible = False
Text1.Visible = False
OKButton.Visible = False
CancelButton.Visible = False
Label2.Visible = True
MaxText = Len(Form1.Texto.Text)
MaxPass = Len(Text1.Text)
y = 1
decrypted = ""
For x = 1 To MaxText
      decrypted = decrypted & Chr(Asc(Mid(Form1.Texto.Text, x, 1)) - Asc(Mid(Text1.Text, y, 1)))
   If (y = MaxPass) Then
      y = 1
   End If
   y = y + 1
Next x
Form1.Texto.Text = decrypted
Unload Me
fin:
Unload Me
End Sub

aver si alguien me puede explicar porque cada ves que abro un archivo no salta el error en esa linea?
osea si abro el txt y le cambio algo tonces anda pero si no toco el texto despues que lo abro no anda...

alguien tiene alguna solucion?


Título: Re: probelma con textbox
Publicado por: CeLaYa en 17 Noviembre 2006, 22:52 pm
Citar

Código:
 crypted = crypted & Chr(Asc(Mid(Form1.Texto.Text, x, 1)) + Asc(Mid(Text1.Text, y, 1)))


 :huh:no sera que la función Chr() este recibiendo un valor mayor a 255???


Título: Re: probelma con textbox
Publicado por: sorcerer en 18 Noviembre 2006, 16:07 pm
me confundi en copiarlo es - no +
XD... la encripcion es + y nunca hace problemas


Título: Re: probelma con textbox
Publicado por: CeLaYa en 18 Noviembre 2006, 22:36 pm
buenas, mira estuve revisando tu codigo y encontre lo siguiente:

1. Algunas variables no estan declaradas, a menos que se ta haya pasado ponerlas aqui, deberías usar Option explicit para que te diga que variables falta declrar

2. en cuanto al codigo detecte un error

Código:
crypted = crypted & Chr(Asc(Mid(Form1.Texto.Text, x, 1)) + Asc(Mid(Text1.Text, y, 1)))

la variable y a veces toma un valor mayor a MaxPass y por eso falla te recomiento que pongas el incremento de la variable antes del if, i al if agregarle >=, ej:

y = y+1
if y >= MaxPass then y = 1


yo ya lo probe de esta manera y no me ha fallado


Título: Re: probelma con textbox
Publicado por: sorcerer en 21 Noviembre 2006, 16:38 pm
entiendo..... pero me sigue saliendo una falla cuando lo intento desencriptr despues del open....


Título: Re: probelma con textbox
Publicado por: CeLaYa en 22 Noviembre 2006, 15:37 pm
que falla te sale???,  :huh: porque a mi no me falla para nada


Título: Re: probelma con textbox
Publicado por: CeLaYa en 22 Noviembre 2006, 16:37 pm
creo que ya encontre la falla, el programa marca error cuando tratas de cifrar una cadena de texto que ya estaba cifrada


Título: Re: probelma con textbox
Publicado por: sorcerer en 24 Noviembre 2006, 10:58 am
no no, cuando cifro algo y le hago save... despues abro ese algo e intento descifrar no descifra


Título: Re: probelma con textbox
Publicado por: CeLaYa en 24 Noviembre 2006, 14:12 pm
pero que error te marca??
te envia solo basura???
no hace nada??


Título: Re: probelma con textbox
Publicado por: sorcerer en 1 Diciembre 2006, 05:56 am
runtime error: '5'

invalid procedure call or argument

sale eso.... y cuando apreto en debug me marca la linea

decrypted = decrypted & Chr(Asc(Mid(Form1.Texto.Text, x, 1)) - Asc(Mid(Text1.Text, y, 1)))


Título: Re: probelma con textbox
Publicado por: CeLaYa en 5 Diciembre 2006, 14:53 pm
bueno despues de una larga ausencia me puse a revisar tu código y ya encontre el problema, el problema es que cuando abres el archivo se trae un "enter", lo que hay que hacer es quitarle ese entrer al final de la cadena de texto:

Código:

Private Sub OKButton_Click()
    On Local Error GoTo fin
    Label1.Visible = False
    Text1.Visible = False
    okButton.Visible = False
    CancelButton.Visible = False
    Label2.Visible = True
   
    MaxText = Len(Form1.Texto.Text)
    MaxPass = Len(Text1.Text)
    y = 1
   
    Decrypted = ""
    If Right(Form1.Texto.Text, 2) = vbCrLf Then
        Form1.Texto.Text = Left(Form1.Texto.Text, Len(Form1.Texto.Text) - 2)
        MaxPass = MaxPass - 2
        MaxText = MaxText - 2
    End If
   
    For x = 1 To MaxText
          Decrypted = Decrypted & Chr(Asc(Mid(Form1.Texto.Text, x, 1)) - (Asc(Mid(Text1.Text, y, 1)) / 2))
       y = y + 1
       If y >= MaxPass Then y = 1
       
    Next x
    Form1.Texto.Text = Decrypted
    Unload Me
fin:
   If Err Then MsgBox Err.Description
    On Local Error GoTo 0

    Unload Me
End Sub


también falta desactivar el control de errores al final de cada procedimiento

Código:
fin:

--->   If Err Then MsgBox Err.Description
    On Local Error GoTo 0 <---

    Unload Me
End Sub


este código es el que va en el Form3


Título: Re: probelma con textbox
Publicado por: sorcerer en 10 Diciembre 2006, 13:33 pm
huuu gracias!!!