TMemo Por que acontece ??

05/11/2005

0

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

Buffering

Responder

Posts

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

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

06/11/2005

Bon Jovi

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


Responder

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

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

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

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

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

07/11/2005

Buffering

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

:)


Responder

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

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] ) < i do
    Memo1.Lines.Delete( Memo1.Lines.IndexOf(  Memo1.Lines[i]  ) );

end;



Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar