Função Pos() Problemas

Delphi

23/02/2017

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

Vinicius

Curtidas 0

Melhor post

Gutierry Pereira

Gutierry Pereira

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.

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;
GOSTEI 1

Mais Respostas

Vinicius

Vinicius

23/02/2017

Era isso mesmo.
Obrigado, resolvido!
GOSTEI 0
POSTAR