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é?
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;
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:if (B.IndexOf(FieldByName('Tipo').AsString)= -1) then
No Trabaja Igual que este otro?:if (ComboBox1.Items.IndexOf(FieldByName('Tipo').AsString)= -1) then
¿Cómo corregir el segundo código para que trabaje como el primero?