05/11/2005

TMemo Por que acontece ??

Ta Aontecendo um Problema Comigo

eu adiciono em um memo um arquivo de texto pela string

Memo1.Lines.LoadFromFile(´arquivo.txt´);

até ae tudo Bem Só Q quando vai Adicionar outro arquivo de texto

ele apaga todo o texto q tá no memo e adiciona o outro

e o problema é esse queria q adicionasse embaixo da ultima linha do memo e naum apagase o texto que eu já adicionei


Buffering

Respostas

05/11/2005

Firekiller

Colega, isso é padrão... não é erro!

Tente assim:

var
Tmp:TStringList;
begin
Memo1.Lines.LoadFromFile(´Arquivo1.txt´);
Tmp := TStringList.Create;
Tmp.LoadFromFile(´Arquivo2.txt´);
Memo1.Lines.Add(´´);
Memo1.Lines.Text := Memo1.Lines.Text + Tmp.Text;
Tmp.Free;
end;


Responder Citar

05/11/2005

Buffering

Desculpe Naum me expressei direito Olha O Fonte

procedure TFRM_Main.BT_AddTxtClick(Sender: TObject);
begin
If OpenDialog1.Execute Then
Begin
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
Label2.Caption := ´Foram Adicionados ´+FloatToStr(Memo1.Lines.Count)+ ´ Nome´;
End
Else
Begin
Application.MessageBox(´Lista De Nomes Não Foi Encontrada´,´Cadastro De Alunos´, MB_ICONINFORMATION);
BT_AddTxt.Enabled := TRUE;
End;

Essa Funçao adiciona o Arquivo do opendialog no Memo só q c o usuario
for Adicionar Mais De Uma Lista e clicar denovo no botão quando ele escolher o 2° arquivo vai adicionar certinho só q vai apagar o texto do 1° Arquivo entende, e naum pode apagar tem q adicionar apartir da ultima linha do Memo

Acho q agora tá mais facil pra vcs me ajudarem


Responder Citar

06/11/2005

Bon Jovi

Vc deve usar a dica do firekiller, pq acha q nao?


Responder Citar

06/11/2005

Firekiller

Bom, é só você adicionar ao seu código:

procedure TFRM_Main.BT_AddTxtClick(Sender: TObject);
[color=red:d031c82d0b][b:d031c82d0b]var
SL:TStringList[/b:d031c82d0b][/color:d031c82d0b]
begin
If OpenDialog1.Execute Then
Begin
[color=red:d031c82d0b][b:d031c82d0b]SL := TStringList.Create;
SL.LoadFromFile(OpenDialog1.FileName);
If Memo1.Lines.Count > 0 then
Memo1.Lines.Add(´´);
Memo1.Lines.Text := Memo1.Lines.Text+Sl.Text; [/color:d031c82d0b][/b:d031c82d0b]
Label2.Caption := ´Foram Adicionados ´+FloatToStr([color=red:d031c82d0b][b:d031c82d0b]SL.Count[/color:d031c82d0b][/b:d031c82d0b])+ ´ Nome´;
End
Else
Begin
Application.MessageBox(´Lista De Nomes Não Foi Encontrada´,´Cadastro De Alunos´, MB_ICONINFORMATION);
BT_AddTxt.Enabled := TRUE;
End;


Tente isso, e veja como ficou.


Responder Citar

07/11/2005

Buffering

Bom, é só você adicionar ao seu código: procedure TFRM_Main.BT_AddTxtClick(Sender: TObject); [color=red:ec43c97cf8][b:ec43c97cf8]var SL:TStringList[/b:ec43c97cf8][/color:ec43c97cf8] begin If OpenDialog1.Execute Then Begin [color=red:ec43c97cf8][b:ec43c97cf8]SL := TStringList.Create; SL.LoadFromFile(OpenDialog1.FileName); If Memo1.Lines.Count > 0 then Memo1.Lines.Add(´´); Memo1.Lines.Text := Memo1.Lines.Text+Sl.Text; [/color:ec43c97cf8][/b:ec43c97cf8] Label2.Caption := ´Foram Adicionados ´+FloatToStr([color=red:ec43c97cf8][b:ec43c97cf8]SL.Count[/color:ec43c97cf8][/b:ec43c97cf8])+ ´ Nome´; End Else Begin Application.MessageBox(´Lista De Nomes Não Foi Encontrada´,´Cadastro De Alunos´, MB_ICONINFORMATION); BT_AddTxt.Enabled := TRUE; End; Tente isso, e veja como ficou.


Firekiller Deu Certo Muito Obrigado Mais Agora Surgiu Um Problema

Sua Funcão Funcionou só q agora pra adicionar o txt dos nomes ele pula a primeira linha do TMemo e começa Na Segunda Linha A Adicionar os nomes e tb na ultima linha do txt ele deixa uma em branca Porq será


Responder Citar

07/11/2005

Firekiller

No OnCreate do Formulário que você usa essa função, limpe o memo antes de iniciar:

Memo1.Lines.Clear;

Isso deve resolver.


Responder Citar

07/11/2005

Buffering

Valeu Fire Deu Certo agora me diz + uma coisa

tipo como eu faço pra contar em q linha q tá no memo pra mim poder dar um Sleep(2000); A Cada 100 linhas ??

tipo pq são uns 50 mil nomes cadastrados dae até ele adicionar vai travando o programa acho q sobre carrega.

outra coisa sem querer abusar dá sua boa vontade como eu faço pra quando clicar em salvar ele exclua as linhas q ficaram em branco ??

tipo assim

if Memo1.Lines.Text = ´´ Then
Begin
DeleteLinha;
End;

Muito Obrigado as outras funções funcionaram certinho Valeuwww


Responder Citar

07/11/2005

Firekiller

Para tirar as linhas em branco:

while Memo1.Lines.IndexOf(´´) >= 0 do
Memo1.Lines.Delete( Memo1.Lines.IndexOf(´´) );


Para saber quantas linhas tem no memo, Memo1.Lines.Count. Apenas um conselho, ao invés de usar um Sleep(xxx) a cada N linhas, esperimente, a cada linha que você processar, colocar um Application.ProcessMessages;


Responder Citar

07/11/2005

Buffering

Parábens Firekiller e Muito Obrigado Por Tirar Todas As Minhas Duvidas

:)


Responder Citar

07/11/2005

Buffering

Hehehe Tenho Mais Uma Duvida Tentei de varios jeitos e num deu

tipo quero q ele procure no memo por texto repetidos tipo assim

If A = B Then
Begin
Memo1.Lines.Delete(a);
End;

Desculpa Incomodar Tanto Mais é q to começando agora e num Sei Muito


Responder Citar

09/11/2005

Firekiller

Tenta aí:

var 
  i,j:integer;

for i:=memo1.lines.count-1 downto 0 do begin 

  while memo1.indexof( Memo1.Lines[i&93; ) < i do
    Memo1.Lines.Delete( Memo1.Lines.IndexOf(  Memo1.Lines&91;i&93;  ) );

end;



Responder Citar