separar itens ListBox
: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!!!
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
Curtidas 0
Respostas
Bruno Belchior
14/09/2005
mas esses dados vem concatenados em uma string?
GOSTEI 0
Castor Troy
14/09/2005
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
Desde já muito obrigado
GOSTEI 0
Cabelo
14/09/2005
[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..
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..
GOSTEI 0
Castor Troy
14/09/2005
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
Muito obrigado pela atenção
GOSTEI 0
Cabelo
14/09/2005
[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..
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..
GOSTEI 0
Castor Troy
14/09/2005
E como eu usaria o POS nesse caso que você me falou?? É isso que eu quero fazer!!!
Muito obrigado
Muito obrigado
GOSTEI 0
Bruno Belchior
14/09/2005
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...
GOSTEI 0
Cabelo
14/09/2005
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é +
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é +
GOSTEI 0
Castor Troy
14/09/2005
Galera, muito obrigado pelas dicas, vou testá-las!!!!!
Muito obrigado!!
Muito obrigado!!
GOSTEI 0
Cabelo
14/09/2005
[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..
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..
GOSTEI 0
Bruno Belchior
14/09/2005
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...
GOSTEI 0
Bruno Belchior
14/09/2005
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...
GOSTEI 0
Cabelo
14/09/2005
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..
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..
GOSTEI 0
Bruno Belchior
14/09/2005
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...
GOSTEI 0
Cabelo
14/09/2005
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..
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..
GOSTEI 0
Bruno Belchior
14/09/2005
Mas a questão de índice não é segredo... pois os objetos estariam também no mesmo array do ListBox... ao invés de acessarAcessaria:E no caso de remover um item no ListBox você teria de se preocupar com remover também do vetor e o mais complicado seria uma reordenação dos itens do ListBox ter que refletir também na ordem do array...
bom mais isso é uma opnião minha... não sou dono da verdade... só [b:488ffba617]acho[/b:488ffba617] que seria mais viável... :lol:
ListBox.Items[1]
ListBox.Items.Objects[1]
bom mais isso é uma opnião minha... não sou dono da verdade... só [b:488ffba617]acho[/b:488ffba617] que seria mais viável... :lol:
GOSTEI 0