Cuando compilo mi aplicación, no funciona.

Iniciado por Eleкtro, 21 Noviembre 2012, 16:27 PM

0 Miembros y 1 Visitante están viendo este tema.

Eleкtro

Cita de: HdM en 21 Noviembre 2012, 17:29 PM
Cuando abres la app por 1ª vez, ¿cómo está inicializado My.Settings.Valores ?
No se si te refieres a esto, es Int32, con valor "0"

Cita de: HdM en 21 Noviembre 2012, 17:29 PMPodrías crearte un Sub con el código que metes en el FormClosing y ese Sub meterlo en Load llámandolo antes del CargaPropiedades, si My.Settings.Valores no está inicializado.
¿Y como compruebo si está inicializada?
Yo he intentado un:
Código (vbnet) [Seleccionar]
MsgBox(My.Settings.Valores.ToString())
para ver si es "0", pero no se ejecuta el msgbox (ni el resto de código que sigue debajo).








HdM

Pero el My.Settings.Valores lo definías como un array ¿no?

Compruébalo con:

Código (vbnet) [Seleccionar]

If IsNothing(My.Settings.Valores) then
'llamas al Sub
End If

- Nice to see you again -

Novlucker

Pon un punto de interrupción y le pasas el mouse por arriba :xD

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Eleкtro

Cita de: HdM en 21 Noviembre 2012, 18:08 PM
Código (vbnet) [Seleccionar]

If IsNothing(My.Settings.Valores) then
'llamas al Sub
End If
lo he intentado, pero creo que no lo hago bien.


He descubierto que la excepción de la consola aparece solamente cuando cierro el form sin que haya ningún checkbox clickado, y me dice la consola lo de "IndexOutOf..."

Si ejecuto la app (compilada) sin que haya ningún checkbox seleccionado (por ejemplo el primer uso) pues me manda error, pero si habia algún checkbox seleccionado no me sale la ventana de error...
En cambio, si ejecuto la app desde la IDE sin que haya ningún checkbox clickado, la consola no dice nada de excepciones, pero si lo hago desde la app compilada con esas circunstancias si, es un poco raro ¿no?

Cita de: Novlucker en 21 Noviembre 2012, 18:11 PM
Pon un punto de interrupción y le pasas el mouse por arriba :xD

Saludos

Que significa para ti pasarle el mouse por arriba?, yo le pongo el breakpoint, pero...y luego? xD








Eleкtro

#14
(Perdón por el doble post)

Código (vbnet) [Seleccionar]
   Private Sub CargarPropiedades()
       If Not IsNothing(My.Settings.Valores) Then
           Dim ListaCheckados As Int32() = My.Settings.Valores
           For i As Int32 = 0 To mcheck.Length - 1
               For Each indiceCheckado As Int32 In ListaCheckados
                   mcheck(indiceCheckado - 1).Checked = True
               Next
           Next
       End If
   End Sub


Pero me sigue enviando otro tipo de errores:

************** Exception Text **************
System.ArgumentException: The property 'Valores' could not be created from it's default value. Error message: There is an error in XML document (1, 1).
  at System.Configuration.SettingsPropertyValue.Deserialize()
  at System.Configuration.SettingsPropertyValue.get_PropertyValue()
  at System.Configuration.SettingsBase.GetPropertyValueByName(String propertyName)
  at System.Configuration.SettingsBase.get_Item(String propertyName)
  at System.Configuration.ApplicationSettingsBase.GetPropertyValue(String propertyName)
  at System.Configuration.ApplicationSettingsBase.get_Item(String propertyName)
  at PlayLists.My.MySettings.get_Valores() in C:\Users\Administrador\Desktop\WindowsApplication19\My Project\Settings.Designer.vb:line 86
  at PlayLists.Form1.CargarPropiedades() in C:\Users\Administrador\Desktop\WindowsApplication19\Form1.vb:line 107
  at PlayLists.Form1.Form1_Load(Object sender, EventArgs e) in C:\Users\Administrador\Desktop\WindowsApplication19\Form1.vb:line 60
  at System.EventHandler.Invoke(Object sender, EventArgs e)
  at System.Windows.Forms.Form.OnLoad(EventArgs e)
  at System.Windows.Forms.Form.OnCreateControl()
  at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
  at System.Windows.Forms.Control.CreateControl()
  at System.Windows.Forms.Control.WmShowWindow(Message& m)
  at System.Windows.Forms.Control.WndProc(Message& m)
  at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
  at System.Windows.Forms.ContainerControl.WndProc(Message& m)
  at System.Windows.Forms.Form.WmShowWindow(Message& m)
  at System.Windows.Forms.Form.WndProc(Message& m)
  at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
  at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
  at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


Intento empezar por el siguiente error pero...
System.ArgumentException: The property 'Valores' could not be created from it's default value. Error message: There is an error in XML document (1, 1).

¿A que documento XML se refiere? ¿y como es posible que me diga que el error está en el caracter 1 de la columna 1? suena imposible...

EDITO:

   at PlayLists.Form1.CargarPropiedades() in C:\Users\Administrador\Desktop\WindowsApplication19\Form1.vb:line 107


línea 107:
Código (vbnet) [Seleccionar]
        If Not IsNothing(My.Settings.Valores) Then

Venga ya...  :¬¬ :¬¬ :¬¬








spiritdead

Cita de: DonVidela en 21 Noviembre 2012, 16:47 PM
Es mala practica no controlar los errores, debes manejar todas las excepciones, validar absolutamente todo.
concuerdo contigo

uno debe poder predecir almenos el 95% de los posibles errores, y crear subrutinas capaces de subsanar el error en ejecucion
Facilitador De Tareas - Task Simplifier (FDT)

seba123neo

solucionar este tipo de errores que solo salen cuando esta compilado, y no salen en el IDE es facil, tenes varias posibilidades:

1 - comentar una parte del codigo, por ejemplo todo el codigo del evento form_load lo comentas y luego compilas y probas el programa, si no salta error el error esta ahi, mira que facil.

2 - vas poniendo msgbox por cada linea, te fijas hasta que msgbox llego antes de que salte el erorr y listo ahi tenes la linea del error.

me imagino que estas ejecutando el .exe que esta en bin/release y no el de debug.

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

HdM

Hola.

Deja en el designer:

Código (vbnet) [Seleccionar]

<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute()> _
        Public Property Valores() As Int32()
            Get
                Return CType(Me("Valores"), Int32())
            End Get

            Set(ByVal value As Int32())
                Me("Valores") = value
            End Set
        End Property


Es decir sin valor por defecto (omitiendo Global.System.Configuration.DefaultSettingValueAttribute("0")). Así ya no debería darte problemas el IsNothing()

Saludos.

- Nice to see you again -

Eleкtro

Cita de: seba123neo en 21 Noviembre 2012, 19:48 PM
me imagino que estas ejecutando el .exe que esta en bin/release y no el de debug.
La verdad es que no... estaba con el debug, no conozco las diferencias entre compilar en modo "release" y "debug", pensé que solo era para facilitar la diferencia entre la versión debug y la release, pero voy a googlear sobre eso, gracias!




Cita de: HdM en 21 Noviembre 2012, 20:06 PM
Código (vbnet) [Seleccionar]

<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute()> _


eres un genio de VB, un pequeño problema menos!

Gracias,
Saludos








Novlucker

La diferencia es el modo en que el compilador optimiza el MSIL resultante, y es incluso un poco más notorio en el código generado para VB.NET, ya que dado que se permite el incluir puntos de interrupción en código no ejecutable (en C# no es posible), se agregan pequeñas instrucciones nop que en modo release son eliminadas.

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein