Número da Linha de um Memo depois de localizar uma palavra.
Boa Tarde!
Tenho um memo...
nele eu coloquei um resultado de uma pesquisa no sql server
irão ter varias linhas neste memo...
o q eu quero é:
Localizar a palavra ´objetivo´ dentro do memo e eu ler a linha que ele está pra poder colocar em um list view... (Somente a linha que tem o objetivo)...
Alguma forma???
Desde já agradeço.
Tenho um memo...
nele eu coloquei um resultado de uma pesquisa no sql server
irão ter varias linhas neste memo...
o q eu quero é:
Localizar a palavra ´objetivo´ dentro do memo e eu ler a linha que ele está pra poder colocar em um list view... (Somente a linha que tem o objetivo)...
Alguma forma???
Desde já agradeço.
Diegus
Curtidas 0
Respostas
Marco Salles
16/03/2007
acho que funfa:
memo1.Lines.IndexOf(´Objetivo´)
GOSTEI 0
Marco Salles
16/03/2007
acho que funfa:
Citação:
memo1.Lines.IndexOf(´Objetivo´)
Desculpa , eu entendi errado... A palavra Objetivo faz parte de um contexto , e não é uma palavra isolada..
Eu não conheço nenhm método da VCL que retorne isso .. Nen mesmo nenhuma propriedade do FindDialog , a não ser fazer esta busca na mão e trazer o resultado ...
GOSTEI 0
Diegus
16/03/2007
[quote:040d3de5af=´Marco Salles´]
Desculpa , eu entendi errado... A palavra Objetivo faz parte de um contexto , e não é uma palavra isolada..
Eu não conheço nenhm método da VCL que retorne isso .. Nen mesmo nenhuma propriedade do FindDialog , a não ser fazer esta busca na mão e trazer o resultado ...[/quote:040d3de5af]
´Objetivo´ é uma das palavras dentro do texto....
acho que funfa:
Citação:
memo1.Lines.IndexOf(´Objetivo´)
Desculpa , eu entendi errado... A palavra Objetivo faz parte de um contexto , e não é uma palavra isolada..
Eu não conheço nenhm método da VCL que retorne isso .. Nen mesmo nenhuma propriedade do FindDialog , a não ser fazer esta busca na mão e trazer o resultado ...[/quote:040d3de5af]
´Objetivo´ é uma das palavras dentro do texto....
GOSTEI 0
Micheus
16/03/2007
[b:a25256e940]Diegus[/b:a25256e940], veja se esta alternativa lhe serve.
- Troque seu componente TMemo por um TRichEdit;
- Defina a propriedade PlainText = False (caso julgue necessário mantê-lo o mais parecido com um TMemo);
- Após colocado o resultado dentro do RichEdit, para localizar, utilize algo como:
Se for necessário utilizar uma busca contínua (n ocorrências até o término do texto), há necessidade de adaptação da função.
Espero ter ajudado.
- Troque seu componente TMemo por um TRichEdit;
- Defina a propriedade PlainText = False (caso julgue necessário mantê-lo o mais parecido com um TMemo);
- Após colocado o resultado dentro do RichEdit, para localizar, utilize algo como:
function FindValue(RichEdit :TRichEdit; StrToFind :string) :boolean; var FoundPos :Integer; begin FoundPos := RichEdit.FindText(StrToFind, 0, Length(RichEdit.Text), []); Result := FoundPos <> -1; if Result then begin // necessário para que possamos obter o posicionamento // na linha e coluna aonde o texto se encontra RichEdit.SelStart := FoundPos; // evita que seja mostrada qualquer seleção RichEdit.SelLength := 0; end; end; // utilizando... var StrLinha :string; begin ... if FindValue(RichEdit1, ´Objetivo´) then begin // se encontrou o texto, estaremos posicionados na linha aonde ele apareceu StrLinha := RichEdit1.Lines[RichEdit1.CaretPos.Y]; ... end; ... end;
Se for necessário utilizar uma busca contínua (n ocorrências até o término do texto), há necessidade de adaptação da função.
Espero ter ajudado.
GOSTEI 0
Marco Salles
16/03/2007
Ha se puder usar o [b:1c6968ca16]RichEdit[/b:1c6968ca16] pude tb fazer:
P:S quando retornar vazio é porque não encontrou
function Retornar(RichEdit:TRichEdit;pesquisar :string):String;
begin
with RichEdit do
result:=Lines.Strings[Perform(EM_LINEFROMCHAR,FindText(pesquisar, 0,Length(Text),[]),0)];
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
showmessage(Retornar(RichEdit1,edit1.text));
end;
P:S quando retornar vazio é porque não encontrou
GOSTEI 0
Diegus
16/03/2007
Valeu ae....
Fiz um pouco diferente...
O meu objetivo era ler a linha em q a palavra ´Objetivo´ estivesse...
Fiz o seguinte:
Valeu pela atenção!
Fiz um pouco diferente...
O meu objetivo era ler a linha em q a palavra ´Objetivo´ estivesse...
Fiz o seguinte:
//*****OBJETIVO if pos(´Objetivo´, adoq_Textotext.asString) <> 0 then begin ls_Var := Copy(adoq_Textotext.asString, pos(´Objetivo´, adoq_Textotext.asString), length(adoq_Textotext.asString) - Pos(´Objetivo´,adoq_Textotext.asString) + 1); adoq_PesquisacalcObjetivo.Value := trim(copy( ls_Var, 1, pos(chr(13),ls_Var)));
Valeu pela atenção!
GOSTEI 0
Diegus
16/03/2007
Valeu ae....
Fiz um pouco diferente...
O meu objetivo era ler a linha em q a palavra ´Objetivo´ estivesse...
Fiz o seguinte:
Valeu pela atenção!
Fiz um pouco diferente...
O meu objetivo era ler a linha em q a palavra ´Objetivo´ estivesse...
Fiz o seguinte:
//*****OBJETIVO if pos(´Objetivo´, adoq_Textotext.asString) <> 0 then begin ls_Var := Copy(adoq_Textotext.asString, pos(´Objetivo´, adoq_Textotext.asString), length(adoq_Textotext.asString) - Pos(´Objetivo´,adoq_Textotext.asString) + 1); adoq_PesquisacalcObjetivo.Value := trim(copy( ls_Var, 1, pos(chr(13),ls_Var)));
Valeu pela atenção!
GOSTEI 0
Marco Salles
16/03/2007
Se for para usar String , melhor com a Função PosEx , voce economia uma Função Copy de cara
posInicial:=pos(´objetivo´,adoq_Textotext.asString);
if posInicial <> 0 Then
begin
posFinal:=PosEx(char(13),adoq_Textotext.asString,posInicial);
ls_Var := Copy(adoq_Textotext.asString,posInicial,posFinal-posInicial);
end;
GOSTEI 0