How to find all the '' characters of a memo and store in a vector using delphi?

3

I have a edit field in Delphi and I need to go through it in search of the > character and store the position of all > characters in a vector. By doing this I can only get the position of the first character > in memo , but I need to get the position of all.

Texto := memdsformapreparo.Text;
posicao := memdsformapreparo.SelStart; //pega posição do clique
posicaofinal := memdsformapreparo.SelLength; //pega posição final do mouse
posicaoabre := AnsiPos('<', Texto); //pega posição do caractere maior
posicaofecha:= AnsiPos('>', Texto); //pega posição do caractere menor

{if ((posicaoabre <= posicao) and (posicaofecha > posicao)) or ((posicaofinal >= posicaoabre) or (posicaofinal <= posicaofecha)) then
begin
  memdsformapreparo.SelStart := posicaofecha;
end;}
    
asked by anonymous 17.09.2018 / 14:46

2 answers

2

You can do this:

var
  i, len: integer;
  posicoes: array of integer;
  texto: string;
begin
  texto := 'conteúdo > do > texto';
  SetLength(posicoes, 0);        //esvaziar array na inicialização
  for i := 1 to length(texto) do
    if texto[i] = '>' then
    begin
      len := Length(posicoes);
      SetLength(posicoes, len + 1);
      posicoes[len] := i;
    end;
end;
    
18.09.2018 / 22:29
3

To get the position of all characters > in string and store in array , it would look like this:

var
  posicao: Integer;
  posicoes: Array of Integer;
  texto: String;
begin
  while (Pos('>', texto) > 0) do // Verifica se tem '>' na variável texto
  begin
    SetLength(posicoes, Length(posicoes) + 1); // Aumenta um espaço no array
    posicao := Pos('>', texto); // Pega a posição do primeiro >
    posicoes[High(posicoes)] := posicao; // Armazena a posição no ultimo espaço do array
    texto[posicao] := ' '; // Substitui o > por espaço
  end;

  // Neste ponto você terá todas as posições dos '>' dentro do array posicoes
end;

See more about the POS function here .

See working at Ideone .

    
17.09.2018 / 15:18