Ajuda Para Criar um Registro Com data

26/12/2005

1

Ola Pessoal sou novo aqui e no delphi tbm, preciso de uma ajuda de vcs! Eu quero que quando uma data seje digitada em um edit tipo Edit1 26/12/2005 e clique em um botao seje criado um regstro no windows com a data digitada no Edit1 e quando o programa for aberto ele verifique a data no registro c for maior que a data do registro ele nao abra ou de um mensagem! nao sei c fui claro mais c der pra entendder e puderem me ajudar ficarei garto... Vlw


Responder

Posts

26/12/2005

Eixox

Ao invés de mexer diretamente no registro que não seria uma coisa lá muito legal, ainda mais para armazenar somente uma data, eu faria o seguinte:

Criar um arquivo INI

Na seção USES do form que gravará a digite INIFILES;
Crie um procedimento chamado GravaDataDoEdit - por exemplo...

procedure TSeuForm.GravarDataDoEdit(vData: TDate);
var
MeuIni : TiniFile;
begin
MeuIni := TInifile.Create(´ArquivoData.Ini´);
try
MeuIni.WriteDate(´Data´,´DataG´, vData);
finally
MeuIni.free;
end;
end;

no evento onExit do MasKedit coloque:

GravarDataDoEdit(strToDate(MaskEdit.Text));

Na entrada do form faça:

Crie uma function só para fazer a leitura:

function TSeuForm.LeData: TDate;
var
MeuIni : TInifile;
begin
Result := Date;
MeuIni := TIniFile.Create(´ArquivoData.Ini´);
try
Result := MeuIni.ReadDate(´Data´, ´DataG´, Date);
finally
MeuIni.Free;
end;


no evento onShow do Form faça
var
vData : TDate;
begin
vData := LeData;
if (vData > Date) then ShowMessage(´Venceu a bagaça - Compre ou se ferre´) else ShowMessage(´Pode usar até o dia do vencimento´) ;
end;


Responder

27/12/2005

Betogeek

eixox Agradeço muito sua ajuda nao testei o fonte ainda mais irrei testar hj. Vou tomar a liberdade e perguntar outra coisa pra vc ou c alguem poder responder ficarei grato. Como fazo para o Edit1 somar uma data tipo assim hj 27/12/2005 ele somar 365 dias pra frente aparecera no edit 1 ao inves de 27/12/2005 ficaria assim 27/12/2006 isso para qualquer data nao sei e fui claro a partir de qualquer data o Edit1 some automaticamente 365 dias para frente... Vlw Pessoal.


Responder

27/12/2005

Eixox

Pegue a data e converta se for do tipo String:
var
vDataFinal, vData : TDate;
begin
vData := StrToDate(´12/10/2005´);
vDataFinal := vData + 365;

Edit1.Text := ´Sistema Vencerá em: ´ + FormatDateTime(´dd-MM-yyyy´, vDataFinal);

end;


Responder

27/12/2005

Betogeek

eixox Brigadão! pow Vlw mesmo a força que vc ta me dando. Uma duvida!
Eu quero que [b:0258b10472]vData := StrToDate(´12/10/2005´);[/b:0258b10472] pegue a data do sistema! Tipo independente da data que a pessoa execultar tipo c ela execultar no dia 12/10/2005 vai para mais 365 dias ou c ela execultar no dia 27/12/2005 vai para 365 dias tbm! Indepentende da data de execução! Quando ela execultar ele jogue para 365 dias! Desculpe c estou fazendo perguntas idiotas mais.. Começei agora no Delphi.


Responder

27/12/2005

Eixox

var
vData : TDate;
begin
vData := [b:b38fba6788]Date[/b:b38fba6788];
...
...
...
...

Date - retorna o dia/mes/ano atual - fornecido pelo sistema.
Se o relógio do computador estiver marcando 20/12/1960,
vData será 20/12/1940


Responder

28/12/2005

Betogeek

eixox ele cria um arquivo ini na pasta windows. Mesmo estando na pasta do sistema ou na pasta windows ele nao vaiz a leitura do arquivo ele libera ainda mesmo a data estando vencida. Ele ainda acusa um erro no [b:72a277662a]Result := Date;[/b:72a277662a] tentei mudar algumas coisa mais mesmo assim ele contiua dando erro as vezes eu estou fazendo errado v vc puder dar mais uma conferida no fonte que vc me passou ficarei grato. Vlw pela ajuda...[/b]


Responder

28/12/2005

Eixox

a lógica da coisa:

1 - Você criou o arquivo ini - espero que quando colocar ele na máquina de seu cliente, você use o arquivo ini de outro programa ou crie um nome bem estranho.

2 - Quando deve ser feito o teste com o arquivo? No evento onShow ou onCreate de seu programa. Em primeiro, você deve verificar se o arquivo INI já existe. Se ele não existir ele deve ser criado. Seria algo mais ou menos assim (não esquecendo que você deve saber qual o nome do diretório Windows - existe uma função que faz isso);

if FileExists(´C:\PastaDoWindows\NomeDoMeuArquivo.INI´) = False then
CriarArquivoIni
else begin
vData := LeData;
if (vData > Date) then
faz algo que você quer
else
faz algo que você não queria que fizesse;
end;

