Viernes 8 de Noviembre de 2024, 16:52
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
CLR: .Net / Mono / Boo / Otros CLR
»
VB .NET
(Moderador:
ElNapster
) »
Leer variable de otra clase
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Leer variable de otra clase (Leído 26226 veces)
rogalde
Nuevo Miembro
Mensajes: 17
Leer variable de otra clase
«
en:
Lunes 27 de Abril de 2009, 00:01 »
0
Hola! soy un poco nuevo en la programación con VB.net. Tengo un proyecto con diferentes clases cada una de ella están en un fichero distinto. Hay una de ellas que es el formulario principal (Form1) y ahí tengo una caja de texto. Pues bien, me gustaría leer ese valor desde otra clase (la que se llama OPCServer). No tengo ni idea como hacerlo, he probado con una cosa que encontré en internet y era crear una clase para la variable para ponerla publica, eso lo hice dentro del archivo de FOrm1 y puse:
Código: vb.net
Public
Class
MiGlobal
Public
MiVariable
As
Integer
End
Class
Les adjunto una captura del espacio de trabajo que tengo haber si alguien me puede ayudar.
Muchas gracias!!!
El mensaje contiene
1 archivo adjunto
. Debes
ingresar
o
registrarte
para poder verlo y descargarlo.
Tweet
javierkcjm
Miembro activo
Mensajes: 48
Nacionalidad:
Re: Leer variable de otra clase
«
Respuesta #1 en:
Lunes 27 de Abril de 2009, 17:57 »
0
Hola amigo ,
cuando creas una clase para poder usarla en otra clase debes referenciar debes importar la referencia hacia la clase asi
imports tuproyecto.tuclase
espero poder ayudarte
saludos Cordiales
JC
rogalde
Nuevo Miembro
Mensajes: 17
Re: Leer variable de otra clase
«
Respuesta #2 en:
Lunes 27 de Abril de 2009, 22:04 »
0
Gracias por responder.
He importado como me dices.
Y a la hora de utilizar la variable de la otra clase me dice este error.
Citar
error BC30469: La referencia a un miembro no compartido requiere una referencia de objeto.
Como podría solucionarlo?
javierkcjm
Miembro activo
Mensajes: 48
Nacionalidad:
Re: Leer variable de otra clase
«
Respuesta #3 en:
Lunes 27 de Abril de 2009, 22:25 »
0
hola amigo, seguramente tu variable la debes de haber creado como privada solo para la clase
debes crear una referencia al objeto creando una nueva instancia de la clase
por ejemplo
dim nuevaclase as new clase
ahi debes poder usar la variable con el objeto nuevaclase
nuevaclase.mivariable=2 ' en caso de ser entera la variable
saludos cordiales
JC
rogalde
Nuevo Miembro
Mensajes: 17
Re: Leer variable de otra clase
«
Respuesta #4 en:
Lunes 27 de Abril de 2009, 22:42 »
0
mm no entiendo bien lo que me explicas.. pero aquí te pego el principio de la clase de la que quiero leer la variable. La variable se llama variable1.
Código: vb.net
Imports
System
Imports
System.
Drawing
Imports
System.
Collections
Imports
System.
ComponentModel
Imports
System.
Windows
.
Forms
Imports
System.
Threading
Imports
Softing.
OPCToolbox
Namespace
noche2
Public
Class
Form1
Inherits
System.
Windows
.
Forms
.
Form
Private
components
As
System.
ComponentModel
.
Container
=
Nothing
Private
m_outProc
As
OutProc
=
New
OutProc
Public
WithEvents
variable1
As
System.
Windows
.
Forms
.
TextBox
Private
m_opcServer
As
OpcServer
=
Nothing
Public
Sub
New
(
ByVal
anOutProc
As
OutProc
)
.........
Como ves la tengo declarada como publica.
En la otra clase lo que quiero hacer es..
VariabledeotraClase = Variable1
javierkcjm
Miembro activo
Mensajes: 48
Nacionalidad:
Re: Leer variable de otra clase
«
Respuesta #5 en:
Lunes 27 de Abril de 2009, 22:49 »
0
cuando creas una nueva clase para poder acceder a esa clase deber crear una nueva instancia de esa clase para poder acceder a la variable que debe ser declarada dentro de la clase como publica,te explico creando una clase de ejemplo
public class MiClase
Public variable 1 as int
private variable2 as int
ENd Clase
aqui he creado una clase con 2 variables una publica y una privada, es este caso a la unica que voy a poder acceder desde otra clase es a la publica, ahora para poder usar esta clase en otra debes agregar la referencia
Imports MiProyecto.MiClase
Public Class ClaseNueva
Dim ClaseMia as new MiClase
sub leerVariable()
ClaseMia.Variable1=2
end sub
ENd Clase
de esta forma creo la clase que contiene mi variable(MiCLase) e importandola con el imports en la clase que voy a utilizar la variable(ClaseNueva) puede leer la variable en cuestion(ClaseMia.Variable1)
espero haberme explicado bien
saludos Cordiales
JC
rogalde
Nuevo Miembro
Mensajes: 17
Re: Leer variable de otra clase
«
Respuesta #6 en:
Lunes 27 de Abril de 2009, 23:13 »
0
Ahora te entendí, pero he hecho lo que me dices pero no me funciona, no me da error al compilar, pero la variable no tiene nada.
No se que puedo hacer ya que llevo unos días con dolor de cabeza. Si quieres te puedo mandar el proyecto para que lo veas y me digas mejor.
saludos! y gracias.
javierkcjm
Miembro activo
Mensajes: 48
Nacionalidad:
Re: Leer variable de otra clase
«
Respuesta #7 en:
Lunes 27 de Abril de 2009, 23:23 »
0
Listo enviame el proyecto , luego corregido pongo la solucion
saludos cordiales
JC
rogalde
Nuevo Miembro
Mensajes: 17
Re: Leer variable de otra clase
«
Respuesta #8 en:
Lunes 27 de Abril de 2009, 23:28 »
0
Aquí te lo adjunto.
Decirte..
la clase de la que quiero coger la variable es form1, y es variable1 que es una caja de texto
en la clase OPCserver en la linea 186 la variable campo1 es la que quiero que valga lo que ponga form1
Muchisimas gracias!!!
PD: Lo he comprimido con Winrar y es un proyecto VB.NET 2008
El mensaje contiene
1 archivo adjunto
. Debes
ingresar
o
registrarte
para poder verlo y descargarlo.
Nebire
Miembro HIPER activo
Mensajes: 670
Re: Leer variable de otra clase
«
Respuesta #9 en:
Martes 28 de Abril de 2009, 09:16 »
0
Necesitas un manual sobre programación orientada a objetos, cómprate un libro sencillito y pequeño que te explique los fundamentos, para aprender qué es un objeto y cómo se manipulan, de otra forma aunque se te resuelva tu duda, vendrás al día siguiente con otra tontería similar. Aprendiendo de esa manera, sólo tendrás grandes lagunas, y lo poco que sepas sólo lo sabrás 'de memoria', por que te lo han dicho, sin llegar a comprender realmente por qué es así.
«Ma non troppo»
----> ModoVacaciones = False<----
rogalde
Nuevo Miembro
Mensajes: 17
Re: Leer variable de otra clase
«
Respuesta #10 en:
Martes 28 de Abril de 2009, 15:31 »
0
Hola!! gracias por el consejo, pero tengo dos libro de VB.Net y no consigo ver donde me resuelve mi duda. Me defiendo bastante programando en ADA, C#, C++, PHP, porque lo utilizo mucho en mi carrera (Ing Teleco) pero nunca había programado con .net, es mi primer programa y no es muy sencillo, estaba haciendo un servidor OPC para que se conecte con otro programas y no funciona ninguna de la nociones que tenia yo para llamar a una variable desde otra clase.
De todas formas buscaré otros libros que no sean ANAYA, he visto alguno por el emule, me los bajaré a ver que tal.
Gracias de todos modos.
Salu2
javierkcjm
Miembro activo
Mensajes: 48
Nacionalidad:
Re: Leer variable de otra clase
«
Respuesta #11 en:
Martes 28 de Abril de 2009, 17:39 »
0
Hola, disculpa la demora es que no tenia instlado el vs 2008
por lo que veo en la clase opserver en la linea 186 pones
campo1=2020, ahi nunca le asignas a campo1 lo que tiene variable1, debes hacer
campo1=CInt(claseMia.variable1.Text)
no pude corre el programa ya que usas una dll que no pude registrar en mi sistema por algun motivo , tal vez no fue creada para el sistema operativo que uso xp sp2,
saludos cordiales
JC
rogalde
Nuevo Miembro
Mensajes: 17
Re: Leer variable de otra clase
«
Respuesta #12 en:
Martes 28 de Abril de 2009, 17:45 »
0
hola, no pasa nada.
Si puede 2020 para comprobar. La solución que me has puesto ya la había probado yo y no me funcionó, la variable me sale vacía. Probé a crear en la otra clase una variable publica como un integer normal e igualarlo a un número y tampoco llega nada. No se que puede estar pasandome.
Muchisimas gracias!!.
javierkcjm
Miembro activo
Mensajes: 48
Nacionalidad:
Re: Leer variable de otra clase
«
Respuesta #13 en:
Martes 28 de Abril de 2009, 18:04 »
0
haber vamos por parte, tenemos la clase opcserver en la cual hay una variable llamada campo1 que deseamos que reciba el valor que ingresamos en el objeto llamado variable1
en la clase opcserver hagamos lo siguiente, creemos una propiedad para el campo1 en al region property coloca esto
Public Property regcampo1() As Int32
Get
Return Campo1
End Get
Set(ByVal value As Int32)
Campo1 = value
End Set
End Property
en le formulario form1 declaras una variable de tipo opcserver
Private m_opcServer As OpcServer = Nothing
ahora para poder asignarle a campo1 el valor del objeto vaiable1 ponemos
m_opcServer.regcampo1 = CInt(variable1.Text)
MessageBox.Show(m_opcServer.regcampo1)
y pon un mensaje para verificar que campo1 cojio el valor
prueba esto, debe funcar
saludos cordiales
JC
javierkcjm
Miembro activo
Mensajes: 48
Nacionalidad:
Re: Leer variable de otra clase
«
Respuesta #14 en:
Martes 28 de Abril de 2009, 18:14 »
0
en caso de que en modo ejecucion te salga alfun error de referencia no establecida como instancia de un objeto tiene que cambiar la forma de declarar la variable de la clase opcserver asi
Private m_opcServer As New OpcServer
el operador new hacer una referencia hacia la clase
saludos cordiales
JC
rogalde
Nuevo Miembro
Mensajes: 17
Re: Leer variable de otra clase
«
Respuesta #15 en:
Martes 28 de Abril de 2009, 22:57 »
0
Hola! tuve que poner lo ultimo que me dijiste.
Y ahora lo que me pasa es que en la clase opcserver me sale MessageBox con el valor correcto.
Código: vb.net
Public
Property
regcampo1
(
)
As
Int32
Get
Return
Campo1
End
Get
Set
(
ByVal
value
As
Int32
)
Campo1
=
value
System.
Windows
.
Forms
.
MessageBox
.
Show
(
Campo1
)
End
Set
End
Property
Pero cuando lo pongo en donde quiero que me coja la variable, osea en la linea 187 creo que era me sale que vale cero. pq??
Gracias!!
javierkcjm
Miembro activo
Mensajes: 48
Nacionalidad:
Re: Leer variable de otra clase
«
Respuesta #16 en:
Martes 28 de Abril de 2009, 23:35 »
0
hola,
una vez que le asignas el valor a la variable campo1 con la propiedad como te dije no es necesario volver a asiganarle el mismo valor en la linea 187 osea ya no tienes q poner "campo1=" ya que como instancias la clase y asiganas valor al campo1 con la propiedad durante el tiempo de ejecucion de tu proyecto la variable en esa referencia de clase mantendra el valor asi que podras usarlo en cualquien procedimiento de la clase opcserver, espero haberme hecho entender
saludos cordiales
JC
rogalde
Nuevo Miembro
Mensajes: 17
Re: Leer variable de otra clase
«
Respuesta #17 en:
Martes 28 de Abril de 2009, 23:43 »
0
hola de nuevo. sisi te entendí. Pero.. lo que yo te decía es que justo en esta estructura donde esta lo del Messagebox, me retorna el valor correcto. Pero en la linea esa 187 hago lo del MesageBox igual que en el código de abajo y me sale que la variable vale 0.
La variable la tengo declarada como Public Campo1 As Integer
Código: vb.net
Public
Property
regcampo1
(
)
As
Int32
Get
Return
Campo1
End
Get
Set
(
ByVal
value
As
Int32
)
Campo1
=
value
System.
Windows
.
Forms
.
MessageBox
.
Show
(
Campo1
)
End
Set
End
Property
javierkcjm
Miembro activo
Mensajes: 48
Nacionalidad:
Re: Leer variable de otra clase
«
Respuesta #18 en:
Miércoles 29 de Abril de 2009, 00:07 »
0
mmm es raro ya que una vez que muestras el valor con el messagebox en la propiedad deberia mostrarlo en la otra funcion, pero no seria raro que en alguna linea este reescribiendo nuevamente la variable o este volviendo a declararla, te recomiendo que ejecutes el proyecto en depuracion paso a paso(F11) para poder observar si en algun momento del proyecto se sobreescribe la variable
saludos cordiales
JC
rogalde
Nuevo Miembro
Mensajes: 17
Re: Leer variable de otra clase
«
Respuesta #19 en:
Miércoles 29 de Abril de 2009, 00:19 »
0
Si la verdad que a mi también me extraña mucho. He hecho este ejemplo y me funciona perfecto. Haré lo que me del modo depuración.
Gracias!! de verdad!
Código: vb.net
Public
Class
Form1
Public
v1
As
Integer
Public
pepe
As
New
form2
Private
Sub
Form1_Load
(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.
EventArgs
)
Handles
MyBase
.
Load
v1
=
44
pepe .
regcampo1
=
696969
pepe .
pruebaFuncion
(
)
End
Sub
End
Class
Public
Class
form2
Public
Campo1
As
Integer
Public
Property
regcampo1
(
)
As
Int32
Get
Return
Campo1
End
Get
Set
(
ByVal
value
As
Int32
)
Campo1
=
value
End
Set
End
Property
Public
Sub
pruebaFuncion
(
)
System.
Windows
.
Forms
.
MessageBox
.
Show
(
Campo1
)
End
Sub
End
Class
fORU-
Miembro MUY activo
Mensajes: 225
Nacionalidad:
Re: Leer variable de otra clase
«
Respuesta #20 en:
Miércoles 29 de Abril de 2009, 07:06 »
0
mmm hola que tal companero, como me dio flojera leer todos lo hilos
me basare en su pregunta original "como leer variabl de otra clase"
la solucion seria esta ,
Public Shared <nombre_var> as <tipo_de_dato>
esto seria como static en C o en JAVA, donde el valor de la variable de la clase se matiene hasta no ser que se modifique o que se termine el programa.
mas tarde editare para poner un ejemplo sencillo.
ahi va el codigo, en realidad no se si estoy fuera de contexto pero el esfuerzo de querer ayudar esta
creo la clase contador con un atributo shared y publico
Código: vb.net
Public
Class
Contador
Public
Shared
i
As
Integer
=
0
Public
Sub
contar
(
)
i
=
i
+
1
End
Sub
End
Class
creo la clase reloj donde el metodo reloj hace uso del metodo contar de la clase contador
Código: vb.net
Public
Class
Reloj
Private
tictac
As
New
Contador
Public
Sub
reloj
(
)
tictac.
contar
(
)
MsgBox
(
Contador.
i
, MsgBoxStyle.
Information
,
"Reloj"
)
End
Sub
End
Class
lo que sucede aqui es que el metodo reloj de la clase reloj hace uso del atributo "i" de la clase contador sin perder el valor de i, como dije anteriormente el valor del atribitu "i" siempre estara presente mientras el programa este corriendo. sino queda claro mi explicacion podrias leer sobre variables estaticas en C o en JAVA
atte:fORU-
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
CLR: .Net / Mono / Boo / Otros CLR
»
VB .NET
(Moderador:
ElNapster
) »
Leer variable de otra clase