Programación General > Delphi

 ¿cuál Es La Diferencias De Estos Códigos?

(1/1)

Deiv:
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 ---procedure TForm1.FormCreate(Sender: TObject);type  UnArray = array[0..100] of string;var  i,j,x:  integer;  A:UnArray;const  sqlElementos = ' Select * from elementos ';begin  x:=0;  ADOQuery1.Active:= False;  ADOQuery1.Sql.text:= sqlElementos;  ADOQuery1.Active:= True;  with ADOQuery1 do    begin      first;      while not eof do        if (ComboBox1.Items.IndexOf(FieldByName('Tipo').AsString)=-1)then            begin               ComboBox1.Items.Add(FieldByName('Tipo').AsString);               A[x]:=FieldByName('Tipo').AsString;               inc(x);           end;        next;    end;end; 

--- Código: Text ---procedure TForm1.FormCreate(Sender: TObject);type  UnArray = array[0..100] of string;var  i,j,x:  integer;  A:UnArray;  B:TStringList;const  sqlElementos = ' Select * from elementos ';begin  x:=0;  B:= TStringList.Create;  ADOQuery1.Active:= False;  ADOQuery1.Sql.text:= sqlElementos;  ADOQuery1.Active:= True;  with ADOQuery1 do    begin      first;      while not eof do        if (B.IndexOf(FieldByName('Tipo').AsString)=-1) then           begin              ComboBox2.Items.Add(FieldByName('Tipo').AsString);              A[x]:= FieldByName('Tipo').Value;              inc(x);              next;           end;    end;end; ¿Por qué la línea:

--- Código: Text ---if (B.IndexOf(FieldByName('Tipo').AsString)= -1) then No Trabaja Igual que este otro?:

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

Navegación

[0] Índice de Mensajes

Ir a la versión completa