![]() |
redimensionar varias veces un array
Hola amigos del club, por favor si me pueden ayudar con este problema que se presento, tengo lo siguiente, un array dinámico el cual lo dimensiono de la siguiente manera:
Delphi 7 me acusa error de violación de memoria cuando al hacer por segunda vez el
en el array numeros, como se puede hacer para redimensionar varias veces sin que se produzca el error? |
Hola Manuel.
Dos detalles, la inicialización de la variable de control y la forma que aumentas el tamaño del arreglo dinámico. Aunque es mas simple: O como en estos casos, que sabemos de antemano que serán 6 elementos, mas simple todavía:
Saludos :) |
Gracias daniel, en todo caso es un ejemplo que puse solamente, el real es mucho mas complejo, la idea central que la función SetLength no deja ridemensionar varias veces el mismo array con diferentes posiciones por ejemplo:
Una vez gracias Daniel. |
Hola Manuel.
Si no te entiendo mal es lógico, por que la segunda asignación del arreglo anula la primera. En tu ejemplo la cantidad de elementos no termina siendo 30 sino 20 ya que la última sentencia fija el tamaño del arreglo en esa cifra. Tal vez con estos ejemplos pueda explicar mejor a que me refiero:
Saludos :) |
Gracias Daniel nuevamente, me he dado cuenta que cuando aumento la cantidad de elementos no hay problemas , pero si cuando se redimensiona a menos elementos se produce el error.
|
Manuel,
Cita:
Revisa este código: El código anterior en Delphi 7 bajo Windows 7 Professional x32, redimensiona un arreglo de enteros en forma creciente y decreciente y efectúa operaciones sobre sus elementos. Revisa esta información: Espero sea útil :) Nelson. |
Hola Manuel.
Hola Manuel Cita:
El resultado: Código:
0 |
Cita:
Ademas, para poder determinar que pasa con un error, el que sea, debes volverlo reproducible. No basta con simplemente mostrar codigo, debes mostrar el conjunto de pasos EXACTOS que genera el error, de lo contrario uno puede quedarse una eternidad adivinando estos casos. |
Mil Gracias Daniel por tu ayuda, solucionado el problema después de cada SetLength(arreglo), coloque un Finalize(arreglo) y error se eliminó. Gracias una vez más.
|
Manuel,
Cita:
Nelson. |
Que cosa no entiendes?
|
Manuel,
Cita:
Sería conveniente que publicaras el código en cuestión, en general no es necesario colocar un Finalize después de cada SetLength de un Arreglo Dinámico, como se puede ver en los códigos de los Msg #6 y Msg #7. Cita:
Nelson. |
Cita:
|
Manuel,
Cita:
Revisa este código: El código anterior en Delphi 7 bajo Windows 7 Professional x32, redimensiona aleatoriamente en un loop un arreglo de enteros y efectúa operaciones sobre sus elementos. Suerte en tu proyecto ^\||/ Nelson. |
| La franja horaria es GMT +2. Ahora son las 14:54:08. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi