FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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?
__________________
Manuel Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC. |
#2
|
||||
|
||||
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
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#3
|
||||
|
||||
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.
__________________
Manuel Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC. |
#4
|
||||
|
||||
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
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 11-07-2014 a las 16:39:09. Razón: agregar ejemplo |
#5
|
||||
|
||||
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 Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC. |
#6
|
||||
|
||||
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. Última edición por nlsgarcia fecha: 11-07-2014 a las 21:33:20. |
#7
|
||||
|
||||
Hola Manuel.
Hola Manuel Cita:
El resultado: Código:
0 1 2 3 Elementos: 4 -------------------- 0 1 2 3 4 5 6 7 Elementos: 8 -------------------- 0 1 Elementos: 2 --------------------
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 11-07-2014 a las 23:10:27. |
#8
|
||||
|
||||
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.
__________________
El malabarista. |
#9
|
||||
|
||||
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 Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC. |
#10
|
||||
|
||||
Manuel,
Cita:
Nelson. |
#11
|
||||
|
||||
Que cosa no entiendes?
__________________
Manuel Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC. |
#12
|
||||
|
||||
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. |
#13
|
||||
|
||||
Nelson, mi sistema tenía bucle que redimensiona una y otra ves el mismo arreglo dinámico , el proble se presentaba cuando la redimensión era de menos elementos con respecto al último, al colocar Finalize se solucionó el problema.
__________________
Manuel Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC. |
#14
|
||||
|
||||
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. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Mi busca si lo hace varias veces | Paulao | Varios | 0 | 05-07-2011 18:15:43 |
llamar varias veces un formulario | Lizette | Varios | 3 | 05-11-2008 17:28:10 |
Imprimir un registro varias veces | Vlady | Impresión | 1 | 29-08-2008 09:04:14 |
error al ejecutar un reporte varias veces | mar65 | Conexión con bases de datos | 3 | 26-01-2005 14:01:28 |
Imprimir algo varias veces. | aoiTo | Impresión | 0 | 20-07-2004 20:12:49 |
|