Mostrar um aviso se o arquvo ja estiver em uso?
Como faço para mostrar um aviso para o usuario quando um arquivo ja esta aberto?
Explicando: Tenho um codigo que gera um PDF, ai carrego o arquivo no Adobe. Bom até ai blz, mais vamos supor que eu tente abrir o mesmo arquivo outra vez gerando o codigo no Adobe se este ter sido fechado, me mostra o erro de ´Access violatiom at address ....´
Então o que eu preciso é saber se tem como eu colocar um aviso no meu sistema que aquele PDF ja esta em uso.
O código é este
Explicando: Tenho um codigo que gera um PDF, ai carrego o arquivo no Adobe. Bom até ai blz, mais vamos supor que eu tente abrir o mesmo arquivo outra vez gerando o codigo no Adobe se este ter sido fechado, me mostra o erro de ´Access violatiom at address ....´
Então o que eu preciso é saber se tem como eu colocar um aviso no meu sistema que aquele PDF ja esta em uso.
O código é este
{:Gera o arquivo PDF para ser anexado}
n_Pedido := qr_PedidoSelecionadonum_pedido.AsString;
wNomarq := ´PD´+FormatDateTime(n_pedido+´.yymmdd´, now);
ppReport1.DeviceType := ´PDFFile´;
ppReport1.SaveAsTemplate := True;
ppReport1.SavePrinterSetup := True;
ppReport1.TextFileName := ´c:\pedidos\´+wNomarq+´.PDF´; //Joga o pdf criado para a pasta aonde esta o programa lá no cliente.
{:Mostrar o aviso aqui antes de executar o PrintReport}
ppReport1.PrintReport;Adriano_servitec
Curtidas 0
Respostas
Marcosrocha
26/05/2008
Coloca num [b:5b63f4b740]try[/b:5b63f4b740] com [b:5b63f4b740]except[/b:5b63f4b740]. Caso haja exceção, o arquivo está sendo utilizado.
GOSTEI 0
Adriano_servitec
26/05/2008
Coloca num [b:c76b9bf5e5]try[/b:c76b9bf5e5] com [b:c76b9bf5e5]except[/b:c76b9bf5e5]. Caso haja exceção, o arquivo está sendo utilizado.
Obrigado amigo, mais não consegui
Olhe
try
ppReport1.TextFileName := ´c:\pedidos\´+wNomarq+´.PDF´; //Joga o pdf criado para a pasta aonde esta o programa lá no cliente.
ppReport1.PrintReport;
except
{Todo -cModulo EnviaPed -oAdriano:Não funcionou, queria mostrar uma mensagem se o arquivo ja estivesse em uso no adobe}
if FileOpen(Caminho+wNomarq+´.PDF´,fmOpenReadWrite) > 0 then
else
raise Exception.Create(´Arquivo está aberto. Feche o Adobe para gravar o pedido´);
Abort;
end;GOSTEI 0
Marcosrocha
26/05/2008
Na verdade eu tinha em mente algo do tipo:
E ainda que eu nem uso ´raise exception´ no except dos meus try eu uso [b:57e6239d04]MessageDlg(´Arquivo está aberto. Feche o Adobe para gravar o pedido´, mtError, [mbOK],0)[/b:57e6239d04].
try
ppReport1.TextFileName := ´c:\pedidos\´+wNomarq+´.PDF´; //Joga o pdf criado para a pasta aonde esta o programa lá no cliente.
ppReport1.PrintReport;
except
{Todo -cModulo EnviaPed -oAdriano:Não funcionou, queria mostrar uma mensagem se o arquivo ja estivesse em uso no adobe}
on E: Exception do
begin
if Pos(´CANNOT OPEN FILE´, E.Message) > 0 then
raise Exception.Create(´Arquivo está aberto. Feche o Adobe para gravar o pedido´)
else
raise E;
end;
end;GOSTEI 0
Adriano_servitec
26/05/2008
Na verdade eu tinha em mente algo do tipo:
E ainda que eu nem uso ´raise exception´ no except dos meus try eu uso [b:6aeed52f6c]MessageDlg(´Arquivo está aberto. Feche o Adobe para gravar o pedido´, mtError, [mbOK],0)[/b:6aeed52f6c].
Obrigado pela ajuda, mais não deu certo, aparece o erro de Access violation caso o adobe esteja aberto com o mesmo arquivo em uso.try
ppReport1.TextFileName := ´c:\pedidos\´+wNomarq+´.PDF´; //Joga o pdf criado para a pasta aonde esta o programa lá no cliente.
ppReport1.PrintReport;
except
{Todo -cModulo EnviaPed -oAdriano:Não funcionou, queria mostrar uma mensagem se o arquivo ja estivesse em uso no adobe}
on E: Exception do
begin
if Pos(´CANNOT OPEN FILE´, E.Message) > 0 then
raise Exception.Create(´Arquivo está aberto. Feche o Adobe para gravar o pedido´)
else
raise E;
end;
end;GOSTEI 0
Marcosrocha
26/05/2008
Tente modificar o código e adaptá-lo para a sua necessidade, veja debugando com F8 se o texto em E.Message contém alguma palavra que você possa usar como referência para saber se o arquivo está sendo usado.
GOSTEI 0
Adriano_servitec
26/05/2008
Não passa da linha em vermelho
try
{:Gera o arquivo PBD para ser anexado}
n_Pedido := qr_PedidoSelecionadonum_pedido.AsString;
wNomarq := ´PD´+FormatDateTime(n_pedido+´.yymmdd´, now);
ppReport1.DeviceType := ´PDFFile´;
ppReport1.SaveAsTemplate := True;
ppReport1.SavePrinterSetup := True;
ppReport1.TextFileName := ´c:\pedidos\´+wNomarq+´.PDF´; //Joga o pdf criado para a pasta aonde esta o programa lá no cliente.
{:Grava no RBuilder}
[color=red:67673997e8]ppReport1.PrintReport;[/color:67673997e8]
except
{Todo -cModulo EnviaPed -oAdriano:Não funcionou, queria mostrar uma mensagem se o arquivo ja estivesse em uso no adobe}
on E: Exception do
begin
if Pos(´cannot open file´, E.Message) > 0 then
raise Exception.Create(´Arquivo está aberto. Feche o Adobe para gravar o pedido´)
else
raise E;
end;
end;
GOSTEI 0