Verificar tamanho de arquivo

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

jpalma
Usuário Nível 3
Usuário Nível 3
Mensagens: 153
Registrado em: 18 Ago 2003 14:15

Verificar tamanho de arquivo

Mensagem por jpalma »

Desenvolvi uma rotina de BACKUP, utilizando o ARJ, e gostaria de saber se existe um comando para verificar o tamanho do arquivo compactado pelo ARJ.


grato
evaldo
Usuário Nível 3
Usuário Nível 3
Mensagens: 113
Registrado em: 27 Out 2005 23:29

Mensagem por evaldo »

Criei esta rotina para backup, você pode alterar como quiser.

Código: Selecionar todos

****************
Backup()
****************
   LOCAL vArq
   LOCAL vNum
   LOCAL nBytes
   LOCAL cOrigem := "C:\SISTEMA\E001.EMP\"
   //
   vArq    := BackMov2({"*.BAT","*.DB?","*.EXE"},@nBytes,cOrigem)
   vNum    := 0
   //
   IF DISKSPACE() < nBytes
      ALERT("Espa‡o Insuficiente para Efetuar o Backup;"+;
            "Libere Espa‡o em Disco e Tente Novamente","OK")
      RETURN NIL
   END

*******************************************
STATIC FUNCTION BackMov2(aExt,nBytes,cOrigem)
// cria um vetor com os Arquivos a serem copiados
// e informa o espa‡o utilizado em bytes
****************************************
   //
   LOCAL i, j, aAux, aDir
   //
   aDir:={} // CRIANDO O ARRAY COM OS ARQUIVOS DO BACKUP
   nBytes:=0
   //
   FOR i:=1 TO LEN(aExt)
      aAux:= DIRECTORY( cOrigem+aExt[i] )
      FOR j:=1 TO LEN(aAux)
         AADD( aDir, aAux[j][1] ) // nome do arquivo
         nBytes+= aAux[j][2]      // tamanho do arquivo
      END
   END
   //
RETURN aDir
*******************
Post a sua rotina como ficou.
Avatar do usuário
C Leonam
Usuário Nível 1
Usuário Nível 1
Mensagens: 32
Registrado em: 22 Nov 2005 17:40
Localização: Maceió

Mensagem por C Leonam »

Se vc tiver a CT.LIB ou a Nantucket v3.05, nelas tem a função FILESIZE.

Caso não as tenha tente o código abaixo:

Código: Selecionar todos

#include "Fileio.ch"
//
// Abrir o arquivo somente leitura (read only)
IF (nHandle := FOPEN("Temp.arj")) >= 0
   //
   // Pega o tamanho do arquivo
   nLength := FSEEK(nHandle, 0, FS_END)
   //
   // Volta o ponteiro para o inicio do arquivo
   FSEEK(nHandle, 0)
   FCLOSE(nHandle)
ELSE
   ? "Erro na abertura do arquivo:", FERROR()
ENDIF

Exemplo retirado/adaptado do NG do Clipper, funçao FSEEK().

:xau
Clp52e, Blinker 5.1
jpalma
Usuário Nível 3
Usuário Nível 3
Mensagens: 153
Registrado em: 18 Ago 2003 14:15

Mensagem por jpalma »

Obrigado Leonam.


sds
Responder