Fórum ajuda com Delphi #459553
26/10/2013
0
tentei algo assim. quem puder ajudar como fazer agradeço.
procedure TForm1.Button1Click(Sender: TObject);
var count:integer;
linha:integer;
SL:string;
begin
count := memo1.Lines.Count -1;
for linha := 0 to count do
begin
SL:= memo1.Lines[linha];
showmessage('na linha contém : '+ SL);
while copy(pos(edit1.Text,memo1.Text)> 0) do
begin
memo2.Lines.Add(SL);
end;
end;
end;
end.
Raí Jales
Curtir tópico
+ 0Post mais votado
28/10/2013
Se eu puder lhe dar um conselho será que trabalhe o menos possível com valores fixos.
Ex:
ComboBox2.ItemIndex:= ComboBox1.ItemIndex;
memo3.Lines[0]:=(copy(combobox2.Text,pos('^',combobox2.text)+1,50));
memo3.Lines.SaveToFile('caminho de um txt meu');
end;
Com exceção é claro de quanto estiver trabalhando com um leiaute pré-definido ou com valores que certamente não mudarão durante o decorrer do projeto/utilização do sistema.
Abraços.
Thebluemonkey
Gostei + 1
Mais Posts
28/10/2013
Itamar Souza
tentei algo assim. quem puder ajudar como fazer agradeço.
procedure TForm1.Button1Click(Sender: TObject);
var count:integer;
linha:integer;
SL:string;
begin
count := memo1.Lines.Count -1;
for linha := 0 to count do
begin
SL:= memo1.Lines[linha];
showmessage('na linha contém : '+ SL);
while copy(pos(edit1.Text,memo1.Text)> 0) do
begin
memo2.Lines.Add(SL);
end;
end;
end;
end.
Amigo
Tente fazer desta forma.
espero ter ajudado.
procedure TfrmPrincipal.BitBtn1Click(Sender: TObject);
var
slItens, slDados: TStringList;
QtdLinhasTotal, y :Integer;
conteudolinha, sLinha :string;
begin
slItens := TStringList.Create;
slDados := TStringList.Create;
ListBox1.Clear;
slItens.LoadFromFile('caminho do memo');
//quantidade de linha, retirando a 1 linha caso tenha os titulos, se não tiver titulo slItens.Count;
QtdLinhasTotal := slItens.Count - 1;
//comecando a linha 1 ou da linha zero caso seja necessário
for y := 1 to Pred( QtdLinhasTotal ) do
begin
sLinha := slItens[y];
// ShowMessage(sLinha );
Split( sLinha, ';', slDados );
conteudolinha := slDados[0];
//ordena os registros
ListBox1.Sorted := True;
//adiciona os dados
ListBox1.Items.Add(slDados[1]);
end;
slItens.Free;
slDados.Free;
end;
O pulo do gato:
procedure TfrmPrincipal.Split(Str: string; Delimiter: Char; ListOfStrings: TStrings);
begin
ListOfStrings.StrictDelimiter := True;
ListOfStrings.Clear;
ListOfStrings.Delimiter := Delimiter;
ListOfStrings.DelimitedText := Str;
end;
Gostei + 0
28/10/2013
Thebluemonkey
Acho que esta maneira também pode se adequar as suas necessidades.
procedure TFrmMain.BtnAddListaClick(Sender: TObject);
var
Palavras : array of string;
PalavrasBuscar: TStringList;
ListaSeparada : TStringList;
ListaOrigem : TStringList;
I: Integer;
Y: Integer;
begin
ComboLista.Items.Clear;
PalavrasBuscar := TStringList.Create;
ListaSeparada := TStringList.Create;
ListaOrigem := TStringList.Create;
try
ListaOrigem.Text := edtSource.Text;
ExtractStrings([',',' '],[' '],PChar(ListaOrigem.Text),PalavrasBuscar);
SetLength(Palavras,PalavrasBuscar.Count);
for Y := 0 to Pred(PalavrasBuscar.Count) do
begin
Palavras[Y] := PalavrasBuscar.Strings[Y];
end;
ExtractStrings([',',' '],[' '],PChar(Memo.Lines.Text),ListaSeparada);
for I := 0 to Pred(ListaSeparada.Count) do
begin
if StrInArray(ListaSeparada.Strings[I],Palavras) then
ComboLista.Items.Add(ListaSeparada.Strings[I]);
end;
finally
FreeAndNil(PalavrasBuscar);
FreeAndNil(ListaSeparada);
FreeAndNil(ListaOrigem);
end;
end;
E uma função para verificar se a string encontra-se no array:
function TFrmMain.StrInArray(const Value : String;const ArrayOfString : Array of String) : Boolean;
var
I: Integer;
begin
Result := False;
for I := 0 to Length(ArrayOfString) do
begin
if Value = ArrayOfString[I] then
begin
Result := True;
Break;
end;
end;
end;
Desta maneira você pode utilizar vários separadores no texto de origem e destino, como vírgulas e espaços.
Fiz um exemplo demonstrando, se quiser dar uma olhada: [url]http://www.qfpost.com/file/d?g=tikzAIutU[/url]
PS: Não repara nas "bad-practices", foi feito rapidão.... rsrs
Espero que ajude, abraços.
Abraços.
Gostei + 0
28/10/2013
Raí Jales
Gostei + 0
28/10/2013
Raí Jales
procedure TForm1.Button2Click(Sender: TObject);
var
Counter: Integer;
begin
memo2.Clear;
memo2.Lines.LoadFromFile('caminho de um txt meu');
For Counter := 0 to Memo2.Lines.Count - 1 do
Begin
Combobox1.Items.Add(Copy(Memo2.Lines.Strings[Counter],pos('&',Memo2.Lines.Strings[Counter])+1,pos('^',Memo2.Lines.Strings[Counter])-pos('&',Memo2.Lines.Strings[Counter])-1));
Combobox2.Items.Add(Memo2.Lines.Strings[Counter]);
button3.Click;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
ComboBox2.ItemIndex:= ComboBox1.ItemIndex;
memo3.Lines[0]:=(copy(combobox2.Text,pos('^',combobox2.text)+1,50));
memo3.Lines.SaveToFile('caminho de um txt meu');
end;
procedure TForm1.Button4Click(Sender: TObject);
var
Counter: Integer;
begin
For Counter := 0 to Memo4.Lines.Count - 1 do
Begin
memo5.Lines.Add(copy(Memo4.Lines.Strings[Counter],pos('^',Memo4.Lines.Strings[Counter])+1));
end;
button6.Click;
end;
procedure TForm1.Button6Click(Sender: TObject);
var Counter1:integer;
begin
for Counter1 := 0 to memo5.Lines.Count - 1 do
begin
Combobox3.Items.Add(Copy(Memo5.Lines.Strings[Counter1],pos('&',Memo5.Lines.Strings[Counter1])+1,pos('^',Memo5.Lines.Strings[Counter1])-pos('&',Memo5.Lines.Strings[Counter1])-1));
Combobox4.Items.Add(Memo5.Lines.Strings[Counter1]);
end;
end;
procedure TForm1.Button7Click(Sender: TObject);
var i:integer;
begin
combobox3.Clear;
memo4.Clear;
memo5.Clear;
memo7.Clear;
combobox4.Clear;
memo7.Lines.LoadFromFile('caminho de um txt meu');
for i := 0 to memo7.Lines.Count do
begin
if Pos(combobox1.Text,Memo7.Lines.Strings[i]) > 0 then
memo4.Lines.Add(Memo7.Lines.Strings[i]);
end;
button4.Click;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
Button2.Click;
end;
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
if key =#13 then
begin
button7.Click;
combobox3.SetFocus;
end;
end;
procedure TForm1.ComboBox3Change(Sender: TObject);
begin
ComboBox4.ItemIndex:= ComboBox3.ItemIndex;
memo6.Lines[0]:=(copy(combobox4.Text,pos('^',combobox4.text)+1,50));
memo6.Lines.SaveToFile('caminho de um txt meut');
end;
procedure TForm1.ComboBox3KeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
begin
edit4.SetFocus;
end;
end;
procedure TForm1.Edit12Change(Sender: TObject);
begin
Edit12.MaxLength := 8;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
edit1.MaxLength := 20;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
begin
combobox1.SetFocus;
end;
end;
Gostei + 0
28/10/2013
Raí Jales
Gostei + 0
28/10/2013
Raí Jales
Se eu puder lhe dar um conselho será que trabalhe o menos possível com valores fixos.
Ex:
ComboBox2.ItemIndex:= ComboBox1.ItemIndex;
memo3.Lines[0]:=(copy(combobox2.Text,pos('^',combobox2.text)+1,50));
memo3.Lines.SaveToFile('caminho de um txt meu');
end;
Com exceção é claro de quanto estiver trabalhando com um leiaute pré-definido ou com valores que certamente não mudarão durante o decorrer do projeto/utilização do sistema.
Abraços.
amigo se puder gostaria de adicionalo ou skype ou se puder rai duarte jales :D
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)