Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-09-2015
adripugliesso adripugliesso is offline
Miembro
NULL
 
Registrado: jul 2015
Posts: 49
Poder: 0
adripugliesso Va por buen camino
Error Raro, No encuentro Causa

Tengo una aplicacion que tiene el sig. procedure:

Código Delphi [-]
procedure TfmFacturar.btnBuscaNroClick(Sender: TObject);
var
  s: FERecuperaLastCbteResponse;
  FEAuth : FEAuthRequest;
  x : Integer;
  WS: ServiceSoap;
  i : integer;
begin

  screen.Cursor := crHourGlass;

  
    WS := GetServiceSoap(false,'', httprio2);

    //WS := GetServiceSoap;


  FEAuth  := FEAuthRequest.Create;
  s:= FERecuperaLastCbteResponse.Create;
  try
    FEAuth.Token := token;
    FEAuth.Sign  := sign;
    FEAuth.Cuit  := cuit;

    s := WS.FECompUltimoAutorizado(FEAuth, strtoint(edtPuntoVta.Text), dbTipoCbte.KeyValue);


    //carga numero de factura
    edtNroFact.Text := INTTOSTR(s.CbteNro+1);
    CreaNumeroFactura;

      if (Length(s.Errors) > 0) then
      showmessage(s.Errors[0].Msg);

  finally

    //habilita Agregar Items
    GItems.Enabled          := true;
    btnAgregaItem.Enabled   := true;
    edtSubtotal.Enabled     := true;
    edtIva105.Enabled       := true;
    edtIva21.Enabled        := true;
    edtPercIIBB.Enabled     := true;
    edtPercIVA.Enabled      := true;
    edtTotal.Enabled        := true;
    btnSolicitaCae.Enabled  := true;


    i:= dbTipoCbte.KeyValue;
    if (i IN [2,3,7,8]) then
    begin
      btnLiquidoProd.Enabled  := false;
      btnImpRemito.Enabled    := false;
      edtRemitos.Enabled      := false;
      edtRemitos.Text         := '9999';
    end
    else
    begin
      btnLiquidoProd.Enabled  := true;
      btnImpRemito.Enabled    := true;
      edtRemitos.Enabled      := true;
    end;



    ActualizaListaItems;

    LCod.Caption := '0'+INTTOSTR(dbTipoCbte.KeyValue);

    FEAuth.Free;
    s.Free;
  end;

  screen.Cursor := crDefault;


end;

El problema que tengo es que cuando compilo y genero el ejecutable al usar este procedure tira error de "Access Violation at address 00406780", entonces si yo entro al codigo y cambio la linea

Código Delphi [-]
WS := GetServiceSoap(false,'', httprio2);

por

Código Delphi [-]
WS := GetServiceSoap;

Complio y ejecuto funiona perfecto sin error. Luego al realizar un cambio en la aplicacion y volvar a compilar y ejecutar vuelve a tirar el error de Access Violation entonces tengo que volver a entrar al codigo y cambiar nuevamente la linea esa de codigo y ponerla como estaba, de esa manera no tira el error.

En Conclucion para que este proceso no tire error cada vez que compilo tengo que entrar y cambiar una linea por otra, alguien sabe a que se debe ese error??

Gracias.-
Responder Con Cita
  #2  
Antiguo 29-09-2015
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
Creo que es porque la AFIP te deniega la conexion si ya pediste acceso (token y sign). Parece ser que el servidor no esta preparado para que constantemente se lo cascotee pidiendo token

En realidad lo que esta pasando entre que cambias la linea y recompilas es darle "respiro"

Hace un tiempo me paso algo similar (uso PyAFipWS) y la unica solucion que encontre fue reutilizar el ticket de aceso, guardando en un archivo el token y sign
Responder Con Cita
  #3  
Antiguo 29-09-2015
adripugliesso adripugliesso is offline
Miembro
NULL
 
Registrado: jul 2015
Posts: 49
Poder: 0
adripugliesso Va por buen camino
No, no es eso porque uso siempre el mismo token y sing, salvo que se me venza y recién ahi solicito el nuevo. Por 24hs uso siempre el mismo Token y Sing.
Responder Con Cita
  #4  
Antiguo 29-09-2015
orodriguezca orodriguezca is offline
Miembro
 
Registrado: ene 2009
Posts: 221
Poder: 16
orodriguezca Va por buen camino
Solo por probar, en lugar de

Código Delphi [-]
   s := WS.FECompUltimoAutorizado(FEAuth, strtoint(edtPuntoVta.Text), dbTipoCbte.KeyValue);

utiliza

Código Delphi [-]
  s := GetServiceSoap(false,'', httprio2).FECompUltimoAutorizado(FEAuth, strtoint(edtPuntoVta.Text), dbTipoCbte.KeyValue);

por otra parte observa que el objeto que se está creando en
Código Delphi [-]
  s:= FERecuperaLastCbteResponse.Create;

se pierde (queda sin apuntador) cuando se invoca el getServiceSoap.

Última edición por orodriguezca fecha: 29-09-2015 a las 21:03:49.
Responder Con Cita
  #5  
Antiguo 29-09-2015
adripugliesso adripugliesso is offline
Miembro
NULL
 
Registrado: jul 2015
Posts: 49
Poder: 0
adripugliesso Va por buen camino
Como es eso de que queda sin apuntador??
Responder Con Cita
  #6  
Antiguo 29-09-2015
orodriguezca orodriguezca is offline
Miembro
 
Registrado: ene 2009
Posts: 221
Poder: 16
orodriguezca Va por buen camino
"FERecuperaLastCbteResponse.Create" crea un objeto de la clase FERecuperaLastCbteResponse y "s" está mirando (apuntando) hacia la posición de memoria en la que esta ese objeto recien creado. Posteriormente estas haciendo s := WS.FECompUltimoAutorizado(FEAuth, strtoint(edtPuntoVta.Text), dbTipoCbte.KeyValue), esto último hace que "s" quede mirando hacia el objeto retornado por WS.FECompUltimoAutorizado, pero el objeto creado por "FERecuperaLastCbteResponse.Create" seguirá estando en memoria pero sin que nadie lo pueda accesar, por lo que no podrá ser liberado.

Lo anterior creo que no tiene nada que ver con el error que está ocurriendo en la aplicación, es una simple apreciación sobre el código mostrado. Espero haberme explicado.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Consumir DLL creado con Delphi 2007 causa error al consumirlo con Delphi 5 rchavezh Providers 2 27-07-2012 14:53:43
Edit me causa error al mostrar skinnerpro OOP 7 11-10-2007 07:52:29
Edit me causa error al mostrar skinnerpro OOP 1 11-10-2007 06:01:35
No Encuentro El Error En Este *.rc MON___ Varios 4 05-09-2007 14:50:28
Cual es la Causa de este Error " cannot attach to password database " ???? AGAG4 Firebird e Interbase 4 31-08-2007 21:42:00


La franja horaria es GMT +2. Ahora son las 11:27:39.


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