Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Renanbg

Escrever e ler Arquivo Texto

Recommended Posts

Olá amigos, tenho mais um impasse aqui

 

Tenho um arquivo texto de 2 linhas e tenho 2 aplicativos que fazem a leitura desse arquivo

 

O aplicativo A deve apenas escrever algo na primeira linha e depois pular para a segunda linha e escrever outro valor ali.

Gostaria de criar 2 botões nele, um alteraria a linha 1 e o outro alteraria a linha 2. Alguma dica?

 

Ja o aplicativo B deve ler a primeira linha e comparar o valor que ali esta com uma variavel que armazenarei no executavel. caso o valor seja diferente eu aborto a abertura do sistema.

 

entao tenho isso para ler a primeira linha

 

Var
f:TextFile;
num, linha:String;
procedure TForm1.Button1Click(Sender: TObject);
 num:= Form1.numero_x;
 AssignFile(f,'c:\carta.txt');
 Reset(f);
 Readln(f,linha);

 if linha <> num then
 begin
 Application.MessageBox('Houve um problema com a autorização do sistema!'+#13+'Entre em contato com o administrador.', 'Versão Trial', MB_ICONWARNING + MB_OK);
 Application.Terminate;
 exit;
 end;

Caso o valor seja igual eu tenho esse codigo que é um contador

 

var
NomeArq:String;
f:TextFile;
Execusao,Number:Integer;
begin
NomeArq:='C:\carta.txt';
AssignFile(f,NomeArq);
Number:=0;
if not(fileexists(NomeArq)) then
begin
showmessage('Houve um problema, o sistema será encerrado.')
application.terminate;
exit;
end;

Reset(f);
ReadLn(f, Number);
Execusao:=Number+1;
Number:=Execusao;
ReWrite(f);
Write(f,Number);
CloseFile(f);
If Execusao>=5 then
begin
Application.MessageBox('Execusões chegaram ao seu limite'#13
+'Entre em contato para aquisição do Software ilimitado!','Aplicação Trial',MB_OK+MB_ICONINFORMATION);
Application.Terminate;
end;
end;
end;

Preciso juntar esses 2 codigos e faze-los trabalhar em harmonia, mas não estou conseguindo

Compartilhar este post


Link para o post
Compartilhar em outros sites

ixe.. olha cara. nom sei nom.. mas se os programas vão ficar lendo o arquivo constantemente.. você pode colocar, por exemplo, um para ler o arquivo a cada 5 segundos e o outro a 8 segundos.. assim diminui as chances de eles tentarem fazerem a abertura ao mesmo tempo.... mas mesmo assim você deve botar os codigos em blocos protegidos para que quando o programa não conseguir abrir o arquivo, ele consiga tratar este erro...

 

assim:

 

try
   codigo

except
	 //caso de erro no codigo acima, o programa vai cair aqui (na excessão)...
	 StatusBar1.panels[0].text := 'O arquivo ja estava aberto, aguardando proxima tentativa em "n" segundos';
end;

 

valeus... espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade isso vai ser lido apenas na abertura do sistema.

 

entao preciso ler a primeira linha onde vai ter um numero x e depois preciso escrever na segunda linha e é justamente escrever na segunda linha que não estou conseguindo, pois o codigo apaga tudo e escreve na primeira linha

Compartilhar este post


Link para o post
Compartilhar em outros sites

O seu arquivo é apagado por causa do comando rewrite, que recria o arquivo passado como parâmetro e depois com o write grava os dados nele. Uma saída seria você armazenar num array por exemplo todas as linhas e na hora de gravar o arquivo novamente varrer este array e gravar cada posição válida novamente no mesmo. Agora, porque não cria uma tabela dentro do seu banco de dados para controlar estes acessos? Usar um txt para isso é arriscado, visto que se o usuário souber qual é a funçaõ deste arquivo ele pode usar seu programa para sempre apenas alterando este seu arquivo de controle.

 

Talvez fosse bom repensar esta lógica não?

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

O seu arquivo é apagado por causa do comando rewrite, que recria o arquivo passado como parâmetro e depois com o write grava os dados nele. Uma saída seria você armazenar num array por exemplo todas as linhas e na hora de gravar o arquivo novamente varrer este array e gravar cada posição válida novamente no mesmo. Agora, porque não cria uma tabela dentro do seu banco de dados para controlar estes acessos? Usar um txt para isso é arriscado, visto que se o usuário souber qual é a funçaõ deste arquivo ele pode usar seu programa para sempre apenas alterando este seu arquivo de controle.

 

Talvez fosse bom repensar esta lógica não?

 

[]'s

estou estudando em fazer em mais de um arquivo. no bd ja pensei, mas como tenho poucas tabelas acho que ficaria facil para burlar. ja no arquivo eu pode se tornar mais dificil

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu prefiro deixar isso no banco de dados... você poderia pegar na web algum algoritmo pronto de criptografia e descriptografia de dados e jogar essa informação de número de acessos em um campo numa tabela de sua base de dados de modo criptografado. Ai na inicialização você leria este campo, descriptografaria ele e testaria se já expirou o total de acessos por exemplo. Ai mesmo que alguém editasse lá, sem saber qual o algoritmo que você usou a chance de burlar seria quase 0.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, mas no arquivo eu tbm farei o mesmo

 

se alguem achar ele e deletar eu aborto

 

se tentarem editar, ele vai estar criptografado e na verificação eu saberei

 

então acho que é viavel.

 

no momento estou com 2 arquivos, ambos criptofrafados

 

a maior duvida agora é como fazer para reautorizar assim q o tempo expirar

 

poderia fazer um aplicativo que recriaria o arquivo do contador zerado, mas para isso eu teria de ir até o cliente e liberar

 

o ideal seria que ao expirar o sistema fizessa algum tipo de calculo e me passasse um numero de serie que o cliente me passaria e entao com esse numero eu geraria uma contrasenha para o cliente q ao inserida no programa recriaria o arquivo

 

so me faltam ideias de como fazer isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.