Hack x Crack - Comunidad de Seguridad informática

Programación => Visual Basic => Mensaje iniciado por: GasQueen en Mayo 12, 2012, 05:25:54 am

Título: [Visual Studio 2010]Notepad
Publicado por: GasQueen en Mayo 12, 2012, 05:25:54 am
Ok gente, deje de lado un rato el Navegador web porque se me ocurrio la idea de un programa mas sencillo para practicar este lenguaje. Este bloc de notas en realidad no me costo mucho trabajo hacerlo. Lo unico en lo que tengo dudas es acerca de las funciones de Guardar Abrir Nuevo. Se que no las redacte de la manera correcta, porque encuentro algunos errores en cuanto a la funcionalidad, por ejemplo, cuando cierro el programa y hay algo escrito, este me dice si quiero guardar el archivo. Le pongo que no, pero me abre la ventana de guardar igualmente.


Ademas, intente realizar las funciones de Copiar Pegar Cortar, pero me sale un error de sintaxis. Asi es como lo escribia yo.


Código: [Seleccionar]
    Private Sub CopyToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CopyToolStripMenuItem.Click


        txtNotepad.SelectedText.Copy()


    End Sub


Este era el error:

(http://img3.imageshack.us/img3/1061/errorvh.png)

Espero que puedan ayudarme. Gracias de antemano, aqui esta el proyecto para el que quiera mirarlo.


http://www.mediafire.com/?0n95ui868nctf7y
Título: Re:[Visual Studio 2010]Notepad
Publicado por: ACK en Mayo 12, 2012, 06:22:27 am
No tengo conocimientos de Visual Basic, pero te diria que el primer error puede ser realizado con un condicional si no me equivoco. En cuanto al segundo problema no sabria responderte debido a que como te dije, no conozco nada de VB.

Lamento no poder ayudar mas, esperemos alguien responda.

Saludos ;)
Título: Re:[Visual Studio 2010]Notepad
Publicado por: ravenheart en Mayo 12, 2012, 05:41:49 pm
Código: [Seleccionar]
        MsgBox("Would you like to save current file?", MsgBoxStyle.YesNoCancel, Title:="Notepad")
            If vbYes Then
                  ....

Esto está mal. vbYes es una constante de enumeración, que tiene un valor 6 (lo puedes ver haciendo click con el botón derecho y dándole a "Ir a definición").  El problema de VB es que si no habilitas la opción Strict, hace conversiones de tipo automáticamente, y al poner lo que tu has puesto realmente está convirtiendo a booleano. La conversión a booleano consiste en que si el valor es cero el resultado es false, y si no es true, así que realmente es como si estuvieras haciendo lo siguiente:

Código: [Seleccionar]
        MsgBox("Would you like to save current file?", MsgBoxStyle.YesNoCancel, Title:="Notepad")
            If (vbYes <> 0) Then
                  ....

La forma correcta de hacer esta comprobación es la siguiente:

Código: [Seleccionar]
        Dim resultado as Microsoft.VisualBasic.MsgboxResult
        resultado = MsgBox("Would you like to save current file?", MsgBoxStyle.YesNoCancel, Title:="Notepad")
            If (resultado = vbyes) Then
                  ....




Ok gente, deje de lado un rato el Navegador web porque se me ocurrio la idea de un programa mas sencillo para practicar este lenguaje. Este bloc de notas en realidad no me costo mucho trabajo hacerlo. Lo unico en lo que tengo dudas es acerca de las funciones de Guardar Abrir Nuevo. Se que no las redacte de la manera correcta, porque encuentro algunos errores en cuanto a la funcionalidad, por ejemplo, cuando cierro el programa y hay algo escrito, este me dice si quiero guardar el archivo. Le pongo que no, pero me abre la ventana de guardar igualmente.

De todas maneras, esto solo funciona en VB. La forma correcta de hacer esto en .Net (en general) es:
Código: [Seleccionar]
        Dim resultado as DialogResult
        resultado = MessageBox.Show("Would you like to save current file?", "Notepad", MessageBoxButtons.YesNo)
           
        If (resultado = DialogResult.Yes) Then
            ....


Citar
Ademas, intente realizar las funciones de Copiar Pegar Cortar, pero me sale un error de sintaxis. Asi es como lo escribia yo.

Código: [Seleccionar]
   
        txtNotepad.SelectedText.Copy()
Copy es para copiar de una cadena a otra, no para copiar al portapapeles.
Para usar el portapapeles lee lo siguiente:
http://bit.ly/K5gSJO
Título: Re:[Visual Studio 2010]Notepad
Publicado por: GasQueen en Mayo 22, 2012, 03:26:47 am
Disculpa por la demora, es que me fui de casa por unas semanas.

Revise mi codigo, y me fije que la funcion Copy Cut Paste si son para el portapapeles, solo que las estaba asignando mal. Deberia ser asi:

Código: [Seleccionar]
txtnotepad.Copy()
Todavia no estoy en casa como para fijarme lo que me dijiste vos de las constantes VbYes VbNo etc.

Pero intente agregar otro comando, Delete, que lo que tendira que hacer es eliminar el texto seleccionado. Intente hacerlo de esta manera.

Código: [Seleccionar]
txtnotepad.SelectedText.Remove()
Aparentemente, Remove requiere algunas propiedades que señalar, como por ejemplo el comienzo del texto seleccionado, donde termina, o algo asi por lo que vi en MSDN.

Si tenes alguna idea de como hacerlo correctamente te agradeceria la ayuda de nuevo.
Título: Re:[Visual Studio 2010]Notepad
Publicado por: ravenheart en Mayo 24, 2012, 07:42:08 am
Puedes hacer
Código: [Seleccionar]
txtNotepad.SelectedText = ""
Título: Re:[Visual Studio 2010]Notepad
Publicado por: westernson en Mayo 24, 2012, 03:05:23 pm
Hola;
Te contesto de forma rápida lo del copiar en el portapapeles;
Antes de usarlo, hay que limpiar el contenido que haya, para ello:

Código: [Seleccionar]
Clipboard.Clean()
Luego, el botón para copiar el contenido de por ejemplo, un textbox sería:

Código: [Seleccionar]
Clipboard.SetText(nombreDelTextbox.Text)

Salu2 y espero que te sirva  ;)

PD: Haber si luego con un poco más de tiempo lo completo un poco.