Array de dimensión variable

Consultas, trucos, consejos. Todo sobre Clarion en todas sus versiones
Responder
forestalino
Mensajes: 2
Registrado: Vie Feb 19, 2016 9:00 am
Contactar:

Array de dimensión variable

Mensaje por forestalino » Lun Feb 22, 2016 10:34 pm

Saludos a todos!

Escribo por si Uds pueden orientarme con mi problema:

Debo dibujar varios polígonos con la cantidad de lados a gusto del usuario.
La función Polygon necesita un array para pasarle las coordenadas (x,y) de
cada vértice.

Mi problema es que si utilizo el mismo array para un
polígono de 4 vértices y luego para otro de 6 vértices.
El de 4 vértices terminará dibujado con uno de los vértices en x=0 e y=0 ya que 'le faltan valores al resto del
array
' si lo defino como VERTICES dim(12).

(los polígonos de 6 vértices son dibujados impecablemente pero aquellos de menos vértices, todos terminan con una 'punta' hacia el 0x0y (esto porque el resto de las coordenadas del array está en 0 (cero).

Por lo anterior, necesito utilizar un array de largo dinámico para que lleve las coordenasdas justas para el número de vértices de cada polígono, pero no he logrado saber cómo hacerlo.

Podrá uds. orientarme al respecto??

muchas gracias de antemano


HDMadeira
Al nivel de RZ
Mensajes: 306
Registrado: Dom Feb 06, 2011 10:02 pm
Ubicación: Trelew, Chubut, Argentina
Contactar:

Re: Array de dimensión variable

Mensaje por HDMadeira » Lun Feb 22, 2016 10:50 pm

Hola, creo que la función no es tan dinámica como necesitas...
una opción es crear un array tan grande como el valor máximo posible
luego con un loop y antes de llamar a la función colocas todos los valores no usados
iguales al ultimo vértice


Saludos

Daniel

forestalino
Mensajes: 2
Registrado: Vie Feb 19, 2016 9:00 am
Contactar:

Re: Array de dimensión variable

Mensaje por forestalino » Mar Feb 23, 2016 2:59 pm

HDMadeira escribió:Hola, creo que la función no es tan dinámica como necesitas...
una opción es crear un array tan grande como el valor máximo posible
luego con un loop y antes de llamar a la función colocas todos los valores no usados
iguales al ultimo vértice


Saludos

Daniel
Saludos!!
Es exactamente lo que terminé haciendo y quedó impecable
Pongo la rutina de 'relleno' por si le sirve a alguien:


lvertices LONG DIM(20) !Donde irán las coordenadas de máximo 20 vértices)
lmaxCorners SHORT !Contiene la cantidad de vértices que finalmente tiene el polígono a dibujar


CompletarCoords ROUTINE !Completa los valores del resto de coordonnadas dl array con los valores de las dos últimas coordenadas (para no tener un vértice hacia 0x0y)
LOOP Vert# = (lmaxCorners * 2) + 1 TO 40 by 2
lvertices[Vert#] = lvertices[(lmaxCorners * 2) - 1]
lvertices[Vert# + 1] = lvertices[lmaxCorners * 2]
END



Gracias Daniel!! :D


Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 19 invitados