Como renumerar string encontrada

Delphi

16/01/2016

Olá, já procurei aqui e em vários forums e não achei uma solução para o meu problema

Tenho um richedit com o texto abaixo:
1
[fltsim.0]
title=Boeing 737-800 Paint1
sim=Boeing737-800
model=
2
[fltsim.1]
title=Boeing 737-800 Paint2
sim=Boeing737-800

[fltsim.3]
title=Boeing 737-800 Paint2
sim=Boeing737-800


o texto [fltsim.0] é sequencial e pode ir de [fltsim.0] até qualquer valor, mas precisa ser sempre de 0, 1, 2, 3 e assim por diante,

so que as vezes a sequencia é perdida e fica assim

[fltsim.0]
...
[fltsim.3]
...

e preciso que ela seja refeita mantendo a sequencia:


[fltsim.0]
[fltsim.1]
[fltsim.3]

O restante do texto tem que ficar inalterado.

Se alguem puder ajudar agradeço.
Daniel Sobrinho

Daniel Sobrinho

Curtidas 0

Melhor post

Ruy Salles

Ruy Salles

17/01/2016

Daniel, veja se esta rotina lhe atende:

procedure TForm1.Button1Click(Sender: TObject);
var
i, j: integer;
LstrTexto, LstrAuxiliar: string;
begin
j := 0;
for i := 0 to rchTeste.Lines.Count - 1 do //Percorre o RichEdit
begin
LstrTexto := rchTeste.Lines.Strings[i]; //Atribui a variável LstrTexto o valor da linha que está sendo lida
LstrAuxiliar := copy(LstrTexto,0,8); //Copia para a variável LtrsAuxiliar do primeiro ao novo caracter
if LstrAuxiliar = '[fltsim.' then // Testa de se a variával LstrAuxiliar é igual a '[fltsim.'
begin
LstrAuxiliar := LstrAuxiliar + inttostr(j) + ']'; //Se for igual ele irá concatenar a LstrAuxiliar com o índice que vc deseja e fecha o colchete
inc(j); // Incrementa a variável j
rchTeste.Lines.Strings[i] := LstrAuxiliar; //Substitui a linha do RichEdit pela string correta
end;
end;
end;

Espero ter ajudado
GOSTEI 1

Mais Respostas

Daniel Sobrinho

Daniel Sobrinho

16/01/2016

Cara, ficou perfeito.

Ele reordenou corretamente a sequencia do jeito que eu precisava.

Muito obrigado.

Parabéns pelo seu conhecimento.
GOSTEI 1
Ruy Salles

Ruy Salles

16/01/2016

Estamos aqui para ajudar uns aos outros.
GOSTEI 0
POSTAR