Foros del Web » Programando para Internet » ASP Clásico »

Dimensionar arrgeglos dinamicamente

Estas en el tema de Dimensionar arrgeglos dinamicamente en el foro de ASP Clásico en Foros del Web. Buenos días amigos, esa es mi pregunta: ¿Puedo dimensionar un arreglo dinamicamente?, si se puede ¿como lo hago? De antemano muchas gracias....
  #1 (permalink)  
Antiguo 08/06/2007, 06:57
Avatar de alexa10  
Fecha de Ingreso: julio-2002
Ubicación: De este lado...
Mensajes: 293
Antigüedad: 21 años, 10 meses
Puntos: 0
Dimensionar arrgeglos dinamicamente

Buenos días amigos, esa es mi pregunta: ¿Puedo dimensionar un arreglo dinamicamente?, si se puede ¿como lo hago?

De antemano muchas gracias.

  #2 (permalink)  
Antiguo 08/06/2007, 07:44
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Re: Dimensionar arrgeglos dinamicamente

Con Redim

Saludos
  #3 (permalink)  
Antiguo 08/06/2007, 08:48
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Re: Dimensionar arrgeglos dinamicamente

Acuerdate de que puedes redimensionar de dos formas:

Dim ar(33)

- redimensionando todo el arreglo:

redim ar(44,2)

aqui redimensionamos limpiando el arreglo y dejando vacio

- redimensionando y preservando su contenido

redim preserve ar(33,2)

Solo deja redimensionar la última dimension (valga la redundancia :P ) Es decir la mas a la derecha. Si tienes ar(33,1) y quieres redimensionar el arreglo solo puedes hacerlo con la segunda dimension:

redim preserve ar(33,3) --> Bien

redim preserve ar(44,1) --> Mal (error)
redim preserve ar(44,5) --> Mal (error)



Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #4 (permalink)  
Antiguo 08/06/2007, 09:16
Avatar de alexa10  
Fecha de Ingreso: julio-2002
Ubicación: De este lado...
Mensajes: 293
Antigüedad: 21 años, 10 meses
Puntos: 0
Re: Dimensionar arrgeglos dinamicamente

Muchas gracias chicos...

Otra pregunta, si cuando dimensiono el arreglo de esta forma:

