elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Pregunta tonta [ Each & Static ]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Pregunta tonta [ Each & Static ]  (Leído 3,693 veces)
Sancho.Mazorka


Desconectado Desconectado

Mensajes: 480


Gamer & Programador


Ver Perfil WWW
Pregunta tonta [ Each & Static ]
« en: 21 Junio 2007, 18:05 pm »

Hola forer@s, vengo a hacerles 2 preguntas que seguro les pareceran muy tontas y mas con la experiencia que tengo  :( 
1_ Cuando es posiblre usar la funcion Each, si no me equivoco es cuando tenes como una variable con matriz.
2_ La funcion Static para definir una variable, para que sirve ?  Es para hacer una funcion y que la variable que vos definis obtenga el resultado ?

Código:
Ej:
Private Sub Form_Load()
   Dim Valor_Aqui As String
   Call Colocar(Valor_Aqui)
End Sub

Private Sub Colocar(Variable as String)
   Static Variable
   Variable = 2
End sub

Si mi teoria esta bien, cuando a Variable le asignamos 2, en realidad le estamos dando valor a Valor_Aqui  :huh:

Si no es como digo, por favor aclarenme para que es Static  :)   Y si tienen ganas, me dicen como serial la forma correcta de hacer mi ejemplo, para que 2 se guarde en Valor_Aqui ?

Muchas Gracias


Sancho.Mazorka    :¬¬


En línea

Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html


Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: Pregunta tonta [ Each & Static ]
« Respuesta #1 en: 21 Junio 2007, 18:13 pm »


No hace falta el static, cuando envias un valor, por defecto lo hace por referencia, por lo tanto al cambiarlo lo cambias en el original xD

Código:
Private Sub Form_Load()
   Dim Valor_Aqui As String
   Call Colocar(Valor_Aqui)
End Sub

Private Sub Colocar(Variable as String)
   Variable = 2
End sub

Si lo usas como función

Código:
Private Sub Form_Load()
   Dim Valor_Aqui As String
   Valor_Aqui=Colocar()
End Sub

Private function Colocar()
   Colocar = 2
End function


Según la MSDN:


EACH
Código:
For Each...Next (Instrucción)
     

Repite un grupo deinstrucciones para cada elemento de unamatriz ocolección.

Sintaxis

For Each elemento In grupo
[instrucciones]
[Exit For]
[instrucciones]

Next [elemento]

La sintaxis de la instrucción For Each...Next consta de las siguientes partes:

Parte Descripción
elemento Requerido.Variable que se utiliza para iterar por los elementos del conjunto o matriz. Para conjuntos, elemento solamente puede ser una variable deltipo Variant, una variable de objeto genérica o cualquier variable de objeto específica. Para matrices, elemento solamente puede ser una variable tipo Variant.
grupo Requerido. Nombre de un conjunto de objetos o de una matriz (excepto una matriz detipos definidos por el usuario).
instrucciones Opcional. Una o más instrucciones que se ejecutan para cada elemento de un grupo.


Comentarios

La entrada al bloque For Each se produce si hay al menos un elemento en grupo. Una vez que se ha entrado en el bucle, todas las instrucciones en el bucle se ejecutan para el primer elemento en grupo. Después, mientras haya más elementos en grupo, las instrucciones en el bucle continúan ejecutándose para cada elemento. Cuando no hay más elementos en el grupo, se sale del bucle y la ejecución continúa con la instrucción que sigue a la instrucción Next.

Se pueden colocar en el bucle cualquier número de instrucciones Exit For. La instrucción Exit For se utiliza a menudo en la evaluación de alguna condición (por ejemplo, If...Then) y transfiere el control a la instrucción que sigue inmediatamente a la instrucción Next.

Puede anidar bucles For Each...Next, colocando un bucle For Each...Next dentro de otro. Sin embargo, cada elemento del bucle debe ser único.

Nota   Si omite elemento en una instrucción Next, la ejecución continúa como si se hubiera incluido. Si se encuentra una instrucción Next antes de su instrucción For correspondiente, se producirá un error.

