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
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
Curtidas 0
Respostas
Firekiller
05/11/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;
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;
GOSTEI 0
Buffering
05/11/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
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
GOSTEI 0
Bon Jovi
05/11/2005
Vc deve usar a dica do firekiller, pq acha q nao?
GOSTEI 0
Firekiller
05/11/2005
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.
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.
GOSTEI 0
Buffering
05/11/2005
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á
GOSTEI 0
Firekiller
05/11/2005
No OnCreate do Formulário que você usa essa função, limpe o memo antes de iniciar:
Memo1.Lines.Clear;
Isso deve resolver.
Memo1.Lines.Clear;
Isso deve resolver.
GOSTEI 0
Buffering
05/11/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
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
GOSTEI 0
Firekiller
05/11/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;
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;
GOSTEI 0
Buffering
05/11/2005
Parábens Firekiller e Muito Obrigado Por Tirar Todas As Minhas Duvidas
:)
:)
GOSTEI 0
Buffering
05/11/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
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
GOSTEI 0
Firekiller
05/11/2005
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;
GOSTEI 0