SoloCodigo

Programación General => Delphi => Mensaje iniciado por: Deiv en Lunes 2 de Julio de 2007, 15:12

Título: ¿cuál La Diferencia De Estos Códigos?
Publicado por: Deiv en Lunes 2 de Julio de 2007, 15:12
Estoy intentando capturar elementos no repetidos de una forma muy distinta sin utilizar Distinct y guardarlo en un Array, el primer código de abajo me funciona bien, pero el segundo no, ¿Por qué?
Código: Text
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. type
  3.   UnArray = array[0..100] of string;
  4. var
  5.   i,j,x:  integer;
  6.   A:UnArray;
  7. const
  8.   sqlElementos = ' Select * from elementos ';
  9. begin
  10.   x:=0;
  11.   ADOQuery1.Active:= False;
  12.   ADOQuery1.Sql.text:= sqlElementos;
  13.   ADOQuery1.Active:= True;
  14.   with ADOQuery1 do
  15.     begin
  16.       first;
  17.       while not eof do
  18.         if (ComboBox1.Items.IndexOf(FieldByName('Tipo').AsString)=-1)then
  19.            begin
  20.                ComboBox1.Items.Add(FieldByName('Tipo').AsString);
  21.                A[x]:=FieldByName('Tipo').AsString;
  22.                inc(x);
  23.            end;
  24.         next;
  25.     end;
  26. end;
  27.  

Código: Text
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. type
  3.   UnArray = array[0..100] of string;
  4. var
  5.   i,j,x:  integer;
  6.   A:UnArray;
  7.   B:TStringList;
  8. const
  9.   sqlElementos = ' Select * from elementos ';
  10. begin
  11.   x:=0;
  12.   B:= TStringList.Create;
  13.   ADOQuery1.Active:= False;
  14.   ADOQuery1.Sql.text:= sqlElementos;
  15.   ADOQuery1.Active:= True;
  16.   with ADOQuery1 do
  17.     begin
  18.       first;
  19.       while not eof do
  20.         if (B.IndexOf(FieldByName('Tipo').AsString)=-1) then
  21.            begin
  22.               ComboBox2.Items.Add(FieldByName('Tipo').AsString);
  23.               A[x]:= FieldByName('Tipo').Value;
  24.               inc(x);
  25.               next;
  26.            end;
  27.     end;
  28. end;
  29.  


¿Por qué la línea:

Código: Text
  1. if (B.IndexOf(FieldByName('Tipo').AsString)= -1) then
  2.  

NO TRABAJA IGUAL QUE:

Código: Text
  1. if (ComboBox1.Items.IndexOf(FieldByName('Tipo').AsString)= -1) then
  2.  
¿Cómo corregir el segundo código para que trabaje como el primero?
Título: Re: ¿cuál La Diferencia De Estos Códigos?
Publicado por: lencho en Martes 3 de Julio de 2007, 00:12
este hilo, no deberia estar en Delphi ????.


BYTE.
Título: Re: ¿cuál La Diferencia De Estos Códigos?
Publicado por: F_Tanori en Martes 3 de Julio de 2007, 07:50
Cita de: "Deiv"
¿Por qué la línea:

Código: Text
  1. if (B.IndexOf(FieldByName('Tipo').AsString)= -1) then
  2.  

NO TRABAJA IGUAL QUE:

Código: Text
  1. if (ComboBox1.Items.IndexOf(FieldByName('Tipo').AsString)= -1) then
  2.  
¿Cómo corregir el segundo código para que trabaje como el primero?


yo no conozco delphi :P tal vez deba venir algun especializta :P pero creo que seria logico que faltara un indice pues la el atributo se llama items  :unsure:

<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->if (ComboBox1.Items[indice].IndexOf(FieldByName('Tipo').AsString)= -1) then<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->

creo yo tal vez estoy mal


Saludos
Título: Re: ¿cuál La Diferencia De Estos Códigos?
Publicado por: Deiv en Martes 3 de Julio de 2007, 17:12
UUUppsss!  :blink:
Tienen razón, me equivoqué y no sé como borrar el hilo, ruego al moderador o trasladarlo o borrarlo, pues abriré otro similar en Delphi.
Gracias.
Título: Re: ¿cuál La Diferencia De Estos Códigos?
Publicado por: Deiv en Miércoles 1 de Agosto de 2007, 15:40
Auí está la solución:
Código: Text
  1. with ADOQuery1 do
  2.   begin
  3.     first;
  4.     while not eof do
  5.       begin
  6.           if (B.IndexOf(FieldByName('Tipo').AsString)=-1) then
  7.             begin
  8.               B.Add(FieldByName('Tipo').AsString);
  9.               A[x]:=FieldByName('Tipo').AsString;
  10.               inc(x);
  11.             end;
  12.         next;
  13.       end;
  14.   end;
  15.  
Fin.