No se puede utilizar la instrucción For Each...Next con una matriz de tipos definidos por el usuario porque un tipo Variant no puede contener un tipo definido por el usuario.

STATIC
Código:
Static (Instrucción)
     

Se usa en elnivel de procedimiento para declararvariables y asignarles espacio de almacenamiento. Las variables declaradas con la instrucción Static conservan su valor mientras el código se está ejecutando.

Sintaxis

Static nombre_variable[([subíndices])] [As [New] tipo] [, nombre_variable[([subíndices])] [As [New] tipo]] . . .

La sintaxis de la instrucción Static consta de estas partes:

Parte Descripción
nombre_
variable Requerido. Nombre de la variable; sigue las convenciones estándar de nombres de variable.
subíndices Opcional. Dimensiones de una variable dematriz; se pueden declarar hasta 60 dimensiones múltiples. Elargumento subíndices usa la sintaxis siguiente:
[inferior To] superior [,[inferior To] superior] . . .

Cuando no se declara explícitamente en inferior, el límite inferior de una matriz se controla mediante la instrucción Option Base. Este límite inferior es cero si no hay ninguna instrucción Option Base.
 
New Opcional.Palabra clave que permite la creación implícita de un objeto. Si utiliza New cuando declara lavariable de objeto, se crea una nueva instancia del objeto como primera referencia, de forma que no tiene que utilizar la instrucción Set para asignar la referencia del objeto. La palabra clave New no se puede utilizar para declarar variables de cualquiertipo de datos intrínseco ni para declarar instancias de objetos dependientes.
tipo Opcional. Tipo de datos de la variable; puede serByte,Boolean,Integer,Long,Currency,Single,Double,Decimal (no admitida actualmente),Date,String, (para cadenas de longitud variable), String * length (para cadenas de longitud fija),Object,Variant, untipo definido por el usuario, o untipo de objeto. Use una cláusula As tipo distinto para cada variable que defina.


Comentarios

Una vez que el código delmódulo se está ejecutando, las variables declaradas con lainstrucción Static conservan su valor hasta que se reinicie o restablezca el módulo. En losmódulos de clase, las variables declaradas con la instrucción Static conservan su valor en cada instancia de clase hasta que se destruye la instancia. Enmódulos de formulario, las variables estáticas conservan su valor hasta que se cierra el formulario. Use la instrucción Static enprocedimientos no estáticos para declarar explícitamente variables que son visibles sólo dentro de un procedimiento, pero cuya vida es la misma que la del módulo en la que se definió el procedimiento.

Utilice una instrucción Static dentro de un procedimiento para declarar el tipo de datos de una variable que conserva su valor entre llamadas a procedimiento. Por ejemplo, la instrucción siguiente declara una matriz de enteros de tamaño fijo:

Static NúmeroDeEmpleados(200) As Integer

La siguiente línea declara una variable para una nueva instancia de una hoja de cálculo:

Static X As New Worksheet

Si la palabra clave New no se utiliza al declarar una variable de objeto, la variable que hace referencia a un objeto debe asignarse a un objeto existente mediante la instrucción Set antes de poder utilizarla. Antes de que se le asigne un objeto, la variable de objeto declarada tiene el valor especial Nothing, que indica que no hace referencia a ninguna instancia en particular de un objeto. Cuando utiliza la palabra clave New en ladeclaración, se crea una instancia del objeto en la primera referencia del mismo.

Si no especifica un tipo de datos o un tipo de objeto y no existe una instrucción Deftipo en el módulo, la variable es Variant de manera predeterminada.

Nota   La instrucción Static y la palabra clave Static son similares, pero se utilizan para conseguir efectos diferentes. Si declara un procedimiento con la palabra clave Static (como en Static Sub ContarVentas()), el espacio de almacenamiento correspondiente a todas las variables locales dentro del procedimiento se asigna una única vez y el valor de las variables se conserva durante todo el tiempo que se esté ejecutando el programa. Para procedimientos no estáticos, el espacio de almacenamiento para las variables se asigna cada vez que se llama al procedimiento y se libera cuando se sale del procedimiento. La instrucción Static se usa para declarar variables específicas dentro de procedimientos no estáticos para conservar su valor mientras el programa se esté ejecutando.

Al inicializar las variables, una variable numérica se inicializa a 0, una cadena de longitud variable se inicializa a una cadena de longitud cero ("") y una cadena de longitud fija se rellena con ceros. Las variables Variant se inicializan aEmpty. Cada elemento de una variable de un tipo definido por el usuario se inicializa como si fuera una variable distinta.

Nota   Cuando utilice instrucciones Static dentro de un procedimiento, colóquelas al principio del procedimiento con otras instrucciones de declaración como Dim.


En línea

Sancho.Mazorka


Desconectado Desconectado

Mensajes: 480


Gamer & Programador


Ver Perfil WWW
Re: Pregunta tonta [ Each & Static ]
« Respuesta #2 en: 21 Junio 2007, 18:19 pm »

Gracias Hans por lo del Each, pero con el Static yo me referia a como funciona el Winsock por ejemplo.

Código:
Ej:
Private Sub Winsock1_DataArrival(BytesTotal as integer)
Dim Datos As String
Winsock1.GetData Datos
End Sub

Yo quiero saber como hacer lo que hace el Winsock, que vos le das el nombre de la variable y te almacena ahi los datos de entrada, y ahi no es como vos me dijiste, a esos 2 metodos ya los conocia yo.
No se como hacer para que pongo
Código:
Call funcion1(Datos)
y me guarde en Datos el valor  (Datos es una parametro)


Sancho.Mazorka    :¬¬
« Última modificación: 21 Junio 2007, 18:23 pm por Sancho.Mazorka » En línea

Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html


Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: Pregunta tonta [ Each & Static ]
« Respuesta #3 en: 21 Junio 2007, 18:30 pm »

pués dilo antes xD

no sé si te he entendido pero ahí vamos xD

el winsock es un objeto/clase...

cuando haces lo de los datos es el "buffer" de lectura del dato interno...  éste método se llama encapsulación...

creo que no tiene otro para cambiar el valor que ha recibido, de hecho no tendría mucho sentido


para que te guarde el valor, simplemente asignas... y si quieres asegurarte de que va a cambiarlo

pasas el valor como ByRef (es el modo predeterminado) y listo


Código:
dim datos as string
procedimiento datos

Private Sub procedimiento(ByRef algo as string)
  algo="pepito el de los palotes"
End Sub


no se si te entendí xD
En línea

Sancho.Mazorka


Desconectado Desconectado

Mensajes: 480


Gamer & Programador


Ver Perfil WWW
Re: Pregunta tonta [ Each & Static ]
« Respuesta #4 en: 21 Junio 2007, 19:44 pm »

Entonces el que se encarga de hacer lo que pregunte es el ByRef ? Creo que esa era mi respuesta, ahora voy a probar, muchas gracias Hans, sos el unico que se molesto!


Sancho.Mazorka    :¬¬
En línea

Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html


ranslsad


Desconectado Desconectado

Mensajes: 492


Dim Ranslsad as String * :P - Que Vicio!


Ver Perfil WWW
Re: Pregunta tonta [ Each & Static ]
« Respuesta #5 en: 21 Junio 2007, 23:03 pm »

sos el unico que se molesto!

Amigo yo con mi  experiencia conocia eso y siempre me pregunte pero nunca tuve idea sobre como se hacia.. muchos (o por lo menos yo) leo y miro si se y si no se a veces busco aprendo y respondo.. asi que muchos no se interesan pero otros no saben...

Bueno...

Salu2

Ranslsad

(lo vi en el quote)
Ranslsad - Archangel - RanSoft
En línea

ranslsad


Desconectado Desconectado

Mensajes: 492


Dim Ranslsad as String * :P - Que Vicio!


Ver Perfil WWW
Re: Pregunta tonta [ Each & Static ]
« Respuesta #6 en: 21 Junio 2007, 23:08 pm »

Código:
dim datos as string
procedimiento datos

Private Sub procedimiento(ByRef algo as string)
  algo="pepito el de los palotes"
End Sub

Mira por ejemplo.. quiero haceer dos cosas...
si pongo
procedimiento box
sale un msgbox
pero si pongo
procedimiento text
se cambia un text o algo..
como seria el temita?

Salu2

Ranslsad
(sry por el doble post...)

Edit:
dando un poco de vueltas me di cuenta de eso!! y me encanto hans esto lo quise saber de hace tanto tiempo y nunca me dio por buscar.. gracias!! mira lo que hice..
Código:
Private Sub Command1_Click()
ema InputBox("Ema", "Escribe")
End Sub

Function ema(ByRef emaa)
MsgBox emaa
End Function

estas cosas tan sencillas son tan dificiles de encontrar (??)

Salu2

Ranslsad!!!
« Última modificación: 21 Junio 2007, 23:17 pm por ranslsad » En línea

Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: Pregunta tonta [ Each & Static ]
« Respuesta #7 en: 22 Junio 2007, 02:02 am »


el by ref es el modo estandar de enviar los datos que tiene visual (por referencia) usease son una especie de punteros que apuntan a la variable inicial, el tema esta en que eso de poner by ref no surte efecto ya que por defecto lo envia por referencia...
por contrapunto se suele poner by val cuando no quieres que cambie el valor y tal



Citar
sos el unico que se molesto!
eso no me hace ni mejor ni peor, cada uno aporta lo que puede y quiere xD
« Última modificación: 22 Junio 2007, 02:07 am por Hans el Topo » En línea

ranslsad


Desconectado Desconectado

Mensajes: 492


Dim Ranslsad as String * :P - Que Vicio!


Ver Perfil WWW
Re: Pregunta tonta [ Each & Static ]
« Respuesta #8 en: 22 Junio 2007, 18:33 pm »

Ah.. yo estuve investigando y me fui dando cuenta de las cosas oye..

1º > ByRef no hace falta..
2º > Cuantas mas variables creas mas opciones podes reflejar al llamarlo, por ejemplo:
Código:
Public Function ema(ema2 As String, ema3 As String)
MsgBox ema2 & " | " & ema3
End Function

Private Sub Command1_Click()
ema "hola", "chau"
End Sub

Me gusta :P y lo seguire investigando :)

Salu2

Ranslsad
En línea

Zeroql


Desconectado Desconectado

Mensajes: 957


Todo lo k sucede sucede por una razon


Ver Perfil WWW
Re: Pregunta tonta [ Each & Static ]
« Respuesta #9 en: 23 Junio 2007, 02:47 am »

miren la propiedad static es para hacer las cosas que se keden en un puntos sin cambios del usuario. creo que con eso solucinan tanta discucion.
bueno espero que mi acote les sirva de algo
En línea

Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo.
/.-ZEROQL.-\   -----  #937675#

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
DUDA invalid use of non-static member
Programación C/C++
hari 2 2,216 Último mensaje 30 Junio 2011, 19:13 pm
por hari
Problema con control STATIC
Programación C/C++
Riki_89D 6 2,532 Último mensaje 22 Septiembre 2011, 18:14 pm
por naderST
Pasar de Static Linking a Dynamic Linking. « 1 2 »
Programación C/C++
APOKLIPTICO 18 6,751 Último mensaje 9 Agosto 2012, 23:46 pm
por [Zero]
Mientro static dentro de clase static, simbolo externo sin resolver
Programación C/C++
patilanz 3 3,060 Último mensaje 8 Septiembre 2016, 16:15 pm
por ivancea96
[Resuelto] [Pregunta]: Deprecated Non-static method users
PHP
Leguim 4 2,531 Último mensaje 13 Febrero 2020, 02:07 am
por Leguim
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines