Ir ao conteúdo

Posts recomendados

Postado

Oi pessoal, :help: alguém pode me dizer qual é a biblioteca e como é o comando para cópia de arquivos no C++?

aH!!! gostaria também de saber como eu pego a data do sistema no C++!!!

Obrigado, :-BEER

Eros Fernandes :bye:

Postado

Tem uma função da API para copiar arquivos, chamada CopyFile:

BOOL CopyFile(

LPCTSTR lpExistingFileName, // nome do arquivo origem

LPCTSTR lpNewFileName, // nome do arquivo destino

BOOL bFailIfExists // flag para operação se o destino já existe

);

bFailIfExists=TRUE - não copiar se o destino existe

bFailIfExists=FALSE - sobreescrever o destino, se exite.

Abraços,

Elga.

Postado

E para pegar a hora do sistema tem uma função da API, chamada ... adivinha como ? GetSystemTime !

VOID GetSystemTime(

LPSYSTEMTIME lpSystemTime // address of system time structure

);

O tipo SYSTEMTIME é:

typedef struct _SYSTEMTIME {

WORD wYear;

WORD wMonth;

WORD wDayOfWeek;

WORD wDay;

WORD wHour;

WORD wMinute;

WORD wSecond;

WORD wMilliseconds;

} SYSTEMTIME;

Elga.

Postado

eu estou usando o Builder 4.

eu quero criar este programinha para salvar um arquivo de log do firewall aqui da empresa. Quero que em determinado horário (agendado hehehe) o programa copie o arquivo e salve pegando a data do sistema.

Exemplo:

acesso.log 20041104.log

no dia seguinte

acesso.log 20041105.log

Eu quero usar a data do sistema para nomear a cópia do arquivo. é possível?

Obrigado,

Eros Fernandes :bye:

Postado

É possível, sim.

É só pegar a data do sistema e montar uma string que seria o nome do arquivo.

Aí você usa a função CopyFile para copiar o arquivo com o novo nome, e pronto.

Algo como isto:

SYSTEMTIME st;

char logname[16];

//Pega a data do sistema

GetSystemTime(&st);

//Monta o nome do arquivo

sprintf(logname, "%4d%02d%02d.log", (int)st.wYear, (int)st.wMonth, (int)st.wDay);

//Copia o arquivo com o novo nome

CopyFile("acesso.log", logname, FALSE);

Pode não estar 100%, pois não compilei nem testei, mas a ideia é essa !

:bye:

Elga

Postado

Só é bom verificar se o CopyFile funciona enquanto o arquivo está aberto...

(Ou melhor, se o firewall NÃO abriu o arquivo com direitos exclusivos)

De resto é só :-BEER

  • 13 anos depois...
Postado
  Em 06/11/2004 às 21:37, Elga disse:

É possível, sim.

É só pegar a data do sistema e montar uma string que seria o nome do arquivo.

Aí você usa a função CopyFile para copiar o arquivo com o novo nome, e pronto.

Algo como isto:

SYSTEMTIME st;

char logname[16];

//Pega a data do sistema

GetSystemTime(&st);

//Monta o nome do arquivo

sprintf(logname, "%4d%02d%02d.log", (int)st.wYear, (int)st.wMonth, (int)st.wDay);

//Copia o arquivo com o novo nome

CopyFile("acesso.log", logname, FALSE);

Pode não estar 100%, pois não compilei nem testei, mas a ideia é essa !

:bye:

Elga

Expandir  

 

Estive olhando para o q foi dito acima e até pra pegar a data tudo ok. Mas, no caso da hora do sistema, está dando uma diferença de 3 horas a mais fazendo como dito acima. 

Alguém poderia me ajudar com relação a essa dúvida.

Obs: Estou "reabrindo" o post, pois o mesmo é d 2004

Postado

@vangodp  Olá. Obrigado pela explicação. Eu já conhecia a respeito do tipo de dado time_t e da struct tm, mas não de maneira tão detalhada assim. 

Inclusive, pesquisando a respeito do arquivo d cabeçalho locale.h me deparei com um livro onde encontrei um exemplo parecido a esse. Comprei o livro, tô estudando por meio dele, mas inda não cheguei nessa parte. Logo logo chego lá.

Inclusive já cheguei a criar um simples relógio em C usando o tipo d dado time_t e a struct tm, juntamente com a função strftime(), só não sabia justamente dessas funções ligadas a struct tm tal como você passou. 

Para fazer o relógio bastou colocar alguns ítens da lógica p pegar a hora do sitema em um loop e dar uns Sleeps e alguns sytem("cls") para limpar a tela a cada segundo

Vê se grava esse tutorial pois vou tá lá p ver, se Deus assim permitir.

Segue o código do relógio:

 

#include <stdlib.h>
#include <stdbool.h>
#include <locale.h>

int main()
{
    setlocale(LC_ALL, "Portuguese");

    system("title Relógio Digital");

    time_t now;
    struct tm *tm_now;
    char texto[50];

    while (true)
    {
        now = time(NULL);
        tm_now = localtime(&now);
        strftime(texto, sizeof(texto), "  %X\n\t %x", tm_now);
        printf("\n\n\t%s\n\n", texto);
        Sleep(1000);
        system("cls");
    }
    return 0;
}

Novamente agradeço pela explicação dada.

adicionado 5 minutos depois

É bom só frisar q, você sabe, mas para quem não sabia, o Sleep() combinado com o comando system("cls") é apenas p limpar a tela e não para atualizar a hora, já q a função Sleep() não é tão precisa e, caso o sistema esteja muito atarefado, o Sleep q seria d 1 segundo pode passar a ser 1 segundo e meio.

Descobri isso quando tentei criar um crônometro em C hehe

Inda não consegui criar a tal cronômetro q esperava criar

Aceito dicas! 

adicionado 32 minutos depois

@vangodp  Devo confessar q me empolguei um pouco com o código q você passou explicando a respeito da struct tm e acabei fugindo um pouco do foco q me levou a fazer a pergunta q fiz.

Em C tudo bem, tanto porque ando estudando só C nessas últimas semanas. Mas a questão é justamente sobre a API passada com respeito a hora e data do sistema

Se não for difícil p você explicar um pouco sobre isso agradeço muito

adicionado 34 minutos depois

Mas só precisa explicar se for realmente útil conhecer a respeito dessa API. Caso contrário pode deixar, ok?

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Mostrar mais  

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

Mostrar mais  
×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!