Ir para conteúdo
Fórum Script Brasil
  • 0

Memo + *.ini


Eder

Pergunta

Ola....eu uso este procedimento pra gravar dados de um memo pra um *.ini

function EncodeString(S: string): string;
var
I: integer;
begin
Result := '';
for I := 1 to Length(S) do
if (S[I] in [#13, #10, #35]) then
Result := Result + '#' + IntToStr(Ord(S[I]))
else
Result := Result + S[I];
end;

function DecodeString(S: string): string;
var
I: integer;
begin
Result := '';
I := 1;
while I < Length(S) do
begin
if (S[I] = '#') then
begin
Result := Result + Chr(StrToInt(Copy(S, I + 1, 2)));
Inc(I, 2);
end
else
Result := Result + S[I];
Inc(I);
end;
end;
No OnClose: Neste caso ele pega os dados do Memo e Grava no *.INI
procedure TFormEmail.FormClose(Sender: TObject; var Action: TCloseAction);
var
ini: TInifile; //declarar variavel
begin
Ini:= Tinifile.Create(ExtractFilePath(Application.ExeName) + 'config.Ini'); // vai pegar o ini onde o executavel esta
//email´s
ini.WriteString('dados', 'EMAILSV', EncodeString(Memo1.Lines.Text));
ini.WriteString('dados', 'EMAILRM', EncodeString(Memo2.Lines.Text));
ini.WriteString('dados', 'EMAILSO', EncodeString(Memo3.Lines.Text));
ini.WriteString('dados', 'EMAILCV', EncodeString(Memo4.Lines.Text));
ini.free;
end;
No OnCreate: quando o programa é aberto ele pega os dados do *.ini e manda pros memos.
procedure TFormEmail.FormCreate(Sender: TObject);
var
ini: TInifile; //declarar variavel
begin
Ini:= Tinifile.Create(ExtractFilePath(Application.ExeName) + 'Config.Ini'); // vai pegar o ini onde o executavel esta
//EMAIL´S
Memo1.Lines.Text:= DecodeString(ini.readstring('dados','EMAILSV',''));
Memo2.Lines.Text:= DecodeString(ini.readstring('dados','EMAILRM',''));
Memo3.Lines.Text:= DecodeString(ini.readstring('dados','EMAILSO',''));
Memo4.Lines.Text:= DecodeString(ini.readstring('dados','EMAILCV',''));
ini.Free;// liberar o arquivo
end;

Agora vem o probleminha.....tudo funciona acima....mas quando ele abre o programa nos memos sempre acaba comendo UMA LETRA.

Exemplo quando fecho o problema ta assim um memo:

ghggh@gg.com.br;

hjhhh@hh.com.br

quando abro o programa aparece assim no memo:

ghggh@gg.com.br;

hjhhh@hh.com.b

notem que falta o R do BR

Tem alguma maneira de corrigir??

Grato

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Eder, o problema está com sua rotina DecodeString.

Por conta deste teste: while I < Length(S) do

você não está processando o último caracter da string, que por sua vez não é concatenado ao resultado.

Voce se importaria em dizer a finalidade destes dois procedimentos: Encode e Decode; Conforme o caso, acho que haveria forma mais simples de obter o mesmo resultado.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Eder, o problema está com sua rotina DecodeString.

Por conta deste teste: while I < Length(S) do

você não está processando o último caracter da string, que por sua vez não é concatenado ao resultado.

R.: certo.....coloquei um (=) junto ficando assim:

while I =< Length(S) do

ai deu certo ;)

Voce se importaria em dizer a finalidade destes dois procedimentos: Encode e Decode; Conforme o caso, acho que haveria forma mais simples de obter o mesmo resultado.

R.: opa....sem problemas....

o usuario neste caso digita a relação de emails...a qual ele quer gravar...e ai quando fecha o form e grava num *.ini

quando ele abre o programa, esta lá a listinha dos emails, pois ele retorna a lista atraves do OnCreate do form.

a finalidade total do processo...é como este programinha fica em duas filiais da empresa...e como não quero lidar com tabelas....então ele grava no ini....o processo de guardar os emails é porque são mtos emails...então ele usa esta lista pra emails programados...ou seja..tal hora ele passa determinados emails...para os usuarios que estão cadastrados nesta lista(Memo).

Mas..beleza....Obrigado pela dica.

Se não nos comunicar-mos de novo Um FELIZ NATAL pra você e sua Família......Um grande ano de 2008 ...mta Saúde e Paz.....que em 2008 você e outros colaboradores do forum possam ter esta disponibilidade e vontade em ajudar pessoas mais inexperientes(como eu), e até mesmo outros profissionais.

valeu...Obrigado por todas as ajudas que você me deu este 2007, que não foram poucas...hehehe.

Forte Abraço.

:D

Editado por Eder
Link para o comentário
Compartilhar em outros sites

  • 0
Voce se importaria em dizer a finalidade destes dois procedimentos: Encode e Decode; Conforme o caso, acho que haveria forma mais simples de obter o mesmo resultado.

R.: opa....sem problemas....

o usuario neste caso digita a relação de emails...a qual ele quer gravar...e ai quando fecha o form e grava num *.ini

quando ele abre o programa, esta lá a listinha dos emails, pois ele retorna a lista atraves do OnCreate do form.

a finalidade total do processo...é como este programinha fica em duas filiais da empresa...e como não quero lidar com tabelas....então ele grava no ini....o processo de guardar os emails é porque são mtos emails...então ele usa esta lista pra emails programados...ou seja..tal hora ele passa determinados emails...para os usuarios que estão cadastrados nesta lista(Memo).

Na verdade me referia ao fato de você utilizar uma função Encode e Decode.

Não daria para simplesmente gravar o memo usando Lines.SaveToFile e carregá-lo utilizando Lines.LoadFromFile?

Porque pelo que percebi, a sua função faz, p.e., a troca do caracter #13 pelo string "#13" e eu não entendi a real necessidade disto. Mas supondo necessário, há funções do tipo replace que substituem diretamente o que é desejado, sem necessidade de implementar tais funções.

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...