Obter data e hora do servidor

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Obter data e hora do servidor

Mensagem por alxsts »

Olá amigos!

Por favor, será que alguem pode me dar uma dica para resolver a questão abaixo? Antecipadamente agradeço.

Estou dando manutenção em uma aplicação muito antiga (que novidade...), que precisa continuar sendo gerada com rtLink.
Preciso buscar a data e hora em um servidor.
Estou usando o seguinte comando: RUN "CMD /C START /MIN /WAIT NET TIME \\Server02 > NULL"
Na execução, o arquivo NULL é criado mas parece que não é fechado (dando um dir, aparece com tamanho zero)

Alguma idéia?

Abraços
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Obter data e hora do servidor

Mensagem por Maligno »

Nome estrano para um arquivo. Até dá a impressão de que você quer anular a saída do comando no vídeo, coisa que funcionaria se fosse NUL e não NULL. Troque o nome do arquivo. De repente funciona. Eu testei aqui e não ficou zero. Mas usei em linha de comando: "DIR > NULL".
[]'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!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Obter data e hora do servidor

Mensagem por Pablo César »

Eu acho que não trata-se de direcionamento para arquivo, muito menos por causa do NULL ou NUL. Isto é perfeitamente possível em Clipper, diferente ao padrão da linguagem C. Fiz alguns testes e de fato não funciona de dentro da aplicação Clipper, deve ser por causa da "emulação" ao executar o RUN. Fiz testes:

RUN "CMD /C START /MIN /WAIT NET TIME \\Server02 > NULO"
RUN "START /MIN /WAIT NET TIME \\Server02 > NULO"
RUN "NET TIME \\Server02 > NULO"

E nenhum dos casos funcionou. Eu utilizo este recurso de obter ou até mesmo sincronizar a data e hora do servidor, mas executo isso na minha BATCH que chama a minha aplicação. Talvez seja conveniente você executar esse comando antes de entrar no seu aplicativo. Faça um arequivo .BAT que direcione para um arquivo TXT e depois faça chamada do seu aplicativo logo a seguir.
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.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Obter data e hora do servidor

Mensagem por Maligno »

Em C o NULL (dois L) só existe para ilustrar o valor zero. Não tem nada a ver com redirecionamento, que é um recurso apenas da linha de comando. E o NUL (um L) é diferente do NULL. O primeiro força o descarte da saída padrão no DOS, mas NULL é um nome válido de arquivo. No caso do exemplo postado pelo colega é um redirecionamento perfeitamente válido. É só testar no prompt do DOS algo do tipo: DIR > NULL. O arquivo NULL estará lá. O que parece também encrencar um pouco é o comando START. Precisa?

Talvez o problema esteja no tipo de saída de NET, que parece não imprimir para a saída padrão (stdout). Se for isso mesmo, não será possível redirecionar a saída para um arquivo. É fácil ver. Basta trocar o comando por MODE, por exemplo. Se for executado SwpRunCmd("CMD /C MODE > NULL"), o arquivo NULL estará lá com o saída correta.
[]'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!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Obter data e hora do servidor

Mensagem por Pablo César »

NULL é um nome válido de arquivo. No caso do exemplo postado pelo colega é um redirecionamento perfeitamente válido. É só testar no prompt do DOS algo do tipo: DIR > NULL.
Pois é, é valido assim como NUL é válido como arquivo também. Na verdade falei em Clipper mas para o SO é que na verdade válido como nome de arquivo.
parece também encrencar um pouco é o comando START. Precisa?
Também acho que não haveria necessidade assim como o comando CMD, não acha ?
Talvez o problema esteja no tipo de saída de NET, que parece não imprimir para a saída padrão (stdout)./quote]Acho que não deve ser isso, pois se fizermos um teste na linha de comando direcionado para arquivo, o NET TIME cria sim com o conteúdo de data e hora do computador remoto.
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.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Obter data e hora do servidor

Mensagem por alxsts »

Caros, obrigado pelas respostas.

Estou usando CMD /C START pois preciso linkeditar com rtLink. De outra forma usaria o Blinker e SwpRunCmd(). Vou continuar tentando...

[]s

AlxSts
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Obter data e hora do servidor

Mensagem por Maligno »

Pablo César escreveu:Pois é, é valido assim como NUL é válido como arquivo também.
Não. No prompt do DOS o argumento NUL serve apenas e tão somente para descartar a saída do pipe gerado por um programa. Em virtude disso, no DOS nenhum arquivo pode se chamar NUL.
Acho que não deve ser isso, pois se fizermos um teste na linha de comando direcionado para arquivo, o NET TIME cria sim com o conteúdo de data e hora do computador remoto.
Eu disse porque fiz um teste bem simples. Usei o comando de linha NET /? > SAIDA, mas foi gerado o arquivo SAIDA com tamanho zero. Em vista disso, supus que esse comando não usa a saída padrão. Logo, não há como redirecionar a saída desse comando. Mas, estranhamente (testei agora), o comando NET HELP TIME > SAIDA gera o arquivo SAIDA corretamente. Muito esquisito. Parece que, dependendo do comando utilizado, a saída é para stdout, como normalmente se espera. Mas em alguns comandos nã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!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Re: Obter data e hora do servidor

Mensagem por Pablo César »

Maligno escreveu:
Pablo César escreveu:Pois é, é valido assim como NUL é válido como arquivo também.
Não. No prompt do DOS o argumento NUL serve apenas e tão somente para descartar a saída do pipe gerado por um programa. Em virtude disso, no DOS nenhum arquivo pode se chamar NUL.
Tem razão Maligno ! Eu me confundí, de fato não é possível criar arquivo chamado NUL pelo SO.
AlxSts escreveu:Estou usando CMD /C START pois preciso linkeditar com rtLink
Independente se usas RTLINK ou BLINKER, na minha opinião: estariam demais. Mas mesmo assim não irá resolver, caso vier tentar executar o NET TIME de dentro da aplicação Clipper. Tente através da batch e veja como é possível, desta forma:

1. Crie um arquivo VESERVER.BAT com o seguinte conteúdo: @NET TIME \\Server02 > DATAHORA.TXT

2. Na sua aplicação, em vez de chamar: RUN "CMD /C START /MIN /WAIT NET TIME \\Server02 > NULL" coloque então: RUN VESERVER.BAT

Se a sua intenção gravar a data e hora do Server02, então é só executar. Caso deseje exibir na tela, leia o conteúdo do arquivo DATAHORA.TXT para uma variável e só mostrar.

Agora, não sei explicar o por quê não funciona o comando de dentro da aplicação Clipper. Funcionou através da BATCH. Vai entender ?
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.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Obter data e hora do servidor

Mensagem por Maligno »

Aliás, em tempo: se para o colega servir a data/hora de um servidor HTML da Internet, ele poderia muito bem usar a biblioteca WAPI, que dispõe de recursos suficientes para executar um script PHP para obter esses dados, conforme exemplo que já postei antes. Se uma conexão à Internet estiver disponível, claro.
[]'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!
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Obter data e hora do servidor

Mensagem por alaminojunior »

Eu fiz uns testes aqui, e dentro do programa não funcionou, mas fora sim. Acredito que seja a variável path, pois ele retornou "comando ou nome de arquivo inválido....."
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Obter data e hora do servidor

Mensagem por Pablo César »

Pois... mesmo colocando o path completo não dá certo. O NET.EXE está no C:\WINDOWS\SYSTEM32 e mesmo asso não deu. Acho que tem a ver com a emulação DOS. Tem coisas que não funcionam de dentro da aplicação Clipper.
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.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Obter data e hora do servidor

Mensagem por Maligno »

Testei o NET dentro de um programa e deu certo. Melhor chamar o House. :)
[]'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!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Obter data e hora do servidor

Mensagem por Pablo César »

Conta como você conseguiu Maligno. Não diga que fez em C ?
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.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Obter data e hora do servidor

Mensagem por Maligno »

Simples de tudo: SwpRunCmd("CMD /C NET HELP TIME > NULL"). :)
[]'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!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Obter data e hora do servidor

Mensagem por Pablo César »

Ahhh com BLINKER, Maligno ? Mas o ALXsts precisa solução para RTLINK...

Será falta de memória ? Por quê com BLINKER funcionou e com RTLINK nã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.
Responder