• Miércoles 1 de Mayo de 2024, 08:31

Autor Tema:  ¿cuál Es La Diferencias De Estos Códigos?  (Leído 1132 veces)

Deiv

  • Miembro activo
  • **
  • Mensajes: 67
  • Nacionalidad: bo
    • Ver Perfil
¿cuál Es La Diferencias De Estos Códigos?
« en: Martes 3 de Julio de 2007, 17:19 »
0
Estoy intentando capturar elementos no repetidos de una forma muy distinta sin utilizar Distinct de SQL 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 este otro?:
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?