VB (ERROR)
-
Hola gente, tengo un error en VB que es bastante fastidioso y no encuentro solución
Veamos, tengo 2 variables.Dim guardar As String = SaveFileDialog1.FileName Dim escribe As New System.IO.StreamWriter(guardar)
If cajatexto2.Visible = False Then
ahora bien. tengo varias cosas:
cajatexto1 cajatexto2 y cajatexto3
y quiero hacer esto si la cajatexto1 se ve pero las demás no:escribe.WriteLine("import app") escribe.close()
(ESE VA BIEN)
Luego tengo otroIf cajatexto2.Visible = True Then escribe.writeline ("HOLA") escribe.close()
tambien va bien
pero ahroa tengo el error:If cajatexto1.Visible = True And cajatexto2.Visible = True Then escribe.WriteLine("") escribe.Close()
Y ese me tira este error:
El código de usuario no controló: ObjectDisposedException
:S!?
Y no me subraya nada en azul antes de iniciarlo, pero cuando hago esa acción, me tira ese error, se bloquea el programa y me lleva al VB señalándome esa linea
¿Cómo puedo hacer para que funcione normalmente?
debería ir porque es sencillo
Si X no se ve
hacer una cosa
Si X se ve
Hacer otra diferente
Si X se ve y A se ve
hacer otra diferente a las demás
pero claro, no rula y tengo sospecha de que sean las variables.
He probado a poner una variable con nombre diferente para cada función pero sigue sin irme :S(Es para un savefiledialog, para que te lo guarde en un txt xD)
-
creo que sé por qué te pasa eso:
tienes algo así:
si A es false
escribes y cierrassi A es true
escribes y cierrasSi B es true y A es true
escribes y cierras¿cómo vas a escribir en el último caso si previamente has cerrado el streamwriter? SIEMPRE, al llegar a la tercera condición tendrás el streamwriter cerrado.
ObjectDisposedException
Objeto liberado, o borrado. Eso es lo que hace el close no? jeje
prueba a no cerrar el writer hasta terminar de usarlo. Ciérralo al final del programa, o cuando tengas la certeza de que no va s avolver a usarlo más adelante.
-
Claro, pero ese es el problema, si no pongo un escribe.close() después de cada condicional, no me guarda el archivo, es decir, me lo guarda pero en blanco :S
Ahí solo me guardaría la 3º condición, que sería
Si B es true y A es true
escribes y cierras. -
Si pasa como en Java (por lo menos a mí me pasaba) al escribir en un archivo luego debes cerrar la conexión, pero la puedes cerrar inmediatamente después de escribir, o en cualquier momento, si no me equivoco lo puedes poner al final pase lo que pase...
PD: en Java también había un método, creo que flush() que hacía que se guardara pero sin cerrar el flujo de datos...
-
En VB es AutoFlush, pero tiene que tener la variable delante y algo más detrás. Pero lo que me parece raro y que sigo sin comprender es que.
Si A se ve
Que haga algo
Si A no se ve
que haga otro
Si A se ve y B no
que haga otro distingoPor qué en el 2º sí me guarda el archivo, en el 1º también, pero en el 3º ya no?
-
Si no cierras no guarda. Pero yo no digo q no cierres, digo q cierres al final:
If cajatexto2.Visible = False Then escribe.WriteLine("import app") End If If cajatexto2.Visible = True Then escribe.writeline ("HOLA") End If If cajatexto1.Visible = True And cajatexto2.Visible = True Then escribe.WriteLine("") End If escribe.Close()
Eso tiene que funcionar.
-
Oh god! ES CIERTO
si no usas condicionales no cierra, pero si usas cualquiera va al pie, se me olvidó por completo que las condicionales eran como "parentesis" en un texto jejejeje
eres el amo, te debo una ;)! -
:bah:
(es spam, lo sé, pero el icono venía a huevo XD)
por cierto, si más adelante necesitases escribir, también puedes redeclarar el streamwriter y dejarte de leches. La cosa es si conviene o no que el archivo se mantenga abierto. Si durante la ejecución del programa, quieres que se pueda acceder al archivo, entonces ciérralo siempre que puedas.
Pero si no, ciérralo al final del código y punto. -
@Hawkings said:
Si pasa como en Java (por lo menos a mí me pasaba) al escribir en un archivo luego debes cerrar la conexión, pero la puedes cerrar inmediatamente después de escribir, o en cualquier momento, si no me equivoco lo puedes poner al final pase lo que pase...
PD: en Java también había un método, creo que flush() que hacía que se guardara pero sin cerrar el flujo de datos...
:|||:
Forever alone
-
@Salvatore said:
prueba a no cerrar el writer hasta terminar de usarlo. Ciérralo al final del programa, o cuando tengas la certeza de que no va s avolver a usarlo más adelante.
es que anghios necesita ver las cosas 3 veces _xD_
es coña, no te enfades jejeje