Hola a todos, el problema es el siguiente.
Estoy haciendo una aplicacion que coje cada caracter del tec¡xto k le indiques, lo pasa al codigo ASCII y le resta un numero alaetorio entre el 10 y el 25 (ese numero aleatorio es el mismo para todo el text y se guarda en el mismo al encriptarlo.
El problema es k al desencriptarlo, en las partes en las k habia un punto y aparte no lo detecta y pone un punto y aparte. Por lo k el texto queda un tanto diferente.
Komo puedo evitarlo?
Otro problñema es k solo me deja abrir textos del formato ".txt", he probado con los formatos ".doc" o ".wps" y el vb me dice algo como "Input past of file" o algo asi.
Alguna idea?
Q codigo usas para cifrar/descifrar ?
es un codigo sencillito k hice mientras tenia estropeado internet
Private Sub cmdDesencriptartxt_Click()
clave = Mid$(Text1.Text, 2, 2)
Label1.Caption = "LOADING. . ."
DoEvents
For i = 5 To Len(Text1.Text)
c = Mid$(Text1.Text, i, 1)
If c = " " Then
code = code & " "
Else
code = code & Chr$(Asc(c) + clave)
End If
Next
Text1.Text = code
i = 1
c = ""
code = ""
cmdDesencriptartxt.Enabled = False
clave = 0
Label1.Caption = ""
End Sub
Private Sub cmdEncriptartxt_Click()
Randomize timer
Label1.Caption = "LOADING. . ."
DoEvents
r = Int(Rnd * 16) + 10
For i = 1 To Len(Text1.Text)
c = Mid$(Text1.Text, i, 1)
If Asc(c) - r < 1 Then
On Error Resume Next
ElseIf c = " " Then
code = code & c
Else
code = code & Chr$(Asc(c) - r)
End If
Next
Text1.Text = "[" & r & "]" & code
clave = r
code = ""
c = ""
r = 0
i = 1
cmdEncriptartxt.Enabled = False
cmdDesencriptartxt.Enabled = True
Label1.Caption = ""
End Sub
Las variables i, c, r, code y clave estan declaradas de forma global. Hace mucho k no miro el codigo, lo hice deprisa y corriendo asi k tampoco me acuerdo muy bien como iba.
A parte del problema mencionado antes, si encontrais algun fallo(k seguro k lo hay) hacedmelo saber ,ok?
Saludos.
En serio nadie sabe como solucionar el problema???
Nadie??
No se mu bien, pero te puedo decir que cuanco cargas un texto a una string, los saltos de linea los representa con un cuadradito []
Salu2
En ese caso podria detectar cuando la variable c es = [].
Pero como hago para k al descifrar el vb cambie los [] por saltos o puntos y aparte?
Ps: lo mas gracioso de esto es k seguramente es algo facilisimo para muchos, o una simple linea de codigo.
¿Pusiste el textbox en multiline?
Claro, y el problema esta ahi, ej:
(antes de cifrar)
blablablabla
blabla
bla
(despues de cifrar y descifrar)
blablablablablablabla
El resultado keda asi, pero en cambio los espacios si k los respeta.
El "Enter" o retorno de carro es el vbCrLf.
Y para representar es VbNewLine
Y para detectarlo?
no me lo detecta.
En la parte del codigo de lo bloques IF/THEN he probado a hacer k si c es igual a vbcrlf y no funciona, lo mismo con vbnewline.
Y aun me ha salido otro problema! Komo esta parte no sabia como solucionarla, pense k de mientras seria weno ir poniendole opciones al text del tipo letra cursiva o negrita, tamaño fuente etc... Pero cuando intento cambiar el tipo de letra a cursiva me lo hace a todo el texto, no se como hacerlo para k sea solo a la parte seleccionada.
Se como cojer la parte seleccionada, meterla en una variable, esta pasarla un texto oculto y hacer el cambio a cursiva, pero al volver a ponerla en su sitio me vuelve a salir como antes y no en cursiva. Os dejo el codigo:
Private Sub Command2_Click(Index As Integer)
Dim cursiva As String
cursiva = Mid(Text1.Text, Text1.SelStart + 1, Text1.SelLength)
ptxt.Text = cursiva
ptxt.FontItalic = True
Text1.SelText = cursiva
Command2(0).Visible = False
Command5.Visible = True
End Sub
explico: El command2 es el boton para convertir a letra cursiva, el command5 es para hacer la inversa, ptxt es un texto invisible y text1 es el texto donde se escribe
te recomeidno que antes que pases a lo de cursiva, negrita, etc termines con los primeros errores.
para que se valla abajo antes del [] podes usar el comando LEFT y que se guarde en una matriz de variables lo que resta despues del [], y despues:
do until variable = Max 'Max vendira a ser la cantidad de lineas (tenes que declarar y hacer el codigo) jej
text1.text= variable(max) & vbcrlf
loop
bueno algo asi...... ;D
1º: Para hacer eso k dices hay k detectar el [] o salto de parrafo, k es justo donde fallo.
2º: No te ofendas, pero a mi eso de la matices de variables me suena a chino, Podrias darme una pekeña explicacion, plis?
de todas formas, gracias por contestar ;)
xq no probas que cuando tien que haber un punto y aparte que haga esto chr(13) & chr(10) esto crea un enter en el textbox en el label no hay problema. espero que te sirva responde para saber si te sirvio o no
Sancho Mazorka
en un post mio donde tambien pregunto ay pasteado codigo donde relaiza esta funcion de buscar y eliminar ....
pasteo
Private Sub Command1_Click()
On Error Resume Next
Dim sOriginal As String
Dim sBuscar As String
Dim sPoner As String
Dim sbuf As String
Dim fbuf As String
Dim salto As Integer
Dim contador As Integer
sOriginal = Text2.Text
sBuscar = "x"
sPoner = "&H"
salto = 1
sbuf = Replace(sOriginal, sBuscar, sPoner, , , vbTextCompare)
sBuscar = "\"
sPoner = ""
Text1.Text = Replace(sbuf, sBuscar, sPoner, , , vbTextCompare)
Lo siento Sancho.Mazorka, pero tu solucion no funciona.
Pero la de lumbreras si! MUCHAS GRACIAS!
al final la cosa era facil, si conocias la funcion claro. Lo unico k he tenido k hacer es reemplazar los saltos de parrafo antes de codificar el texto, y despues, al desencriptarlo, reemplazarlos de nuevo antes de pasar al textbox, ahora os pongo el codigo.
Private Sub cmdDesencriptartxt_Click()
Dim re2 As String
clave = Mid$(Text1.Text, 2, 2)
Label1.Caption = "LOADING. . ."
DoEvents
For i = 5 To Len(Text1.Text)
C = Mid$(Text1.Text, i, 1)
Select Case C
Case vbNewLine
code = code & vbNewLine
Case " "
code = code & " "
Case Else
code = code & Chr$(Asc(C) + clave)
End Select
Next
re2 = Replace(code, "{salto}", vbCrLf)
Text1.Text = re2
i = 1
C = ""
code = ""
cmdDesencriptartxt.Enabled = False
clave = 0
Label1.Caption = ""
End Sub
Private Sub cmdEncriptartxt_Click()
Dim re As String
Randomize timer
On Error Resume Next
Label1.Caption = "LOADING. . ."
DoEvents
r = Int(Rnd * 16) + 10
re = Replace(Text1.Text, vbCrLf, "{salto}")
For i = 1 To Len(re)
C = Mid$(re, i, 1)
Select Case C
Case " "
code = code & " "
Case Else
code = code & Chr$(Asc(C) - r)
End Select
Next
Text1.Text = "[" & r & "]" & code
clave = r
code = ""
C = ""
r = 0
i = 1
cmdEncriptartxt.Enabled = False
cmdDesencriptartxt.Enabled = True
Label1.Caption = ""
End Sub
De nuevo, muchas gracias a todos los k habeis respondido en este tema, y en especial a lumbreras
saludos
Hum! Aun sigo con el problema del estilo de letra... se cambiar el estilo de letra de todo el texto pero no encuentreo la manera de hacerlo solo en la parte seleccionada del texto.
Hasta el momento he conseguido aislar en una variable(o textbox oculto) la seleccion y cambiarle el tipo de letra(Solo en el textbox oculto) pero al volverlo a meter en su sitio con Seltext me encuentro con k vuelve a escribirse con el estilo y tipo de letra original!
Some good ideas around there?
saludos;D
CitarSome good ideas around there?
Significa si alguien tiene alguna idea por ahi...