Pegar o que tiver depois de uma string
Bom dia...
Gostaria de pegar o texto em um Memo, de tudo o que estiver escrito após a palavra Chave, exemplo:
Chave texto <- texto
texto texto Chave teste <- teste
se alguém tiver a solução, fico grato.
Deus abençoe!
Gostaria de pegar o texto em um Memo, de tudo o que estiver escrito após a palavra Chave, exemplo:
Chave texto <- texto
texto texto Chave teste <- teste
se alguém tiver a solução, fico grato.
Deus abençoe!
Cristiano
Curtidas 0
Respostas
Bruno Leandro
16/03/2012
tenta assim
var
i:integer;
varString: string;
begin
i := pos(palavrachave,memo.text)
varString := copy(memo.text,i+length(palavrachave),length(memo.text));
end;
var
i:integer;
varString: string;
begin
i := pos(palavrachave,memo.text)
varString := copy(memo.text,i+length(palavrachave),length(memo.text));
end;
GOSTEI 0
Cristiano
16/03/2012
Funcionou cara, porém..... se tiver mais linhas abaixo ele pega todo o resto, e seria só na linha em que a palavrachave está.
Alguma solução??
obrigado.
Alguma solução??
obrigado.
GOSTEI 0
Bruno Leandro
16/03/2012
voce pode ter a palavra chave em mais de uma linha?
GOSTEI 0
Bruno Leandro
16/03/2012
var
i, j: Integer;
begin
for i := 0 to Memo1.Lines.Count - 1 do
begin
j := pos(palavrachave,Memo1.Lines[i]);
if j > 0 then
begin
varString := copy(Memo1.Lines[i],i+length(palavrachave),length(Memo1.Lines[i]));
ShowMessage([aspas]achou na linha [aspas] + inttostr(i+1) + [aspas] na posição [aspas] inttostr(j));
end;
end
GOSTEI 0
Bruno Leandro
16/03/2012
desta forma a variavel varString deve ser processada toda as vezes que forem encontradas pois se achar mais de uma vez ela será atualizada
var
i, j: Integer;
varString :string;
begin
for i := 0 to Memo1.Lines.Count - 1 do
begin
j := pos(palavrachave,Memo1.Lines[i]);
if j > 0 then
begin
varString := copy(Memo1.Lines[i],j+length(palavrachave),length(Memo1.Lines[i]));
ShowMessage([aspas]achou na linha [aspas] + inttostr(i+1) + [aspas] na posição [aspas] inttostr(j));
end;
end
var
i, j: Integer;
varString :string;
begin
for i := 0 to Memo1.Lines.Count - 1 do
begin
j := pos(palavrachave,Memo1.Lines[i]);
if j > 0 then
begin
varString := copy(Memo1.Lines[i],j+length(palavrachave),length(Memo1.Lines[i]));
ShowMessage([aspas]achou na linha [aspas] + inttostr(i+1) + [aspas] na posição [aspas] inttostr(j));
end;
end
GOSTEI 0
Cristiano
16/03/2012
entendi... funcionou certinho aqui.
não há necessidade do usuario digitar a palavrachave mais de uma vez, mas é melhor eu tratar isso!
obrigado!
E aproveitando que estou aqui, se não for abusar da sua boa vontade, eu preciso de outro codigo, seria alterar as posições de certas palavras.
palavra1, palavra2 chave
teria que ficar assim:
chave palavra1, palavra2
se for possivel... agradeço. Muuito obrigado maninho!!!
não há necessidade do usuario digitar a palavrachave mais de uma vez, mas é melhor eu tratar isso!
obrigado!
E aproveitando que estou aqui, se não for abusar da sua boa vontade, eu preciso de outro codigo, seria alterar as posições de certas palavras.
palavra1, palavra2 chave
teria que ficar assim:
chave palavra1, palavra2
se for possivel... agradeço. Muuito obrigado maninho!!!
GOSTEI 0
Bruno Leandro
16/03/2012
pra substituir poderia tentar desta forma
Memo1.text := StringReplace(Memo1.text,Palavra1,Palavra2,[rfReplaceAll, rfIgnoreCase]);
Memo1.text := StringReplace(Memo1.text,Palavra1,Palavra2,[rfReplaceAll, rfIgnoreCase]);
GOSTEI 0