Fórum separar itens ListBox #295419

14/09/2005

0

:D Bom dia galera,

Minha dúvida é a seguinte: Tenho um listbox onde recebo em uma mesma linha as informações [b:19f16bee92]TELEFONE IP USER[/b:19f16bee92], gostaria de estar pegando essa linha de informações e guardando cada item em uma variável. Como fazer isso???

Exemplo:

a:= telefone
b:= ip
c:= user

Gostaria de quebrar essas informações!!!

Desde já muito obrigado!!!


Castor Troy

Castor Troy

Responder

Posts

14/09/2005

Bruno Belchior

mas esses dados vem concatenados em uma string?


Responder

Gostei + 0

14/09/2005

Castor Troy

Não, eles estão dentro de um listbox normal. Eu tenho várias linhas que contém o TELEFONE IP USER, e gostaria de separá-los, pois pretendo guradar em um banco essas informações.

Desde já muito obrigado


Responder

Gostei + 0

14/09/2005

Cabelo

[quote:80b4d2b406=´Castor Troy´]Não, eles estão dentro de um listbox normal. Eu tenho várias linhas que contém o TELEFONE IP USER, e gostaria de separá-los, pois pretendo guradar em um banco essas informações.

Desde já muito obrigado[/quote:80b4d2b406]

:shock: ?????

[quote:80b4d2b406=´Bruno Belchior´]mas esses dados vem concatenados em uma string?[/quote:80b4d2b406]

[quote:80b4d2b406=´Castor Troy´]Não, eles estão dentro de um listbox normal. Eu tenho várias linhas que contém o TELEFONE IP USER, e gostaria de separá-los, pois pretendo guradar em um banco essas informações.

Desde já muito obrigado[/quote:80b4d2b406]

Então eles vem em um só string..

Se é assim como vc diz.. vc terá que ´fatiar´ a string.. para poder armazenar os dados.. ou armazená-los previamente em três list box distintos..


Responder

Gostei + 0

14/09/2005

Castor Troy

Deixa eu explicar melhor: Imagine um memo com várias linhas e com esse 3 dados que citei acima em cada linha. Eu queria realmete ´fatiar´ os dados das linhas e guardar cada dado desse em uma váriavel e futuramente cada um em um campo do meu banco (Ex: Campo tel, ip, user).

Muito obrigado pela atenção


Responder

Gostei + 0

14/09/2005

Cabelo

[quote:bd65801896=´Castor Troy´]Deixa eu explicar melhor: Imagine um memo com várias linhas e com esse 3 dados que citei acima em cada linha. Eu queria realmete ´fatiar´ os dados das linhas e guardar cada dado desse em uma váriavel e futuramente cada um em um campo do meu banco (Ex: Campo tel, ip, user).

Muito obrigado pela atenção[/quote:bd65801896]

uma opção, seria na hora de ´popular´ o list box, vc colocar os labels..

exe :

Nome : Teste 1 IP : 192.168.1.1 User : T
Nome : Teste2 IP : 192.168.1.2 User : T2

desta forma vc iria ter uma referência para usar a função POS do delphi..

senão.. pq vc não ´popula´ 3 listbox independentes..?

um para cada opção..

aí quando precisar armazenar os dados.. vc usaria o número do item de cada listbox selecionado.. mas sempre usando a mesma linha nos três list..

espero ter ajudado..


Responder

Gostei + 0

14/09/2005

Castor Troy

E como eu usaria o POS nesse caso que você me falou?? É isso que eu quero fazer!!!

Muito obrigado


Responder

Gostei + 0

14/09/2005

Bruno Belchior

acho que seria uma idéia melhor (e mais confiável) na ´população´ do ListBox, guardar essas informações no Tipo [b:aa337f582c]TObject[/b:aa337f582c] que cada nó do [b:aa337f582c]TStrings[/b:aa337f582c] do ListBox contém...


Responder

Gostei + 0

14/09/2005

Cabelo

Acho que assim funciona...

se não funcioner deve ser algum ajuste pequeno..

