Código
Um dos métodos que pensei para sua aplicação ler as informações do IniFile era desencriptar as informações em um arquivo temporário e a aplicação se utilizar destes parâmetros, desta forma se a aplicação fosse encerrada de forma brusca - ctrl + alt + del - este arquivo não era apagado ficando a disposição para leitura.
Com este método não é criado qualquer arquivo temporário deste IniFile para ler estas informações. Ficando, assim, mais seguras as informações do IniFile.
Estas instruções podem ser colocadas em uma "UnitGeral" (unit com todas as funções genéricas de sua aplicação). Por isso é que reservo as variáveis na linha "procedure" e "function".
Para codificar seu IniFile usaremos um código bem simples, mas pode ser usado qualquer código: HASH, BLOWFISH, BASE64...
function Codifica(const Str1: String): String;
var
Mascara, Str2 : String;
PonM, PonS : Byte;
begin
Mascara := 'ToCaiA';
Str2 := '';
PonM := 9;
for PonS:=1 to length(Str1) do
begin
AppendStr( Str2, Chr( Ord(Str1[PonS]) Xor Ord(Mascara[PonM])));
Inc( PonM);
if PonM > Length(Mascara) then
begin
PonM:=1;
end;
Result := Str2;
end;
end;
Para gravar as informações de sua aplicação para o IniFile use:
procedure GravaIni(Colchete, Parametro, Texto: String);
var
ArqIni : TIniFile;
begin
ArqIni := TIniFile.Create('c:windowsSYSSistema.Ini');
Try
// Gravar as informações de forma encriptada
ArqIni.WriteString(Codifica(Colchete), Codifica(Parametro), Codifica(Texto));
Finally
ArqIni.Free;
end;
end;
Usa-se desta forma: GravaIni('Computador', 'CPU', Edit1.Text);
Para ler as informacoes do IniFile e usar em sua aplicacao use:
function LeIni (Colchete, Parametro: String; Var Texto: String): String;
var
ArqIni : TIniFile;
begin
ArqIni := tIniFile.Create('c:windowsSYSSistema.Ini');
Try
// Ler as informações de forma encriptada
Texto := Codifica(ArqIni.ReadString(Codifica(Colchete), Codifica(Parametro), Texto);
Result := Texto;
Finally
ArqIni.Free;
end;
end;
REPAREM QUE NESTE PONTO TROQUEI "PROCEDURE" POR "FUNCTION" PORQUE DESTA FORMA EU OBTENHO AS INFORMAÇÕES E POSSO PASSAR PARA UM EDIT DIRETAMENTE, SEM TER QUE ARMAZENAR EM UMA VARIÁVEL E DEPOIS MOSTRAR EM UM EDIT.
Use-se desta forma:
Var
Texto: String;
...
Edit2.Texto:= LeIni('Computador', 'CPU', Texto);
Por: Murilo Cunha
Fonte: Revista Active Delphi
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009