Ajuda Para Criar um Registro Com data
26/12/2005
0
Betogeek
Posts
26/12/2005
Eixox
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;
27/12/2005
Betogeek
27/12/2005
Eixox
var
vDataFinal, vData : TDate;
begin
vData := StrToDate(´12/10/2005´);
vDataFinal := vData + 365;
Edit1.Text := ´Sistema Vencerá em: ´ + FormatDateTime(´dd-MM-yyyy´, vDataFinal);
end;
27/12/2005
Betogeek
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.
27/12/2005
Eixox
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
28/12/2005
Betogeek
28/12/2005
Eixox
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ê.
28/12/2005
Betogeek
28/12/2005
Eixox
Envio para você sem falta
28/12/2005
Paulo
29/12/2005
Eixox
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.
29/12/2005
Betogeek
29/12/2005
Eixox
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.
Clique aqui para fazer login e interagir na Comunidade :)