Backup com Arj e Clipper
Moderador: Moderadores
Backup com Arj e Clipper
Bom dia!
Tenho uma rotina de backup escrita em Clipper 5.01 usando Arj. Só que eu gostaria de, em vez de limpar a tela e acionar o Arj pelo comando RUN, de ter um programa usando o próprio Clipper para ler os disquetes, pedir o disquete seguinte e dizer que o backup está concluído / restaurado. Alguém sabe de um modo de fazer isso? Não consigo achar um jeito de ler o retorno do Arj e saber se ele está pedindo um novo disquete ou não....
Muito Obrigado!
Tenho uma rotina de backup escrita em Clipper 5.01 usando Arj. Só que eu gostaria de, em vez de limpar a tela e acionar o Arj pelo comando RUN, de ter um programa usando o próprio Clipper para ler os disquetes, pedir o disquete seguinte e dizer que o backup está concluído / restaurado. Alguém sabe de um modo de fazer isso? Não consigo achar um jeito de ler o retorno do Arj e saber se ele está pedindo um novo disquete ou não....
Muito Obrigado!
Re: Backup com Arj e Clipper
Pra fazer isso você teria que ter uma biblioteca que implementasse as funções de compactação do ARJ, da mesma forma que ele próprio fizesse. Nunca vi algo do tipo. Entretanto, se você não fizer questão do ARJ e puder usar ZIP, há uma biblioteca muito simples que lhe permite trabalhar com o ZIP dentro de seu programa. Mão não espere dela o mesmo nível de compactação que o produto comercial.miracle escreveu:Alguém sabe de um modo de fazer isso?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Backup com Arj e Clipper
Tche, foi como o Maligno postou...se quiser que seja algo totalmente feito pelo seu sistema.....tera que usar alguma LIB de terceiro....se não me falha a memoria...tenho isso no meu micro...assim que eu chegar até ele...posto um link para vc baixar...miracle escreveu:Bom dia!
Tenho uma rotina de backup escrita em Clipper 5.01 usando Arj. Só que eu gostaria de, em vez de limpar a tela e acionar o Arj pelo comando RUN, de ter um programa usando o próprio Clipper para ler os disquetes, pedir o disquete seguinte e dizer que o backup está concluído / restaurado. Alguém sabe de um modo de fazer isso? Não consigo achar um jeito de ler o retorno do Arj e saber se ele está pedindo um novo disquete ou não....
Muito Obrigado!
Obs: Meus Sistemas sempre deixou para fazer o Backup....por fora do sistema....ou seja uso sempre um programa de terceiro...para fazer Backup.
Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
Eu também faço assim. Uso o PKZip (ou WZZip - o usuário escolhe). No meu programa apenas criei uma forma do usuário configurar diversos scripts de backup. Quando aciona o back-up com certo script, o programa monta a linha de comando do PKZip/WZZip. A estética fica feia, claro. Mas funciona 100%. Acho bem melhor.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Backup com ARJ
Eu tenho uma rotina que faz backup pelo ARJ versão 2.50a que tem várias opções de comando. Primeiro eu gero um arquivo texto (chamado FASE_001.LST e FASE_002.LST... quando a lista fica muito extensa), onde contém todos os arquivos que serão compactados (com o caminho completo onde se encontram). Depois executo o seguinte arquivo BAT:
O aplicativo MANUAL.EXE, serve para aparecer na tela uma janelinha que solicita a inserção de disquetes e aguarda confirmação:
O arquivo LOCA.CH contém alguma diretrizes como:
O MSG_BKP.EXE, serve para dar mensagem na tela se o backup foi realizado com ou sem sucesso:
Espero que tenha servido para o se propósito, vale a pena compilar.
Código: Selecionar todos
@ECHO OFF
CLS
IF EXIST CONTADOR.MEM DEL CONTADOR.MEM
SET BACKUP=DC01801 - FASE UNICA
ARJ a -vazMANUAL.EXE -jyv -i1 -jl -jk -m2 A:\DC01801.001 !FASE_001.LST
IF EXIST A:\ARJTEMP.$00 GOTO ERRO
IF ERRORLEVEL 1 GOTO ERRO
IF NOT EXIST A:\DC01801.001 GOTO ERRO
BKP_OK
MSG_BKP COM
GOTO FIM
:ERRO
IF EXIST A:\ARJTEMP.$00 DEL A:\ARJTEMP.$00
MSG_BKP SEM
GOTO FIM
:FIM
SET BACKUP=
DEL FASE_*.LSTCódigo: Selecionar todos
/*
TITULO : Sistema de loca‡„o de filmes
DESDE : 18/12/99
PROGRAMA : MANUAL.PRG
COMENTARIO : Solicita disquetes para o backup manual
Compilar manualmente sem op‡„o /B e com CT.LIB
*/
#include "loca.ch"
NOMECOR := { "FUNDO DA TELA","MENU","DESTAQUE DO MENU","JANELA DE DIALOGO","BOX DA JANELA DE DIALOGO","BOTOES","BOTAO EM DESTAQUE","GETS","GET EM DESTAQUE","REGISTROS MARCADOS","JANELA EM DESTAQUE","CERCADURAS","TITULO" }
CONTECOR := {}
TONACOR := {{},{},{}}
IF FILE( "C:LOCA.CFG" )
VAR := MEMOREAD( "C:LOCA.CFG" )
FOR CONTAR = 1 TO 13
AADD( CONTECOR, SUBS( VAR, ( CONTAR * 5 ) - 4, 5 ) )
NEXT
FOR I=1 TO 16
AADD(TONACOR[1], VAL(SUBS( VAR, ((I*6)-5)+105, 2 )) )
AADD(TONACOR[2], VAL(SUBS( VAR, ((I*6)-3)+105, 2 )) )
AADD(TONACOR[3], VAL(SUBS( VAR, ((I*6)-1)+105, 2 )) )
NEXT
ENDIF
IF !FILE("CONTADOR.MEM")
WNUM=1
WDIA=DATE()
WHORA=TIMETOSEC(TIME())
ELSE
RESTORE FROM CONTADOR ADDI
WNUM=WNUM+1
ENDIF
VQBACK=GETENV("BACKUP")
CLS
ObjBotao := botao:LIMPA()
SET DELE ON
SET DATE TO BRIT
SET CENTURY ON
SET CURSOR OFF
SAVE SCREEN TO PER_TELA
DO WHILE .T.
BEEP()
IF LEN(VQBACK)=0
JANELA(12,37,18,72,"Backup do Sistema")
@ 14,38 SAY PADC("Insira o disquete n§ "+ALLTRIM(STR(WNUM)),33) COLOR CONTECOR[4]
ELSE
JANELA(11,37,18,72,"Backup do Sistema")
@ 13,38 SAY PADC("Insira o disquete n§ "+ALLTRIM(STR(WNUM)),33) COLOR CONTECOR[4]
@ 14,38 SAY PADC(VQBACK,33) COLOR CONTECOR[4]
ENDIF
botao:ADD( 16,42, "Pronto " )
botao:ADD( 16,57, "Cancelar " )
SIM_NAO := botao:RODA()
IF LASTKEY()=27
SIM_NAO=2
ENDIF
RESTORE SCREEN FROM PER_TELA
IF SIM_NAO=2
@ 12,00 SAY ""
KBDEMULATE(CHR(3)+" "+CHR(13))
QUIT
ELSE
CLS
IF !DISKREADY("A")
LOOP
ELSE
IF !DISKREADYW("A")
BEEP()
JANELA(12,37,16,72,"Aten‡„o",.T.)
@ 14,39 SAY "Retire a prote‡„o do disquete !" COLOR CONTECOR[11]
INKEY(5)
LOOP
ENDIF
ENDIF
VA:=DIRECTORY("A:\*.*","D")
VARQS:={}
N=1
FOR I=1 TO LEN(VA)
IF !(SUBSTR(VA[I,1],1,1)=".")
AADD(VARQS,{VA[I,1],VA[I,3],VA[I,4],VA[I,5]})
N++
ENDIF
NEXT
RELEASE VA
IF LEN(VARQS)>0
IF MOSTRA(VARQS)=.T.
IF WNUM=1
SAVE TO CONTADOR ALL LIKE W*
ELSE
SAVE TO CONTADOR ALL LIKE W*
ENDIF
@ 00,00 SAY ""
QUIT
ELSE
LOOP
ENDIF
ENDIF
IF WNUM=1
SAVE TO CONTADOR ALL LIKE W*
ELSE
SAVE TO CONTADOR ALL LIKE WNUM*
ENDIF
@ 00,00 SAY ""
QUIT
ENDIF
ENDDO
FUNCTION MOSTRA(VARQS)
VT=LEN(VARQS)
VNAR=SUBSTR(RIGHT(ALLTRIM(LEFT(VQBACK,8)),5),1,3)
VFAR=ALLTRIM(LEFT(VQBACK,8))
VOQUE=""
IF "P" $ VFAR
VOQUE=VOQUE+"P"
ENDIF
IF "D" $ VFAR
VOQUE=VOQUE+"D"
ENDIF
N=0
FOR I=1 TO VT
IF SUBSTR(RIGHT(VARQS[I,1],9),1,3)=VNAR .AND. VOQUE $ VARQS[I,1]
N++
ENDIF
NEXT
IF N>0
BEEP()
ALERT("N„o pode gravar neste disquete !.;Este disquete pertence ao backup.")
RETURN .F.
ENDIF
SAVE SCREEN TO PER_TELA1
IF VT>28
VTAM=28
ELSE
VTAM=VT
ENDIF
JANELA(00,31,ROUND((VTAM/2),0)+1,79,ALLTRIM(STR(VT))+(IF(VT=1," Arquivo encontrado"," Arquivos encontrados")))
IF VT>VTAM
@ 15,72 SAY "mais..."
ENDIF
VX=1
FOR I=1 TO VTAM STEP 2
IF I>VT
@ VX,33 SAY SPACE(21) COLOR CONTECOR[4]
ELSE
IF VARQS[I,4]="D"
@ VX,33 SAY PADR(VARQS[I,1],12)+" <DIR> " COLOR CONTECOR[4]
ELSE
@ VX,33 SAY PADR(VARQS[I,1],12)+" "+SUBSTR(DTOC(VARQS[I,2]),1,6)+RIGHT(DTOC(VARQS[I,2]),2) COLOR CONTECOR[4]
ENDIF
ENDIF
IF I+1>VT
@ VX,57 SAY SPACE(21) COLOR CONTECOR[4]
ELSE
IF VARQS[(I+1),4]="D"
@ VX,57 SAY PADR(VARQS[(I+1),1],12)+" <DIR> " COLOR CONTECOR[4]
ELSE
@ VX,57 SAY PADR(VARQS[(I+1),1],12)+" "+SUBSTR(DTOC(VARQS[(I+1),2]),1,6)+RIGHT(DTOC(VARQS[(I+1),2]),2) COLOR CONTECOR[4]
ENDIF
ENDIF
VX++
NEXT
JANELA(17,42,23,72,"Aten‡„o",.T.)
@ 19,43 SAY PADC((IF(VT=1,"Pode remove-lo ?","Pode remove-los ?")),28) COLOR CONTECOR[11]
botao:ADD( 21,47, "Sim " )
botao:ADD( 21,58, "N„o " )
SIM_NAO := botao:RODA()
RESTORE SCREEN FROM PER_TELA1
IF SIM_NAO=1
FILEDELETE("A:\*.*")
VRET=.T.
ELSE
VRET=.F.
ENDIF
RETURN VRET
FUNCTION BOTAO( LINHA_SUPERIOR, COLUNA_ESQUERDA, NOME_BOTAO )
LOCAL TIPO_OPERACAO, LARGURA_BOTAO, CONTAR, TECLA, PONTEIRO := 1
VQCOR=NTOCOLOR(SCREENATTR((OBJBOTAO[1,1])-1,OBJBOTAO[1,2]),.F.)
IF PCOUNT() = 0
TIPO_OPERACAO := EDITA_BOTOES
ELSEIF PCOUNT() = 1
TIPO_OPERACAO := EDITA_BOTOES
PONTEIRO := LINHA_SUPERIOR
ELSEIF PCOUNT() = 2
TIPO_OPERACAO := MOSTRA_BOTOES
ELSEIF PCOUNT() = 3
TIPO_OPERACAO := MOVIMENTA_BOTAO
ENDIF
IF TIPO_OPERACAO = MOVIMENTA_BOTAO
LARGURA_BOTAO := LEN( NOME_BOTAO ) + 2
SETCOLOR(VQCOR)
@ LINHA_SUPERIOR, COLUNA_ESQUERDA SAY " "
@ LINHA_SUPERIOR + 1, COLUNA_ESQUERDA - 1 SAY SPACE( LARGURA_BOTAO )
@ LINHA_SUPERIOR, COLUNA_ESQUERDA + LARGURA_BOTAO - 1 SAY " "
SETCOLOR(CONTECOR[07]+"*")
@ LINHA_SUPERIOR, COLUNA_ESQUERDA - 1 SAY " " + NOME_BOTAO + " "
INKEY( .2 )
COR( "BOTOES" )
@ LINHA_SUPERIOR, COLUNA_ESQUERDA SAY " " + NOME_BOTAO + " "
SETCOLOR( "N/" + ALLTRIM( SUBS( VQCOR, 4 ) ) )
@ LINHA_SUPERIOR, COLUNA_ESQUERDA - 1 SAY "Ü"
@ LINHA_SUPERIOR + 1, COLUNA_ESQUERDA - 1 SAY REPL( "ß", LARGURA_BOTAO ) + " "
INKEY( .2 )
ENDIF
IF TIPO_OPERACAO = EDITA_BOTOES .OR. TIPO_OPERACAO = MOSTRA_BOTOES
FOR CONTAR := 1 TO LEN( ObjBotao )
LARGURA_BOTAO := LEN( ObjBotao[ CONTAR ][ 3 ] ) + 2
COR( "BOTOES" )
@ ObjBotao[ CONTAR ][ 1 ], ObjBotao[ CONTAR ][ 2 ] SAY " "+ObjBotao[ CONTAR ][ 3 ] + " "
SETCOLOR( "N/" + ALLTRIM( SUBS( VQCOR, 4 ) ) )
@ ObjBotao[ CONTAR ][ 1 ], ObjBotao[ CONTAR ][ 2 ] - 1 SAY "Ü"
@ ObjBotao[ CONTAR ][ 1 ] + 1, ObjBotao[ CONTAR ][ 2 ] - 1 SAY REPL( "ß", LARGURA_BOTAO ) + " "
NEXT
ENDIF
IF TIPO_OPERACAO = EDITA_BOTOES
TECLA := 0
WHILE .T.
LARGURA_BOTAO := LEN( ObjBotao[ PONTEIRO ][ 3 ] ) + 2
SETCOLOR(CONTECOR[07]+"*")
@ ObjBotao[ PONTEIRO ][ 1 ], ObjBotao[ PONTEIRO ][ 2 ] SAY " "+ObjBotao[ PONTEIRO ][ 3 ] + " "
SETCOLOR( "N/" + ALLTRIM( SUBS( VQCOR, 4 ) ) )
@ ObjBotao[ PONTEIRO ][ 1 ], ObjBotao[ PONTEIRO ][ 2 ] - 1 SAY "Ü"
@ ObjBotao[ PONTEIRO ][ 1 ] + 1, ObjBotao[ PONTEIRO ][ 2 ] - 1 SAY REPL( "ß", LARGURA_BOTAO ) + " "
IF TECLA = T_ENTER
INKEY( .2 )
botao:LIMPA()
RETURN PONTEIRO
ENDIF
TECLA := INKEY( 0 )
IF TECLA = T_F1
botao:LIMPA()
RETURN 28
ENDIF
IF TECLA = T_ESC
botao:LIMPA()
RETURN 0
ENDIF
COR( "BOTOES" )
@ ObjBotao[ PONTEIRO ][ 1 ], ObjBotao[ PONTEIRO ][ 2 ] + 1 SAY ObjBotao[ PONTEIRO ][ 3 ]
FOR CONTAR = 1 TO LEN( ObjBotao )
IF SUBS( ObjBotao[ CONTAR ][ 3 ], 1, 1 ) = UPPER( CHR( TECLA ) )
PONTEIRO := CONTAR
TECLA := T_ENTER
EXIT
ENDIF
NEXT
IF TECLA = T_ENTER
LARGURA_BOTAO := LEN( ObjBotao[ PONTEIRO ][ 3 ] ) + 2
SETCOLOR( "N/" + ALLTRIM( SUBS( VQCOR, 4 ) ) )
@ ObjBotao[ PONTEIRO ][ 1 ], ObjBotao[ PONTEIRO ][ 2 ] SAY " "
@ ObjBotao[ PONTEIRO ][ 1 ] + 1, ObjBotao[ PONTEIRO ][ 2 ] - 1 SAY SPACE( LARGURA_BOTAO )
@ ObjBotao[ PONTEIRO ][ 1 ], ObjBotao[ PONTEIRO ][ 2 ] + LARGURA_BOTAO - 1 SAY " "
SETCOLOR(CONTECOR[07]+"*")
@ ObjBotao[ PONTEIRO ][ 1 ], ObjBotao[ PONTEIRO ][ 2 ] - 1 SAY " " + ObjBotao[ PONTEIRO ][ 3 ] + " "
INKEY( .2 )
LOOP
ENDIF
IF TECLA = T_ESQUERDA .OR. TECLA = T_CIMA
PONTEIRO--
ELSEIF TECLA = T_DIREITA .OR. TECLA = T_BAIXO
PONTEIRO++
ENDIF
PONTEIRO := IIF( PONTEIRO < 1, LEN( ObjBotao ),IIF( PONTEIRO > LEN( ObjBotao ), 1, PONTEIRO ) )
ENDDO
ENDIF
botao:LIMPA()
RETURN NIL
FUNCTION COR( NOM_COR )
QUAL_COR := ASCAN( NOMECOR, UPPER( NOM_COR ) )
IF QUAL_COR != 0
IF QUAL_COR = 2
SETCOLOR( CONTECOR[ 2 ] + "," + CONTECOR[ 3 ] + ",,," + CONTECOR[ 2 ] )
ELSEIF QUAL_COR = 8
SETCOLOR( CONTECOR[ 11 ] + "," + CONTECOR[ 9 ] + ",,," + CONTECOR[ 8 ] )
ELSE
SETCOLOR( CONTECOR[ QUAL_COR ] )
ENDIF
ENDIF
RETURN .T.
FUNCTION JANELA( PJAN1, PJAN2, PJAN3, PJAN4, PJAN5, PJAN6 )
IF PJAN5=NIL
PJAN5 := ""
ENDIF
SOMBRA( PJAN1, PJAN2, PJAN3, PJAN4 )
IF PJAN6=NIL
SETCOLOR( CONTECOR[ 4 ] )
ELSE
SETCOLOR( CONTECOR[ 11 ] )
ENDIF
@ PJAN1, PJAN2 CLEAR TO PJAN3, PJAN4
SETCOLOR( CONTECOR[ 5 ] )
@ PJAN1, PJAN2, PJAN3, PJAN4 BOX " "
@ PJAN1, PJAN2 SAY "þ"
IF LEN( TRIM( PJAN5 ) ) > 0
@ PJAN1, PJAN2 + ( ( ( PJAN4 + 1 - PJAN2 ) - LEN( PJAN5 ) ) / 2 ) SAY PJAN5
ENDIF
RETURN NIL
FUNCTION SOMBRA( LIN_SUP, COL_SUP, LIN_INF, COL_INF )
IF PCOUNT() = 2 .OR. PCOUNT() = 3
C_SOM := COL_SUP; L_SOM := LIN_SUP
LIN_SUP := VAL( SUBS( C_SOM, 1, 2 ) )
COL_SUP := VAL( SUBS( C_SOM, 3, 2 ) )
LIN_INF := VAL( SUBS( C_SOM, 5, 2 ) )
COL_INF := VAL( SUBS( C_SOM, 7, 2 ) )
COL_SOM := SUBS( C_SOM, 9 )
LIN_SOM := L_SOM
ENDIF
IF COL_SUP < 2 .OR. LIN_INF > 22
C_SOM := ""; L_SOM := ""
RETURN .F.
ENDIF
IF PCOUNT() = 3
RESTSCREEN( LIN_SUP + 1, COL_SUP - 2, LIN_INF + 1, COL_SUP - 1, COL_SOM )
RESTSCREEN( LIN_INF + 1, COL_SUP - 2, LIN_INF + 2, COL_INF - 2, LIN_SOM )
RETURN .F.
ENDIF
IF PCOUNT() != 2
COL_SOM := SAVESCREEN( LIN_SUP + 1, COL_SUP - 2, LIN_INF + 1, COL_SUP - 1 )
LIN_SOM := SAVESCREEN( LIN_INF + 1, COL_SUP - 2, LIN_INF + 2, COL_INF - 2 )
ENDIF
IF SUBS( COL_SOM, 2, 1 ) != CHR( 8 )
C_SOM := STR( LIN_SUP, 2 ) + STR( COL_SUP, 2 ) + STR( LIN_INF, 2 ) + STR( COL_INF, 2 ) + COL_SOM
L_SOM := LIN_SOM
ENDIF
FOR I = 2 TO LEN( COL_SOM ) STEP 2
COL_SOM := STUFF( COL_SOM, I, 1, CHR( 8 ) )
NEXT
FOR I = 2 TO LEN( LIN_SOM ) / 2 STEP 2
LIN_SOM := STUFF( LIN_SOM, I, 1, CHR( 8 ) )
NEXT
RESTSCREEN( LIN_SUP + 1, COL_SUP - 2, LIN_INF + 1, COL_SUP - 1, COL_SOM )
RESTSCREEN( LIN_INF + 1, COL_SUP - 2, LIN_INF + 2, COL_INF - 2, LIN_SOM )
RETURN .T.
* Final do programa MANUAL.PRGCódigo: Selecionar todos
/*
TITULO : Sistema de Loca‡„o de filmes
DATA : 30/09/95
PROGRAMA : LOCA.CH
COMENTARIO : DIRETIVAS DE PRE-PROCESSADOR
*/
#define DESLIGA 0
#define LIGA 1
#define CURSOR(P_CUR) (SETCURSOR( IIF( P_CUR = 0, 0, IIF( READINSERT(), 3, 1 ) ) ))
#define HELP() HELP(PROCNAME(),PROCLINE(),READVAR())
#define BEEP() TONE( 250, 4 )
#define T_ENTER 13
#define T_ESC 27
#define T_INSERT 22
#define T_CIMA 5
#define T_BAIXO 24
#define T_ESQUERDA 19
#define T_DIREITA 4
#define T_HOME 1
#define T_END 6
#define T_PGUP 18
#define T_PGDN 3
#define T_BACKSPACE 8
#define T_CTRL_W 23
#define T_F1 28
#define T_F2 -1
#define T_F3 -2
#define T_F4 -3
#define T_F5 -4
#define T_F6 -5
#define T_F7 -6
#define T_F10 -9
#define T_CTRL_PGDN 30
#define T_CTRL_PGUP 31
#define T_DEL 7
#define T_CTRL_HOME 29
#define T_CTRL_END 23
#define T_CTRL_ESQUERDA 26
#define T_CTRL_DIREITA 2
#define T_TAB 9
#define T_SH_TAB 271
#define TB_COR_DEL CONTECOR[ 4 ] // Cor dos registros DELETADOS
#define TB_RODAPE "ÄÁÄ" // Caracteres para o rodape do TBROWSE
#define TB_SEP_LIN " ³ " // Separadores de coluna do TBROWSE
#define TB_SEP_CAB "ÄÂÄ" // Separadores do cabecalho do TBROWSE
#define TB_JANELA "ÚÄ¿³´³ÙÄÀ³Ã³"
#define _TIPO_MENU 1
#define _OPCOES_MENU 2
#define _CHAMADA_MENU 3
#define MOSTRA_PAG_1 "M"
#define CONSULTA "C"
#define ALTERACAO "A"
#define EXCLUSAO "E"
#define INCLUSAO "I"
#define SUB_MENU 1
#define MENU_PRINCIPAL 0
#define SIM .T.
#define NAO .F.
#translate AKill( <a>, <e> ) => asize( adel( <a>, <e> ), len( <a> ) - 1 )
#translate menu:LIMPA() => ObjMenu := { 0, {}, {}, {} }
#translate menu:TIPO_MENU => ObjMenu\[ _TIPO_MENU ]
#translate menu:RODA() => MENU( ObjMenu, PROCNAME(), PROCLINE() )
#translate menu:ADD( <X1>, <X2>[, <X3> ] ) => AADD( ObjMenu\[ _OPCOES_MENU ], <X1> )\; AADD( ObjMenu\[ _CHAMADA_MENU ], &("{ ||"+<X2>[, <X3> ]+" }") )\;AADD(OBJMENU\[4],<X2>)
#translate menu:ADD( <X1> ) => AADD( ObjMenu\[ _OPCOES_MENU ], <X1> )\; AADD( ObjMenu\[ _CHAMADA_MENU ], { || NIL } )
#translate menu:CONTEUDO() => ObjMenu
#define MOSTRA_BOTOES 0
#define EDITA_BOTOES 1
#define MOVIMENTA_BOTAO 2
#translate botao:LIMPA() => ObjBotao := {}
#translate botao:RODA() => BOTAO()
#translate botao:RODA( <X> ) => BOTAO( <X> )
#translate botao:MOSTRA() => BOTAO( .T., .T. )
#translate botao:MOVIMENTA( <X1>, <X2>, <X3>[, <X4> ] ) => BOTAO( <X1>, <X2>, <X3>[, <X4> ])
#translate botao:ADD( <X1>, <X2>, <X3>[, <X4> ]) => AADD( ObjBotao, { <X1>, <X2>, <X3>[, <X4> ] } )
#translate botao:CONTEUDO() => ObjBotao
/* Final LOCA.CH */Código: Selecionar todos
/*
TITULO : Sistema de loca‡„o de filmes
DESDE : 26/07/2005
PROGRAMA : BKP_OK.PRG
COMENTARIO : Mensagem do Backup (COPIA.BAT)
Clipper5
*/
PARAMETERS VCOK
IF VCOK="COM" .OR. VCOK="SEM"
IF VCOK="COM"
VCOR:="15/02"
VGAPALETTE(02,00,20,00)
VGAPALETTE(15,20,63,40)
ELSE
VCOR:="15/04"
VGAPALETTE(04,35,00,00)
VGAPALETTE(15,63,40,45)
ENDIF
ELSE
? "Falta parametro. Exemplo:"
? " MSG_BKP COM"
? " MSG_BKP SEM"
QUIT
ENDIF
SET CURSOR OFF
SETCOLOR(VCOR)
CLEAR SCREEN
@ 05,14 SAY "ÛÛÛÛÛÜ ÛÛÛÛÛÛ ÛÛÛÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛÛÛÛÛ"
@ 06,14 SAY "ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ"
@ 07,14 SAY "ÛÛÛÛÛÜ ÛÛÛÛÛÛ ÛÛ ÛÛÛÛ ÛÛ ÛÛ ÛÛÛÛÛÛ"
@ 08,14 SAY "ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ "
@ 09,14 SAY "ÛÛÛÛÛß ÛÛ ÛÛ ÛÛÛÛÛ ÛÛ ÛÛ ÛÛÛÛÛÛ ÛÛ "
IF VCOK="COM"
@ 15,02 SAY "ÜÜÜÜÜÜ ÜÜÜÜÜÜ ÜÜ ÜÜ ÜÜÜÜÜÜ ÜÜ ÜÜ ÜÜÜÜÜÜ ÜÜÜÜÜÜ ÜÜÜÜÜÜ ÜÜÜÜÜÜ ÜÜÜÜÜÜ"
@ 16,02 SAY "ÛÛ ÛÛ ÛÛ ÛÛÛÜÛÛÛ ÛÛÜÜÜÜ ÛÛ ÛÛ ÛÛ ÛÛÜÜÜ ÛÛÜÜÜÜ ÛÛÜÜÜÜ ÛÛ ÛÛ"
@ 17,02 SAY "ÛÛÜÜÜÜ ÛÛÜÜÛÛ ÛÛ ß ÛÛ ÜÜÜÜÛÛ ÛÛÜÜÛÛ ÛÛÜÜÜÜ ÛÛÜÜÜÜ ÜÜÜÜÛÛ ÜÜÜÜÛÛ ÛÛÜÜÛÛ"
ELSE
@ 15,02 SAY "ÜÜÜÜÜÜ ÜÜÜÜÜÜ ÜÜ ÜÜ ÜÜÜÜÜÜ ÜÜ ÜÜ ÜÜÜÜÜÜ ÜÜÜÜÜÜ ÜÜÜÜÜÜ ÜÜÜÜÜÜ ÜÜÜÜÜÜ"
@ 16,02 SAY "ÛÛÜÜÜÜ ÛÛÜÜÜ ÛÛÛÜÛÛÛ ÛÛÜÜÜÜ ÛÛ ÛÛ ÛÛ ÛÛÜÜÜ ÛÛÜÜÜÜ ÛÛÜÜÜÜ ÛÛ ÛÛ"
@ 17,02 SAY "ÜÜÜÜÛÛ ÛÛÜÜÜÜ ÛÛ ß ÛÛ ÜÜÜÜÛÛ ÛÛÜÜÛÛ ÛÛÜÜÜÜ ÛÛÜÜÜÜ ÜÜÜÜÛÛ ÜÜÜÜÛÛ ÛÛÜÜÛÛ"
ENDIF
@ 24,00 SAY PADC("Pressione qualquer tecla...",80) COLOR "N/W"
INKEY(0)
SET COLOR TO
CLS
VGAPALETTE()
* Final do programa MSG_BKP.PRG
Editado pela última vez por Pablo César em 10 Set 2007 08:30, em um total de 1 vez.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Mais uma mensagem apta a reclassificação. 
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Maligno, você está tão incomodado na reclassificação de mensagens, que até parece que você não gostou de eu ter exposto a minha solução com código e explicações. O colega apresentou a sua difculdade:
Eu apresentei apresentei uma solução, e espero sinceramente que sirva bem para o colega e para os demais e também espero que faça-se justiça quanto ao seu tópico WAPI e volte para aqui na seção Clipper que será mais atuante a participação de outros colegas do que estar lá onde está.
E ainda perguntou como:Não consigo achar um jeito de ler o retorno do Arj e saber se ele está pedindo um novo disquete ou não....
Não porque aqui estamos na seção Clipper, que eu e demais não devessemos colocar os fontes também. Eu não tenho meu proprio site para apontar com link e dizer... faça aqui o download...Alguém sabe de um modo de fazer isso?
Eu apresentei apresentei uma solução, e espero sinceramente que sirva bem para o colega e para os demais e também espero que faça-se justiça quanto ao seu tópico WAPI e volte para aqui na seção Clipper que será mais atuante a participação de outros colegas do que estar lá onde está.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Absolutamente. Me entendeu errado. Apenas fiz uma observação a respeito da possibilidade desta thread também ser reclassificada. Se bem que é capaz disso não acontecer. Dois pesos, duas medidas.Pablo César escreveu:Maligno, você está tão incomodado na reclassificação de mensagens, que até parece que você não gostou de eu ter exposto a minha solução com código e explicações.
Se bem que, agora que você falou, lembrei que você poderia ter aberto uma thread na seção de códigos fontes e ofertado seu código lá, informando o colega sobre o link. Mas não esquenta. Você não agiu errado.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
O Maligno tá certo. O Miracle pediu:
...aí o Pablo apresentou uma opção USANDO o ARJ......só que eu gostaria de, em vez de limpar a tela e acionar o Arj pelo comando RUN, de ter um programa usando o próprio Clipper para...
... só que O Miracle NÃO quer o ARJ.Eu tenho uma rotina que faz backup pelo ARJ versão 2.50a que tem várias...
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Para quem quiser....no link abaixo tem uma LIB para Backup-compactado....e tem um demo e uma documentação junto....eu nunca usei...mas dei uma olhada e me parece bem facil de usar....
http://www.sygecom.com.br/xharbour/bak_clipper.zip
Obs:Tem Lib para Clipper Sumer 87,5.0,5.2..
Abraços
Leonardo Machado
http://www.sygecom.com.br/xharbour/bak_clipper.zip
Obs:Tem Lib para Clipper Sumer 87,5.0,5.2..
Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
O colega não disse isso explicitamente. O que entendi é que ele quer usar o ARJ (talvez outro compactador???) com a possibilidade de controlá-lo de dentro do seu programa. Talvez uma barra de progresso e coisas do tipo. Isso excluiria o exemplo do Pablo.Eolo escreveu:... só que O Miracle NÃO quer o ARJ.
Até tenho, como eu disse, aquela LIB da PKware (revendida antigamente pela Mappe) que possibilita isso. Mas ela é muito simples, e o nível de eficiência de compactação está bem abaixo dos demais produtos. Eu próprio não tive coragem de usar. Preferi montar uma interface pro usuário criar seus scripts de back-up e executar os programas externamente. Esteticamente fica feio, mas é bem eficiente.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Interessante mesmo. Dando um tempinho vou testar pra saber qual o nível de eficiência.sygecom escreveu:Para quem quiser....no link abaixo tem uma LIB para Backup-compactado
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Veja só eu não sabia que você Eolo pudesse afirmar o que o colega precisa ou não...Eolo escreveu:... só que O Miracle NÃO quer o ARJ.
Eu sei que tudo isto acontece, por puras deduções e ficaria uma vez mais aqui neste tópico discutindo entre nós sem ter a opinião do autor do tópico ou até mesmo de algum outro interessado.
Talvez o colega miracle não queira mais usar o ARJ mas eu fui motivado a passar um exemplo da minha rotina sobre troca de disquetes analisando o que o próprio colega escreveu:
miracle escreveu:de ter um programa usando o próprio Clipper para ler os disquetes, pedir o disquete seguinte e dizer que o backup está concluído / restaurado.
Não sei se viram o meu complemento em Críticas e/ou Sugestões onde declaro que eu não sou favorável com a existência de tantas seções daqui do FORUM. Portanto eu não considero benéfico insentivar a existência de uma seção como "Código Fonte", pois então deveria ter uma seção para xHarbour, Fivewin, Visual Objects, Mini GUI.... etc...Maligno escreveu:... lembrei que você poderia ter aberto uma thread na seção de códigos fontes e ofertado seu código lá, informando o colega sobre o link.
Sei lá pessoal... parece que todo este debate não tem a ver com o tópico inicialmente. Mas até parece que mostrar um outro exemplo venha a ser um crime...
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Eu ja conhecia, mas assim como você disse Maligno, como muitos não tem grande compactação, pois eu fiz um teste compactando:Maligno escreveu:Interessante mesmo. Dando um tempinho vou testar pra saber qual o nível de eficiência.
README.TXT
RBCKLIB.NG
RBCKDEMO.PRG
RBCKDEMS.PRG
RBCKLIB.DOC
RBCKLIB.REG
Total não compactado: 116.356 bytes
Compactado pelo RBCK_C52.LIB: 52.362 bytes
Compactado pelo ARJ v2.50a: 27.421 bytes
E outro contra-tempo é que a LIB força uma pausa de 9 segundos (por ser cópia DEMO, isto é cópia não registrada).
Estas observações (não são críticas) apenas faço para que obtenha-se referências sobre o produto indicado e de todas formas expresso meu apreço ao colega Leonardo pela sua indicação.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Tche, foi como eu disse nunca usei a Tal.....pelos teste que vc fez e postou...acho que ela não vai servir muito util mesmo.......Total não compactado: 116.356 bytes
Compactado pelo RBCK_C52.LIB: 52.362 bytes
Compactado pelo ARJ v2.50a: 27.421 bytes
Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql


