Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-07-2017
carlosw1978 carlosw1978 is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 31
Poder: 0
carlosw1978 Va por buen camino
Uy si perdón el error es un mensaje que dice access violation.
Responder Con Cita
  #2  
Antiguo 23-07-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Ok, y si le das a break, en que parte del codigo se para el depurador? Haz probado seguir la ejecucion para saber en que lugar exactamente "se rompe"?
Responder Con Cita
  #3  
Antiguo 23-07-2017
carlosw1978 carlosw1978 is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 31
Poder: 0
carlosw1978 Va por buen camino
Si de hecho lo he ejecutado paso a paso y con el debug y la vista de variable local del debug; justamente cuando pasa por la linea ST.read() la variable TablaAcc pierde el registro y es ahí cuando explota.
Responder Con Cita
  #4  
Antiguo 23-07-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Un Access Violation indica que estas accediendo a memoria que no asignaste antes; en palabras simples, cuando le mandas un mensaje a un objeto que no fue asignado, por ejemplo, un nil. Hay casos mas complicados donde se crea un objeto, se libera y luego se le siguen mandando mensajes:

Código Delphi [-]
var
  obj: TMiClase;
begin
  obj := nil;
  obj.Algo; // EAccessViolation
  
  obj := TMiClase.Create;
  obj.Algo; // todo bien
  
  obj.Free; // liberar memoria, pero notese que obj es distinto de nil
  Assert(obj <> nil);
  obj.Algo; // EAccessViolation
end;

Cuales son los valores de todas las variables cuando rompe el programa? Estan todos los objetos creados e inicializados correctamente?

Cuando recuperas el campo blob 'as_modulo', este te devuelve un objeto de tipo TBlobField? Que dice el depurador del valor de esta variable?
Que ocurre cuando llamas a la funcion CreateBlobStream? Esta termina correctamente?

Cual es el valor del objeto TablaAcc?
Responder Con Cita
  #5  
Antiguo 23-07-2017
carlosw1978 carlosw1978 is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 31
Poder: 0
carlosw1978 Va por buen camino
Código Delphi [-]
implementation

{$R *.dfm}

uses Funciones, U_Configdb, U_FormTablas, U_TUsuario, U_TBanco, U_TCXC, U_TCXP,
  U_TOtrosActivos, U_FormClave, U_ParaEmpresa, U_FormRespaldarBD;

type MapAcceso = record
  Modulo : String;
  Permiso,
  Nuevo,
  Buscar,
  Guardar,
  Eliminar,
  Modificar,
  Primero,
  Anterior,
  Siguiente,
  Ultimo : Boolean;
end;

var
  TablaAcc: MapAcceso;

•
•
•
•
procedure TForm_Principal.ConfigurarInterface;
var
  Blob: TBlobField;
  ST: TStream;
begin
  with dmPrincipal.FDQ_Mapas do
  begin
    Close;
    SQL.Clear;
    SQL.Add('Select AS_IDReng, AS_Usuario, AS_Modulo, AS_NombMod');
    SQL.Add('From AS_MapAcceso');
    SQL.Add('Where UCase(LTrim(RTrim(AS_Usuario))) = ' + QuotedStr(UpperCase(Usuario.Trim)));
    Open;
    First;
    while not Eof do
    begin
      if Eof then
        Exit;
      Blob := FieldByName('AS_Modulo') as TBlobField;
      ST := CreateBlobStream(Blob, bmRead);
      ST.Seek(0,0);
      ST.Read(TablaAcc, SizeOf(TablaAcc));
      MessageDlg(TablaAcc.Modulo,mtInformation,[mbOK],0);
      if UpperCase(TablaAcc.Modulo.Trim) = 'DOCUCAP' then
        Action_TBanco.Enabled := TablaAcc.Permiso;
      if UpperCase(TablaAcc.Modulo.Trim) = 'BANC' then
        Action_TBanco.Enabled := TablaAcc.Permiso;
      if UpperCase(TablaAcc.Modulo.Trim) = 'CXC' then
        Action_TBanco.Enabled := TablaAcc.Permiso;
      if UpperCase(TablaAcc.Modulo.Trim) = 'CXP' then
        Action_TBanco.Enabled := TablaAcc.Permiso;
      if UpperCase(TablaAcc.Modulo.Trim) = 'OACT' then
        Action_TBanco.Enabled := TablaAcc.Permiso;
      if UpperCase(TablaAcc.Modulo.Trim) = 'EMPR' then
        Action_TBanco.Enabled := TablaAcc.Permiso;
      if UpperCase(TablaAcc.Modulo.Trim) = 'USUA' then
        Action_TBanco.Enabled := TablaAcc.Permiso;
      if UpperCase(TablaAcc.Modulo.Trim) = 'PARABD' then
        Action_TBanco.Enabled := TablaAcc.Permiso;
      if UpperCase(TablaAcc.Modulo.Trim) = 'RESPBD' then
        Action_TBanco.Enabled := TablaAcc.Permiso;
      if UpperCase(TablaAcc.Modulo.Trim) = 'RESTBD' then
        Action_TBanco.Enabled := TablaAcc.Permiso;
      if UpperCase(TablaAcc.Modulo.Trim) = 'MANTBD' then
        Action_TBanco.Enabled := TablaAcc.Permiso;
      Next;
    end;
    Close;
  end;
end;
Responder Con Cita
  #6  
Antiguo 24-07-2017
carlosw1978 carlosw1978 is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 31
Poder: 0
carlosw1978 Va por buen camino
Agustín ya encontré el problema me guiaste con la última respuesta que chequeara las iniciaciones de variables y me di cuenta que el récord MapAcceso faltaba un campo adicional y por eso arrojaba el error y no me percataba de esto. Muchas gracias Agustín por tu apoyo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Asignar el valor de una variable de php a una variable js que puede no existir jandroruiz PHP 5 04-03-2013 12:23:02
Variable en Atributo [Edit(Variable).Text] martini002 Varios 9 21-06-2012 17:08:05
No me crea el SERVICIO MON___ API de Windows 5 09-01-2008 20:26:38
MD5 de un Stream. JXJ Varios 3 03-10-2007 18:52:40
No me crea la bd al instalar davgoncam Oracle 8 07-03-2004 14:31:26


La franja horaria es GMT +2. Ahora son las 14:55:56.


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
Copyright 1996-2007 Club Delphi