Código PHP:
Dim arreglo()  
Redim arreglo(algun valor
y no tengo conocimiento previo de cuantas posiciones va a tener dicho arreglo, hay alguna forma de hacer ese redimensionamiento de forma dinámica?

De antemano muchas gracias

  #5 (permalink)  
Antiguo 08/06/2007, 09:29
Avatar de CésarBalaguer  
Fecha de Ingreso: octubre-2006
Ubicación: en mi casa
Mensajes: 181
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Dimensionar arrgeglos dinamicamente

si hay forma de redimencionarlo en forma dinàmica, por ejemplo en un loop donde llenas el arreglo con los registros de una tabla vas haciendo un redim preserve arreglo(contador) y en cada vuelta vas incrementando tu contador de uno en uno...
  #6 (permalink)  
Antiguo 08/06/2007, 11:22
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: Dimensionar arrgeglos dinamicamente

Cita:
Iniciado por alexa10 Ver Mensaje
...¿como lo hago?...
Cita:
Iniciado por tammander Ver Mensaje
Acuerdate de que puedes redimensionar de dos formas:
- redimensionando y preservando su contenido
redim preserve ar(33,2)
redim preserve ar(33,3) --> Bien
Un saludo
Cita:
Iniciado por CésarBalaguer Ver Mensaje
si hay forma de redimencionarlo en forma dinàmica, por ejemplo ...
un ejemplo para reforzar lo que te han comentado, supongamos una consulta...

Código PHP:
'inicializamos el arreglo en nada
DIM sem()

'
generamos una consultapara sacar un total de registros
RS
.Open sqlcxn
if Err=0 then
    tantos
=0
    
while RS.EOF=false
        tantos
=tantos+1
        RS
.movenext
    wend
end 
if
RS.close

'redimensionamos el arreglo, restandole 1, por que sino se saldria del
'
intervalo del arreglorecordemos que se toma como valor inicial 0(creo)
REDIM sem(tantos-1)

'una segunda consulta para obtener algun nombre de la tabla
RS.open sql, cxn
if Err=0 then
    inicia=0
    while RS.EOF=false
        sem(inicia)=RS("nombre").value
        RS.movenext
        inicia=inicia+1
    wend
end if

'
limpiamos y cerramos las consultas
RS
.close
cxn
.close
set RS
=nothing
set cxn
=nothing

'ahora que ya tenemos el arreglo con datos, que hacemos con el ???
'
si fueran valores numericos sumarloscaso contrariopoder mandar llamar
'funciones        ... otro ejemplo

for ver=0 to uBound(sem)
    if  (sem(ver)<>"B") then
        call funcion(1,tabla,sem(ver))
    end if
next

'
TAMBIEN DEBEMOS RECORDAR QUE SON VARIABLES QUE USA EL SERVIDOR
'ASI QUE TENEMOS QUE ELIMINARLAS SI NO LAS OCUPAMOS MAS
REDIM sem(0)'
Matriculas
REDIM grp
(0)'Indexs
sem(0)=null'
Matriculas
grp
(0)=nullIndexs 
suerte
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #7 (permalink)  
Antiguo 08/06/2007, 16:52
Avatar de CésarBalaguer  
Fecha de Ingreso: octubre-2006
Ubicación: en mi casa
Mensajes: 181
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Dimensionar arrgeglos dinamicamente

Cita:
RS.Open sql, cxn
if Err=0 then
tantos=0
while RS.EOF=false
tantos=tantos+1
RS.movenext
wend
end if
RS.close
en lugar de hacer 2 querys uno para dimensionar el arreglo y otra para llenar los el arreglo con los datos de la tabla, mas recomendable serìa hacer los dos en un solo query, asì te evitas tantas lecturas similares a la base de datos y por ende se hace mas ràpido.

sql = "select COLUMNA from TABLA where CONDICION"
RS.Open sql, cxn
if not RS.EOF then
tantos=0
while RS.EOF=false
REDIM PRESERVE ARREGLO(tantos)
ARREGLO(tantos) = RS(0)
tantos = tantos + 1
RS.movenext
wend
end if
RS.close
  #8 (permalink)  
Antiguo 08/06/2007, 18:02
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: Dimensionar arrgeglos dinamicamente

Pero en lugar de hacer todo esto puedes mejor utilizar el método getRows para almacenar tus valores directamente en un arreglo.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #9 (permalink)  
Antiguo 08/06/2007, 18:10
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: Dimensionar arrgeglos dinamicamente

O_G(), aprocechando el tema y no abrir otro mas

independientemente de la consulta que haga a la base de datos, al tomar los valores con el GETROW, se hace un arreglo multidimensional?
esto significa que; si....

la consulta regresa 6 registros coincidientes con el criterio,
se generaria un arreglo de 6 y en cada casilla tendria que hacerle un SPLIT, para mostrar lo que hay en la casilla 1??

es asi??
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #10 (permalink)  
Antiguo 08/06/2007, 18:18
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: Dimensionar arrgeglos dinamicamente

No tienes que hacer ningún split, efectivamente el método getrows regresará un arreglo multidimensional al que puedes iterar para obtener su contenido:


Código:
strSQL = "SELECT campo1, campo2, campo3 FROM tabla WHERE condiciones"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strSQL, ObjConn, 3, 3

if not rs.EOF then
   ds = rs.GetRows()
   rs.Close
else
  ds = null
end if

Set rs = Nothing
Set ObjConn = Nohting

if not isNull(ds) then
  'itera filas
  for i = 0 to uBound(ds, 2)
    'imprime columnas
    Response.Write(ds(0,i) & "<br />")  'campo 1
    Response.Write(ds(1,i) & "<br />")  'campo 2
    Response.Write(ds(2,i) & "<br />")  'campo 3
    Response.Write("<hr />")  
  next
end if

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #11 (permalink)  
Antiguo 13/06/2007, 13:37
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 21 años, 1 mes
Puntos: 0
Re: Dimensionar arrgeglos dinamicamente

en este post se trato tambien el tema:

http://www.forosdelweb.com/showthrea...ighlight=redim
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:02.