Você deve testar a existência do arquivo INI que você criou.

Rotina para verificar a existência do arquivo INI

function TNomeDoSeuForm.ExisteMeuIni(vNomeDoIni:String): Boolean;
var
Diret, Achou : String;
begin
SetLength(Diret, MAX_PATH);
GetWindowsDirectory(PChar(Diret),MAX_PATH);
Achou := Copy(Diret, 1, StrLen(PChar(Diret))) + vNomeDoIni;

if FileExists(Achou) = True then
Result := True
else
Result := False;

end;

VEJA QUE: a variável [b:5e9bae7c97]vNomeDoIni[/b:5e9bae7c97] deve ser uma STRING com o nome complexto do arquivo + a extensão, exemplo: ´MeuIni.INI´.

Com o uso dessa função, a coisa ficaria mais ou menos assim:

Evento OnShow
procedure TFormPrincipal.FormShow(Sender: TObject);
begin
if ExisteMeuIni(´MeuIni.Ini´) = false then
CriarArquivoIni
else
vData := LeData;
end;

Se você quiser, manda o seu e-mail que eu mando um exemplo para você.


Responder

28/12/2005

Betogeek

Valeu... Vou testar mais eu quero o seu exemplo sim... Meu e-mail e MSN é betogeek@hotmail.com ou betoborgert@gmail.com qualquer um. Quando vc puder madar fico grato. Vlw Abraços


Responder

28/12/2005

Eixox

Estimado amigo, acho que posso enviá-lo amanhã de manhã, senão no começo da tarde.

Envio para você sem falta


Responder

28/12/2005

Paulo

Só uma pergunta: Arquivos INI não são editáveis? E muito fáceis de serem editados. Não correria o risco de ter a licença prolongada manualmente?


Responder

29/12/2005

Eixox

Vejamos

Se você irá usar isso como um recurso do seu sistema para evitar que o usuário utilize o seu software, isso realmente não é a melhor solução. Achei que inicialmente você estaria usando esse recurso para executar alguma operação que não gostaria de ter que executar com banco de dados.

Quando você tocou no assunto depois de 2000 mensagens que era para travar o seu sistema, eu fiquei de queixo caido. Mas mesmo assim, vou lhe dizer o que já foi comentado e nas muitas vezes não se chegou a solução nenhuma.

1 - Registrar dados no INI é a mesma coisa que dizer, olhe aqui!!!
2 - Registrar dados no registro do Windows também não é muito diferente.
3 - A Microsoft que é a Microsoft e faz o diabo dançar nos algorítmos para gerar as chaves das licenças, 2 semanas depois tá todo mundo pirateando.

Não existe software a prova de pirataria. Tudo depende do conhecimento do usuário que você está entregando o seu programa. Se você vê que o cara é meio tapado, sabe que ele jamais imaginará que a sua chave está em um arquivo INI. Se mesmo assim, você quer continuar usando o INI faça o seguinte:

Ao invés de criar uma seção chamada VALIDADE, crie uma chamada FAULT_KEY. Ao invés de criar um chave chamada DATA_EXPIRACAO, crie uma chamada FFIJH_NETCONF. Ao invés de colocar o valor como 12/11/2006 crie essa chave como sendo string e coloque
324023480234[b:afa54fb9f6]20061112[/b:afa54fb9f6]05907217121012934210.

Após criar o arquivo, jogue os valores para uma tabela no banco de dados que armazenará as propriedade do arquivo, como dia, mês, ano, hora, minuto e segundo da criação e inclusive o valor da chave. Verifique se o arquivo foi alterado a cada inicialização do programa. Se isso tudo não satisfizer você, então não tem como ajudá-lo.


Responder

29/12/2005

Betogeek

eixox eu agradeço a sua preocupação! Mais como sou leigo no delphi nao sei fazer tudo isso que vc falou, mais c vc puder me mandar algum exemplo acima citado eu ficarei grato. So estou fazendo isso pq um amigo meu esta fazendo um sisteminha simples aqui para algumas empressas da nossa cidade nao vai para longe entao isso pra mim ja esta bom! C vc tiver MSN mando pra vc um exemplo aqui que estou fazendo pra vc ver certinho o que estou querendo. Mais uma vezes muito Obrigado por estar me ajudando.


Responder

29/12/2005

Eixox

enviar os arquivos para o seu e-mail - só pegou o hotmail o gmail não permitiu e deu pau.

Eu os testei e funcionou legal. Se o cara tem a idéia de que apagou o arquivo e que vai usar a aplicação tranquilo, ele se ferra. Dai em diante ele não sabe mais onde procurar nada.

Agora, falando sério. Os caras para o qual desenvolvo nunca me incomodaram com esse tipo de coisa. Teve uma vez um ´loco´ que copiou o programa porque um outro deu os discos de instalação para ele. O cara instalou e começou a dar um pequenos problemas que na empresa do cara já tinham sido corrigidos. Eles copiavam o executável e não sabiam que tinha um arquivo limitador de versão - mais ou menos parecido com o que lhe enviei.

O cara instalou a versão rescente e deu pau. Copiou as tabelas e davam pau. Instalou o antigo de novo e deu pau. Fiquei sabendo que no final ele tirou a aplicação porque não sabia mais o que fazer. Tudo dava pau.


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira