![]() |
Problemas con el error: access violation at 0x77d9dede: write of address 0x00090fec
Hola, tengo un problema que hace que mi programa se caiga.
Tengo el siguiente procedimiento Código:
procedure clsHormiga.CamineYClasifique(); e inmediatamente se muestra El problema que no sé a que se debe el error, ya muchas otras veces he trabajado con vectores y nunca me ha pasado algo similar. Si alguien puede ayudarme se los estaría muy agradecido. No tengo la menor idea de porqué o qué hacer. No entiendo los mensajes ni que hacer. Un detalle es que VectorIR=array of Double; Gracias de antemano. |
¿Y qué es la R del bucle?, ¿cuánto vale?, ¿de dónde saca el valor?
|
Es una variable global, tiene un valor de 3.
|
De hecho, el for no importa, lo he quitado y el problema se da al redefinir el tamaño del vector. De hecho, el código dado por:
Código:
procedure clsHormiga.CamineYClasifique(); Gracias por responder. |
¿Y por qué usas VecDeProbabilidades en lugar de VectorIR?
|
Hola.
Te faltó incluir algo importante. De tu código se podría inferir que VectorIR está declarado como: Pero si fuera así, las líneas: no generarían ningún error... ¿ Que es VectorIR ? Saludos. |
Ese es el problema, yo considero que no debería haber ningún problema. La unidad completa es la siguiente:
Es claro que este último porcedure no está completo, el debe hacer varias cosas que he quitado para mostrar el error. Este error se genera cuando redefino el tamaño del vector VecDeProbabilidades, sin embargo, ese mismo trabajo se hace con otros vectores y no se genera el problema. Sin embargo, me sigue lanzando el error, les agradezco que intenten ayudarme. Ya he realizado varios programas en Delphi 7 y esta es la primera vez que me pasa algo así, lo que trataré de hacer es iniciar de cero, reescribiré el código de nuevo esperando que el error no se repita. Gracias de todos modos y saludos... |
Hola.
Según lo que pude ver de la clase clsHormiga, ya tendrías un error al llamar al método IniciarCG: Tal vez M tome algún valor en el constructor (si existe) o en el método Inicializacion. Pero lamentablemente no puedo verificarlo por que en el código que adjuntaste, falta la definición de este último. Saludos. |
Muchísimas gracias. Es claro que le atinaste al error, M corresponde al tamaño de un vector dinámico, y el for que mencionas recorre el vector de modo que si inicia en i:=0 debería terminar en M-1 y no en M. De esta manera estaba guardando un dato extra en una posición de memoria fuera del vector, lo que ocasiona el error. Como el error lo marcaba en otra línea, no me había percatado de lo anterior.
Pero de verdad le agradezco demasiado. Ya estaba a punto de reescribir el código nuevamente a ver si acaso. Saludos... |
La franja horaria es GMT +2. Ahora son las 09:51:38. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi