Nome de arquivo usando data

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Marcio Antonio Ril
Usuário Nível 1
Usuário Nível 1
Mensagens: 42
Registrado em: 13 Set 2005 11:55

Nome de arquivo usando data

Mensagem por Marcio Antonio Ril »

Amigos, boa noite

Preciso fazer um sistema de backup e quero usar o nome do sistema + a data, tipo assim:

sv250407.zip

tentei assim:

warquivo := "sv" + ctoc(date) + ".zip"

mais deu errado.

Será quem alguem tem alguma dica.


Obrigado.

MArcio Ril
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Nome de arquivo usando data

Mensagem por Maligno »

Tente: warquivo := "sv"+ dtoc(date()) + ".zip"

Mas só terá o efeito desejado se set century for off e set date for british.

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
vailton
Colaborador
Colaborador
Mensagens: 390
Registrado em: 17 Nov 2005 19:08
Localização: Brasil
Contato:

Mensagem por vailton »

Algo que ilustra a situação que uso aqui é:

Código: Selecionar todos

Data := date()
wArquivo := 'sv' +  alltrim(str(day( data ))) +;
                    alltrim(str(month( data ))) + ;
                    right(alltrim(str(year( data ))),2) + '.zip'
Isto gera o arquivo com o nome selecionado com base na data atual, independente das configurações de data vingente.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Bom, se for assim, eu prefiro diferente: colocando no formato ANSI, que também independe dos SETs.

Código: Selecionar todos

warquivo := "sv" + Right(DtoS(Date()),6) + ".zip"
Assim, particularmente, acho melhor, pois os arquivos ficarão melhor ordenados numa eventual pesquisa pelo DOS.

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Marcio,

Complementando, pra vc ter uma geral das funções:

a) o DTOC() ou Date TO Caracter, transforma uma data num string e depende do SET DATE e SET CENTURY. Exemplos:

hoje=date()
set date british
set century on
? dtoc(hoje) -> "27/03/2007" // ddmmaaaa
set century off
? dtoc(hoje) -> "27/03/07" // ddmmaa
set date american
? dtoc(hoje) -> "03/27/07" // mmddaa
set date german
? dtoc(hoje) -> "27.03.07" // ddmmaa

b) já o DTOS() ou Date TO String também transforma uma data em string, mas não depende do SET DATE ou SET CENTURY, voltando sempre 8 dígitos, na ordem ANOMESDIA:
set date british
set century off
? dtoc(hoje) -> "20070327" // aaaammdd


Como o Maligno ressaltou, se vc usar DTOC(), a ordem alfabética dos arquivos vai ficar bagunçada, porque a string "27/03/2007" é menor do que "28/03/2001"... Já com o DTOS(), vai aparecer primeiro "20010328" e depois "20070327", na ordem certa.

Eolo
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

vc tb pode fazer isto:
(com set century off)

hoje := date() // 26/03/07 (data)

data1 := dtoc(hoje) // string "26/03/07"

data2 := strtran(data1, '/', '') // string 260307

ou

data2 := strtran(dtoc(date()), '/', '') // string 260307

Mas a observação do Mestre Maligno vale. Para ordenar os arquivos, o correto é usar AAMMDD, ou no caso 070326.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Avatar do usuário
vailton
Colaborador
Colaborador
Mensagens: 390
Registrado em: 17 Nov 2005 19:08
Localização: Brasil
Contato:

Mensagem por vailton »

Neste caso, concordo com o Maligno pois traz a vantagem da listagem de arquivos poder ser mais facilmente sorteada!

;)
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Marcio,

Outra sugestão: se vc usar o DTOS(), mesmo que tire os 2 primeiros caracteres, o string vai ficar "070327", sobrando então só mais 2 caracteres para completar o limite de 8 para nomes de arquivo no DOS.

Se, ao invés do resultante "SV070327.zip", você quiser ou precisar usar nomes mais extensos, além do limite citado, use a biblioteca LFN (Long File Names = Nomes Longos de Arquivo). Com ela, vc pode via Clipper nomear seus arquivos como no Windows, inclusive com espaços. Por exemplo: "Cliente Silva Viagens - Backup do dia 20070327")...

Eolo
Responder