for v_i := 0 to ListBox1.Items.Count - 1 do
begin
if POS(´Nome :´, ListBox1.Items.Strings[v_i]) > 0 then
begin
v_nome := Copy(ListBox1.Items.Strings[v_i],
POS(´Nome :´, ListBox1.Items.Strings[v_i]) + 7,
POS(´IP :´, ListBox1.Items.Strings[v_i]) -
POS(´Nome :´, ListBox1.Items.Strings[v_i]));
end;
if POS(´IP :´, ListBox1.Items.Strings[v_i]) > 0 then
begin
v_nome := Copy(ListBox1.Items.Strings[v_i],
POS(´IP :´, ListBox1.Items.Strings[v_i]) + 5,
POS(´USER :´, ListBox1.Items.Strings[v_i]) -
POS(´IP :´, ListBox1.Items.Strings[v_i]));
end;
if POS(´USER :´, ListBox1.Items.Strings[v_i]) > 0 then
begin
v_nome := Copy(ListBox1.Items.Strings[v_i],
POS(´USER :´, ListBox1.Items.Strings[v_i]) + 7,
Length(ListBox1.Items.Strings[v_i]) -
POS(´USER :´, ListBox1.Items.Strings[v_i]));
end;
end;

até +


Responder

Gostei + 0

14/09/2005

Castor Troy

Galera, muito obrigado pelas dicas, vou testá-las!!!!!

Muito obrigado!!


Responder

Gostei + 0

14/09/2005

Cabelo

[quote:ff40fb7d5c=´Bruno Belchior´]acho que seria uma idéia melhor (e mais confiável) na ´população´ do ListBox, guardar essas informações no Tipo [b:ff40fb7d5c]TObject[/b:ff40fb7d5c] que cada nó do [b:ff40fb7d5c]TStrings[/b:ff40fb7d5c] do ListBox contém...[/quote:ff40fb7d5c]

Não daria certo, pois se a string quando for populada contiver espaços em branco, seria entendido como ´nó´ no TStrings, e isto iria acarretar um erro de alocação de memória..

lembre-se que você deve utilizar o TStrings como um vetor, que ocupa posições e não uma matriz que ocupam linha e posições..


Responder

Gostei + 0

14/09/2005

Bruno Belchior

Quando disse isso pensava na seguinte forma... imagino que o colega está concatenando esses campos antes de adicioná-los no [b:90628e4358]ListBox[/b:90628e4358]... nesse momento ele armazena os valores separados em uma Classe de persistência criada por ele (que contenha as três propriedades que ele deseja separar) e armazene para cada linha do ListBox um objeto associado a ela (com a função [b:90628e4358]AddObject[/b:90628e4358] do objeto TStrings do ListBox)... uma vez precisando dos valores, ele consulta o array de objetos do ListBox fanzendo um [b:90628e4358]TypeCasting[/b:90628e4358] e trabalhando normalmente com o objeto armazenado na mesma...


Responder

Gostei + 0

14/09/2005

Bruno Belchior

Vale lembrar que o Objeto [b:3af807b6cf]TString[/b:3af807b6cf] não destrói os objetos associados a seus nós... isso deverá ser feito explicitamente antes de liberar o mesmo...


Responder

Gostei + 0

15/09/2005

Cabelo

Aí sim.. se for feito antes de ´popular´ o ListField..

mas daria muito trabalho usar o TObject.

Não seria mais fácil armazená-los em um vetor do tipo record, somente string com o nome, ip e USER, e depois armazenar somente as linhas do vetor que coincidirem com as linhas selecionadas no listBox??

acredito ser mais leve, rápido e mais fácil de desenvolver..


Responder

Gostei + 0

15/09/2005

Bruno Belchior

a questão é: dessa forma, o record não estaria associado com o ListBox, os nós de ambos não teriam associação... quanto à complexidade, acho q não e tão inviável assim...


Responder

Gostei + 0

15/09/2005

Cabelo

Claro que teria..

O vetor tipo record, tem index...

assim como o listbox..

é só implementar ele de acordo com o listbox..

depois usa o index do listbox, para gravar os dados do record no BD..

E fica muito mais leve, pois estaria criando um vetor de string, que seria melhor que mexer com persistências..


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar