GARANTIR DESCONTO

Fórum ajuda com Delphi #459553

26/10/2013

0

bom dia, preciso ler um memo1 e copiar para um combobox todos os nomes no memo que contenham o nome determinado num edit.
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

Raí Jales

Responder

Post mais votado

28/10/2013

Olá Raí.

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

Thebluemonkey
Responder

Gostei + 1

Mais Posts

28/10/2013

Itamar Souza

bom dia, preciso ler um memo1 e copiar para um combobox todos os nomes no memo que contenham o nome determinado num edit.
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;
Responder

Gostei + 0

28/10/2013

Thebluemonkey

Raí.

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.
Responder

Gostei + 0

28/10/2013

Raí Jales

muito obrigado pela anteção ITAMAR P SOUZA e TheBlueMonkey consegui fazer de uma outra força mas utilizando a mesma ideia, assim sim para conhecimento verei os codigos e os entenderei muito obrigado mesmo.
Responder

Gostei + 0

28/10/2013

Raí Jales

caso alguem se interesse pela minha forma maluca e estranha ai está como fiz kkk

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;

Responder

Gostei + 0

28/10/2013

Raí Jales

Obrigado pela dica bluemonkey, seguirei seu conselho com certeza. obrigado.
Responder

Gostei + 0

28/10/2013

Raí Jales

Olá Raí.

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
Responder

Gostei + 0

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

Aceitar