Localizar Index em uma StringList

Delphi

28/07/2005

Olá pessoal,

gostaria de saber como faço pra pesquisar em uma StringList através do Index. Eu inseri os registros e atribuí um Index pra cada registro que inseri. Agora em uma outra situação, preciso verificar se nessa StringList existe um determinado Index, só que não estou conseguindo...
Só consigo através da função Find, mas nela tenho que passar o Value e o Index... Espero que possam me ajudar.

[ ]s,


Marceloneox

Marceloneox

Curtidas 0

Respostas

Beppe

Beppe

28/07/2005

Oi!

Seria SL[Indice]?


GOSTEI 0
Marceloneox

Marceloneox

28/07/2005

Oi! Seria SL[Indice]?


Seria mais ou menos assim...
se SL localizar o index ´i´ então...

Espero ter sido claro.


GOSTEI 0
Beppe

Beppe

28/07/2005

Como atribui os ´index´?


GOSTEI 0
Marceloneox

Marceloneox

28/07/2005

Como atribui os ´index´?


Eu usei o comando Insert e passei pra ele um Index e Value específico.


GOSTEI 0
Beppe

Beppe

28/07/2005

Mas um TStrings não é uma lista associativa. Os índices variam conforme vc insere ítems. Veja:

SL.Insert(0, ´A´);
SL.Insert(0, ´B´);

´A´ ficará com índice 1 agora.


GOSTEI 0
Marceloneox

Marceloneox

28/07/2005

Mas um TStrings não é uma lista associativa. Os índices variam conforme vc insere ítems. Veja: SL.Insert(0, ´A´); SL.Insert(0, ´B´); ´A´ ficará com índice 1 agora.


Entendi... Tem algum outro recurso que posso utilizar que atenda o que citei? Desde já agradeço.


GOSTEI 0
Rjun

Rjun

28/07/2005

O que realmente vc quer fazer?


GOSTEI 0
Marceloneox

Marceloneox

28/07/2005

O que realmente vc quer fazer?


Quero inserir registros em uma lista e definir o Index e o Value da mesma, pra que eu possa pesquisar nesta lista pelo Index.
Ex: Inserir valores de uma tabela e definir o Index como o Código e o Value o Nome. Depois verificar nessa lista se existe o Index(nesse caso passarei o código), se encontrar então recebe o Nome, senão recebe outro valor.

Entendeu?


GOSTEI 0
Rjun

Rjun

28/07/2005

Entendi o que você quer, mas acho que o TStringList não seria adequado para isso. Ja pensou em utilizar uma classe com essas propriedades em conjunto com TList?


GOSTEI 0
Marceloneox

Marceloneox

28/07/2005

Entendi o que você quer, mas acho que o TStringList não seria adequado para isso. Ja pensou em utilizar uma classe com essas propriedades em conjunto com TList?


Acho que vou criar um ClientDataSet temporário pra fazer isso, vai ser mais fácil. Valeu pela ajuda de todos!

[ ]s


GOSTEI 0
Adriano Santos

Adriano Santos

28/07/2005

Você pode usar um array também. O problema é pesquisar dentro dele. Vai precisar ficar fazendo loop. Acredito que a melhor solução seja um clientdataset temporário.


GOSTEI 0
Beppe

Beppe

28/07/2005

Acho que vou criar um ClientDataSet temporário pra fazer isso, vai ser mais fácil. Valeu pela ajuda de todos!

Se quiser, acho que ainda pode insistir no StringList. Claro que ClientDataSet é mais flexível, mas é mais pesado tbm.

SL.Count := NumeroDeItems;
Sl[0] := ´A´;
Sl[1] := ´B´;
Sl[2] := ´C´;
...
Sl[NumeroDeItems - 1] := ´Z´;



GOSTEI 0
José Henrique

José Henrique

28/07/2005

É possível criar uma lista associativa com StringList tal como
maçã=vermelha
limão=verde
uva=roxa

e depois usar o método .Values(´maçã´) que retornará ´vermelha´. A associação deve ser feita com o sinal de igual sem espaços.


GOSTEI 0
POSTAR