Array
(
)

TMemo Por que acontece ??

Buffering
   - 05 nov 2005

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


Firekiller
   - 05 nov 2005

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;


Buffering
   - 05 nov 2005

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


Bon Jovi
   - 06 nov 2005

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


Firekiller
   - 06 nov 2005

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

procedure TFRM_Main.BT_AddTxtClick(Sender: TObject);
var
SL:TStringList
begin
If OpenDialog1.Execute Then
Begin
SL := TStringList.Create;
SL.LoadFromFile(OpenDialog1.FileName);
If Memo1.Lines.Count > 0 then
Memo1.Lines.Add(´´);
Memo1.Lines.Text := Memo1.Lines.Text+Sl.Text;
Label2.Caption := ´Foram Adicionados ´+FloatToStr(SL.Count)+ ´ 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.


Buffering
   - 07 nov 2005


Citação:
Bom, é só você adicionar ao seu código:

procedure TFRM_Main.BT_AddTxtClick(Sender: TObject);
var
SL:TStringList
begin
If OpenDialog1.Execute Then
Begin
SL := TStringList.Create;
SL.LoadFromFile(OpenDialog1.FileName);
If Memo1.Lines.Count > 0 then
Memo1.Lines.Add(´´);
Memo1.Lines.Text := Memo1.Lines.Text+Sl.Text;
Label2.Caption := ´Foram Adicionados ´+FloatToStr(SL.Count)+ ´ 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á


Firekiller
   - 07 nov 2005

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

Memo1.Lines.Clear;

Isso deve resolver.


Buffering
   - 07 nov 2005

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


Firekiller
   - 07 nov 2005

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;


Buffering
   - 07 nov 2005

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

:)


Buffering
   - 07 nov 2005

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


Firekiller
   - 09 nov 2005

Tenta aí:

#Código


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;