Humm, entendi então vai outra idéia, o exemplo abaixo está faltando algumas
coisas, mas acho que pode te ajudar, consiste em primeiro mapear o seu
texto, original da seguinte forma, veja o exemplo de mapa para o texto
'ABCABEFG'; Com o mapa montado, você agora passa a verificar seu valores
neste mapa, se o encontrar ou não, saberá as posições que seu valor se
encontra no texto original daí é só buscar os valores na posição original,
deve ter algum outro exemplo mais fácil, mas por hora acho que este pode te
ajudar....
valor posições
A 1, 4
B 2, 5
C 3
E 5
F 6
G 7
procedure TForm1.bbt1Click(Sender: TObject);
type
TMapa = record
valor: string;
posicoes: array [0..4] of Integer;
end;
var
vMapa: array[0..100] of TMapa;
vS: TStrings;
vIndicesAdicionados: TStrings;
vI: Integer;
I, J, K, P: Integer;
begin
vTexto := 'ABCABEFG';
K := 0;
for I := 1 to Length(vTexto) do
begin
P := 0;
for J := 1 to Length(vTexto) do
begin
if vTexto[I] = vTexto[J] then
begin
{Tem q fazer uma verificação AQUI e SO adicionar no MAPA se não
existir}
vMapa[K].valor := vTexto[I];
vMapa[K].posicoes[p] := I;
P := P + 1;
end;
end;
K := K + 1;
end;
for vI := 0 to 3 do
begin
ShowMessage(vMapa[vi].valor);
end;
De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em
nome de deco0_07
Enviada em: segunda-feira, 15 de dezembro de 2008 10:41
Para: delphi-br@yahoogrupos.com.br
Assunto: Re: RES: [delphi-br] Dúvida com TStringList
eu apliquei esse exemplo fiz assim...
for vI := 0 to vS.Count - 1 do
begin
if vS.IndexOf(vS.Strings[vI]) <> 0 then
Memo1.Lines.Add(vS.Strings[vI]);
end;
esse if é pra não adcionar a linha 1 no memo...
só que se tenho outro valor igual o dessa linha, ele não adciona no
memo tambem, sendo que era pra adcionar...
--- Em delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
, "Juliano Silva - Yahoo"
<smjjuli...@...> escreveu
>
> procedure TForm1.bbt1Click(Sender: TObject);
>
> var
>
> vS: TStrings;
>
> vI: Integer;
>
> begin
>
> vs := TStringList.Create;
>
> vS.Add('A');
>
> vS.Add('B');
>
> vS.Add('C');
>
> vS.Add('D');
>
> vS.Add('E');
>
> vS.Add('F');
>
>
>
> for vI := 0 to vS.Count - 1 do
>
> begin
>
> ShowMessage(IntToStr(vS.IndexOf(vS.Strings[vI])) + ' - ' +
> vS.Strings[vI]);
>
> end;
>
> end;
__________ Informação do NOD32 IMON 3684 (20081211) __________
Esta mensagem foi verificada pelo NOD32 sistema antivírus
http://www.eset.com.br
[As partes desta mensagem que não continham texto foram removidas]