Fórum Função Pos() Problemas #575241
23/02/2017
0
Olá!
Poderiam me ajudar a corrigir esse problema...
Tenho a seguinte situação:
var Teste, Res: String;
begin
Teste := Memo1.Lines[Memo1.Lines.Count-1]; // PROGRAMA (NOME QUE FOI GERADO) EXECUTADO!
Res := Copy(Teste, Pos('(', Teste)+1, Pos(')', Teste));
end;
No caso, a variável "Res" era para receber o valor contido dentro dos parenteses da variável "Teste que vem do memo", mas ela não está reconhecendo o pareteses de fechamento ")", e imprime tudo que vem depois mesmo assim.
No caso, fica assim:
Res = "NOME QUE FOI GERADO) EXECUTADO!"
Só identifica o primeiro parenteses.
Poderiam me ajudar a corrigir esse problema...
Tenho a seguinte situação:
var Teste, Res: String;
begin
Teste := Memo1.Lines[Memo1.Lines.Count-1]; // PROGRAMA (NOME QUE FOI GERADO) EXECUTADO!
Res := Copy(Teste, Pos('(', Teste)+1, Pos(')', Teste));
end;
No caso, a variável "Res" era para receber o valor contido dentro dos parenteses da variável "Teste que vem do memo", mas ela não está reconhecendo o pareteses de fechamento ")", e imprime tudo que vem depois mesmo assim.
No caso, fica assim:
Res = "NOME QUE FOI GERADO) EXECUTADO!"
Só identifica o primeiro parenteses.
Vinicius
Curtir tópico
+ 0
Responder
Post mais votado
23/02/2017
Bom dia meu caro,
Acredito que seu problema não seja que ele não reconheça o parentese de fechamento, mais sim que o segundo paramentro do copy é o numero de caracteres que será copiado,
Oq vc esta fazendo é pegar a posição do primeiro parentese e copiando dali até o número de caracter da segunda posição.
Se o parenteses de fechamento esta na posição 10 então vc esta copiando da posição do primeiro + 10 caracteres depois dela.
Oq vc deve fazer é subtrair o numero de caracteres entre o fechamento e a abertura.
Acredito que seu problema não seja que ele não reconheça o parentese de fechamento, mais sim que o segundo paramentro do copy é o numero de caracteres que será copiado,
Oq vc esta fazendo é pegar a posição do primeiro parentese e copiando dali até o número de caracter da segunda posição.
Se o parenteses de fechamento esta na posição 10 então vc esta copiando da posição do primeiro + 10 caracteres depois dela.
Oq vc deve fazer é subtrair o numero de caracteres entre o fechamento e a abertura.
procedure TForm1.Button1Click(Sender: TObject);
var
startPos : Integer;
endPos : Integer;
nCharts : Integer;
line : String;
finalResult : String;
begin
line := Memo1.Lines[Memo1.Lines.Count-1];
startPos := pos('(',line)+1;
endPos := pos(')',line);
nCharts := endPos - startPos;
finalResult := Copy(line,startPos,nCharts);
ShowMessage(finalResult);
end;
Gutierry Pereira
Responder
Gostei + 1
Mais Posts
23/02/2017
Vinicius
Era isso mesmo.
Obrigado, resolvido!
Obrigado, resolvido!
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)