Acho que não preciso dizer mais nada!!! Hehehe

Mas aí vai mais uma dica: imagine que seu arquivo é grande (tipo, 500MB) e há 
um processo que está gravando dados nesse arquivo.

A função descrita indicará que o arquivo está em uso somente se o processo não 
tiver finalizado a gravação no arquivo. Como o Walter explicou, o notepad e 
outros editores simples não bloqueiam o arquivo para edição... eles abrem com 
GENERIC_READ e depois usam GENERIC_WRITE para salvar.

Se precisar de algo, dá um toque aí...

Abraço.


--------------------------------------------------------------------------------
      Atenciosamente:

     
     Eduardo Cláudio Nicácio
      Analista Programador JR.
      Fábrica 02 - CTIS
      Tel.: (11) 3150-6834
      [EMAIL PROTECTED]
     



  ----- Original Message ----- 
  From: Walter Alves Chagas Junior 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Thursday, March 15, 2007 11:14 AM
  Subject: RES: [delphi-br] Processar Arquivos - FTP


  Alguns programas bloqueiam o arquivo para uso, como é o caso do Word, do 
Query Analyser e do AutoCad. Alguns outros, como o Notepad, por exemplo, não 
fazem isto. Tanto que voce pode abrir um mesmo aquivo em 3 blocos de notas 
simultaneamente e salvar em qualquer um deles.

  E a função trabalha sobre a API do Windows né...

  []s

  Walter Alves Chagas Junior
  Projeto e desenvolvimento de sistemas
  Telemont Engenharia de telecomunicações S/A
  Belo Horizonte - MG - Brasil
  [EMAIL PROTECTED]
  Fone: (31) 3389-8217 Fax: (31) 3389-8215

  -----Mensagem original-----
  De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED]
  nome de Diogo Viegas
  Enviada em: quinta-feira, 15 de março de 2007 11:07
  Para: delphi-br@yahoogrupos.com.br
  Assunto: Re: [delphi-br] Processar Arquivos - FTP

  Blz Edu achei a function abaixo. O problema é que se abro o arquivo
  log.txtvia notepad e escrevo qualquer coisa nele e NÃO salvo, a
  function me retorna
  dizendo que o arquivo não está em uso.

  function IsFileInUse(fName : string) : boolean;
  var
  HFileRes : HFILE;
  begin
  Result := false;
  if not FileExists(fName) then
  exit;
  HFileRes := CreateFile(pchar(fName), GENERIC_READ or GENERIC_WRITE,0 {this
  is the trick!}, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  Result := (HFileRes = INVALID_HANDLE_VALUE);
  if not Result then
  begin
  CloseHandle(HFileRes);
  end;
  end;

  // codigo para validação da funcion acima:
  if IsFileInUse('C:\log.txt') then
  Showmessage('arquivo não pode ser processado')
  else
  ShowMessage('arquivo pode ser processado');

  Alguma dica?

  Em 15/03/07, Edu Nicácio <[EMAIL PROTECTED]> escreveu:
  >
  > Esta dica foi postada aqui semana passada.
  >
  > Tenta dar uma olhada nas mensagens anteriores que com certeza ela está lá.
  >
  > Abraço.
  >
  > ----------------------------------------------------------
  > Atenciosamente:
  >
  > Eduardo Cláudio Nicácio
  > Analista Programador JR.
  > Fábrica 02 - CTIS
  > Tel.: (11) 3150-6834
  > [EMAIL PROTECTED] <rsn01.web03%40telesp.com.br>
  >
  >
  > ----- Original Message -----
  > From: Diogo Viegas
  > To: delphi-br@yahoogrupos.com.br <delphi-br%40yahoogrupos.com.br>
  > Sent: Thursday, March 15, 2007 9:50 AM
  > Subject: [delphi-br] Processar Arquivos - FTP
  >
  > Srs,
  >
  > Alguém teria alguma rotina que verifique se o arquivo a ser processado não
  > está em uso por um servidor FTP ou outro serviço qualquer?
  > Tenho um driver que carrega arquivos de um diretório, processa e carrega
  > para o banco de dado e por algum motivo quem está descarregando o arquivo
  > no
  > diretório que eu busco os arquivos avisa que o serviço que envia por parte
  > dele trava. Assim só quero processar arquivos que estão 100% entregues.
  >
  > Obrigado.
  > Att.
  >
  > [As partes desta mensagem que não continham texto foram removidas]
  >
  > [As partes desta mensagem que não continham texto foram removidas]
  >
  > 
  >

  [As partes desta mensagem que não continham texto foram removidas]

  -- 
  <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

  Links do Yahoo! Grupos



   

[As partes desta mensagem que não continham texto foram removidas]

Responder a