pq da erro??
se eu deixar no bloco finally
Q.Free;
da um erro de acesso a memoria, alguem saberia me dizer pq??
como vo liberar esse objeto da memoria??
[]s
Q.Free;
da um erro de acesso a memoria, alguem saberia me dizer pq??
como vo liberar esse objeto da memoria??
[]s
function TMySQL.fconsulta(csql: string): TADOQuery; var Q: TADOQuery; begin try Screen.Cursor:= crHourGlass; Q:= TADOQuery.Create(Application); Q.Connection:= Self; Q.Close; Q.SQL.Clear; Q.SQL.Text:= csql; Q.Open; result:= Q; Screen.Cursor:= crDefault; finally Q.Free; end; end;
Fernando_cunha
Curtidas 0
Respostas
Fernando_cunha
29/12/2005
nao sei se tem correlacao, mas quando uso algum comando com ExecSQL e uso free para liberar o objeto da memoria funciona perfeitamente, mas quando preciso usar um select por exemplo, utilizao Q.Open, se eu tentar liberar da erro de acesso a memoria!!
nao sei se tem correlacao .. mas ja fica registrado!!
[]s
nao sei se tem correlacao .. mas ja fica registrado!!
[]s
GOSTEI 0
Michael
29/12/2005
Primeiramente, não crie objetos passando Application com Owner. Use nil nesses casos. Depois, vc devolve o objeto criado para a função (Result := Q). Se vc der Free, quando tentar acessar o valor de retorno da função ele será nil e vc terá um erro de violação de acesso.
Leia o que eu escrevi no outro post e vai entender melhor.
[]´s
P.S: Estou indo embora para casa. Só volto ano q vem.. ;-) Poste suas dúvidas que respondo na segunda-feira.
Leia o que eu escrevi no outro post e vai entender melhor.
[]´s
P.S: Estou indo embora para casa. Só volto ano q vem.. ;-) Poste suas dúvidas que respondo na segunda-feira.
GOSTEI 0
Fernando_cunha
29/12/2005
vlw cara
bom ano novo!!
[]s
bom ano novo!!
[]s
GOSTEI 0
Raserafim
29/12/2005
acho q assim resolve
filally Q.Close; Q.Free;
GOSTEI 0