Como renumerar string encontrada
16/01/2016
0
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.
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
Curtir tópico
+ 0
Responder
Post mais votado
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
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
Ruy Salles
Responder
Mais Posts
17/01/2016
Daniel Sobrinho
Cara, ficou perfeito.
Ele reordenou corretamente a sequencia do jeito que eu precisava.
Muito obrigado.
Parabéns pelo seu conhecimento.
Ele reordenou corretamente a sequencia do jeito que eu precisava.
Muito obrigado.
Parabéns pelo seu conhecimento.
Responder
Clique aqui para fazer login e interagir na Comunidade :)