Função Pos() Problemas
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
Curtidas 0
Melhor post
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.
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
23/02/2017
Era isso mesmo.
Obrigado, resolvido!
Obrigado, resolvido!
GOSTEI 0