Cara, fica em moda de depuração, e veja qual a linha exatamente que está dando problema, assim ficará bem mais fácil encontrar o erro.
Vinicius dos Santos Analista de Desenvolvimento Júnior MSI SOLUÇÕES Av. Dr. Altino Arantes, 131 Sala 145 - 146 Centro - Ourinhos/Sp - Brasil Fone/Fax: +55 (14) 3324-8181 www.msisolucoes.com.br ----- Original Message ----- From: BandaLemuel To: delphi-br@yahoogrupos.com.br Sent: Monday, February 25, 2008 11:59 AM Subject: [delphi-br] Erro Lista Estou enfrentando um problema que não sei mais o que faço para resolver.. Tenho um aplicativo que utiliza uma dll criada por mim... até ai tudo bem... dentro da dll tenho a função AcoesTabelaRateio ( Segue abaixo ) .. no aplicativo executo ela varias vezes seguidas... uma com a acao 3 .. e logo em seguida com a ação 1... Quando executo com a Acao 3 ele roda , mas quando executo com a acao 1 da erro "Access violation at address 00000000.Read of address 00000000".. ja coloquei o sharemem, na dll e no aplicativo... não tenho iédia do que pode ser... alguem tem uma idéia.. ?? vlw.. Wesley //Acoes na tanrla de rateios //---------------------------------------------------------- procedure AcoesTabelaRateio ( Banco : TIbquery ; Acao : Integer ; CDRAT : Integer ; CDFIL , CDCEN , FLBXA : String ; DTVEN , DTDOC : TDateTime ; NRDOC , CDMOV , PLCON , VRRAT : String ) ; export ; stdcall ; begin with Banco do begin Close; Sql.Clear; //Incluir if Acao = 1 then begin Sql.Text := 'INSERT INTO FIN1100 ( CDRAT , CDFIL , CDCEN , ' + 'DTVEN , DTDOC , NRDOC , PLCON , VRRAT , DTLCT ) VALUES ( ' + ':CDRAT , :CDFIL , :CDCEN , :DTVEN , :DTDOC , :NRDOC , :PLCON, ' + ':VRRAT , CURRENT_DATE ) '; ParamByName('CDRAT').AsInteger := CDRAT ; ParamByName('CDFIL').AsInteger := StrToInt( Copy ( CDFIL , 1 , 4 ) ) ; if CDCEN <> '' then ParamByName('CDCEN').AsInteger := StrToInt( Copy ( CDCEN , 1 , 4 ) ) else ParamByName('CDCEN').Value := null ; ParamByName('DTVEN').AsDate := DTVEN ; ParamByName('DTDOC').AsDate := DTDOC ; ParamByName('NRDOC').AsInteger := StrToInt( Trim( NRDOC ) ); ParamByName('PLCON').AsInteger := StrToInt( Copy ( PLCON , 1 , 5 ) ); ParamByName('VRRAT').AsFloat := StrToFloat( Trim( RetiraPonto( VRRAT ) ) ); end; //Se é alterar ou Excluir if Acao > 1 then begin //Deleta Sql.Text := 'DELETE FROM FIN1100 WHERE CDRAT=:CDRAT'; ParamByName('CDRAT').AsInteger := CDRAT ; //Se for alterar inclui denovo if Acao = 2 then begin ExecSQL; Close; Sql.Clear; Sql.Text := 'INSERT INTO FIN1100 ( CDRAT , CDFIL , CDCEN , ' + 'DTVEN , DTDOC , NRDOC , PLCON , VRRAT , DTLCT ) VALUES ( ' + ':CDRAT , :CDFIL , :CDCEN , :DTVEN , :DTDOC , :NRDOC , :PLCON, ' + ':VRRAT , CURRENT_DATE ) '; ParamByName('CDRAT').AsInteger := CDRAT ; ParamByName('CDFIL').AsInteger := StrToInt( Copy ( CDFIL , 1 , 4 ) ) ; if CDCEN <> '' then ParamByName('CDCEN').AsInteger := StrToInt( Copy ( CDCEN , 1 , 4 ) ) else ParamByName('CDCEN').Value := null ; ParamByName('DTVEN').AsDate := DTVEN ; ParamByName('DTDOC').AsDate := DTDOC ; ParamByName('NRDOC').AsInteger := StrToInt( Trim( NRDOC ) ); ParamByName('PLCON').AsInteger := StrToInt( Copy ( PLCON , 1 , 5 ) ); ParamByName('VRRAT').AsFloat := StrToFloat( Trim( RetiraPonto( VRRAT ) ) ); end; end; ExecSQL; Close; end; end; //---------------------------------------------------------- [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]