Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Access Violation Al finalizar una Función (https://www.clubdelphi.com/foros/showthread.php?t=55643)

jangel_ramirezm 23-04-2008 01:42:00

Access Violation Al finalizar una Función
 
Hola Buenas Tardes Por aqui

Es una Pregunta sencilla solo que ya llevo un buen rato tratando de identificar porque marca ese Acces violation.
No se si a alguno de ustedes les ha pasado. El problema es este que al finalizar una funcion de tipo Boolean marca el Acces violation.
la funcion obtiene datos de una tarjeta pero antes de esto debe seleccionar unos elementos para poder hacerlo.
Código Delphi [-]
function leer(Direccion,Var Dato:variant):Boolean;
begin
     if seleccionaElemto1 then   
          if seleccionaelemento2then
             if selecionaelemento3 then
             begin
                 Dato:=obtenerdatos(Direccion);
                 result:=true;
             end
           else
                showmessage('No se pudo seleccionar el elemento 3');
         else
              showmessage('No se pudo seleccionar el elemento 2');
     else 
          showmessage('No se pudo seleccionar el elemento 1');  
  
end;
cuando mada el result es cuando marca el access violation incluso hay mas linas despues de que obtiene los datos.
quien sabe si les ha pasado a ustedes pero no se que pueda estar mal.
gracias de antemano por sus respuestas.

dec 23-04-2008 02:08:11

Hola,

Problemente el problema está en la instrucción:

Código Delphi [-]
Dato := obtenerdatos(Direccion);

Tendrías que mirar a ver. Una "violación de acceso" se origina, por ejemplo, cuando se trata de acceder a un objeto que ha sido previamente destruido, o que no llegó a crearse siquiera. Tendrás que depurar la aplicación. Sitúa un "punto de ruptura" en la instrucción que menciono a ver si puedes encontrar por dónde van los tiros.

jangel_ramirezm 23-04-2008 02:33:00

Hola:
Gracias le puse el punto de ruptura en la funcion y la ejecuta bien pero
pues sigue marcando el acces violation incluso si pongo mas instrucciones
después del result.
Código Delphi [-]
function leer(Direccion,Var Dato:variant):Boolean;
begin     
 if seleccionaElemto1 then             
  if seleccionaelemento2then             
    if selecionaelemento3 then            
    begin                 
      Dato:=obtenerdatos(Direccion);                 
      result:=true;                 
      showmessage(dato);                        
    end           
    else                
      showmessage('No se pudo seleccionar el elemento 3');         
  else              
   showmessage('No se pudo seleccionar el elemento 2');     
 else           
  showmessage('No se pudo seleccionar el elemento 1');     
end;

aparece el mensaje mostrando el dato y despues marca el error.
ahí si no se que pueda estar pasando.
saludos

rulo_m 23-04-2008 02:43:20

y el dato si existe? no se, que pasa si es null? no podria ser por ahi?

roman 23-04-2008 04:11:56

¿Qué tal que nos pones la definición correcta de la función? Porque esto

Código Delphi [-]
function leer(Direccion,Var Dato:variant):Boolean;

ni siquiera compila. Por otra parte, qué son todos esos seleccionaElementoX? ¿Son variables o funciones? Trata reduciendo la función al mínimo (sin condicionales) para probar y tratar de aislar el problema.

// Saludos

jangel_ramirezm 23-04-2008 18:51:57

Hola.
Buenos Dias por aqui
Resulta que hoy cuando intenté probar la función ya corrio sin problemas
creo que es la función que denominé SeleccionarElemento1
la que estaba(o está ) dando los problemas.

Gracias a Todos.


La franja horaria es GMT +2. Ahora son las 19:49:32.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi