Programación General > Delphi
¿cuál La Diferencia De Estos Códigos?
(1/1)
Deiv:
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 ---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:
--- 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?
lencho:
este hilo, no deberia estar en Delphi ????.
BYTE.
F_Tanori:
--- Cita de: "Deiv" ---¿Por qué la línea:
--- Código: Text ---if (B.IndexOf(FieldByName('Tipo').AsString)= -1) then
NO TRABAJA IGUAL QUE:
--- 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?
--- Fin de la cita ---
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
Deiv:
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.
Deiv:
Auí está la solución:
--- Código: Text ---with ADOQuery1 do begin first; while not eof do begin if (B.IndexOf(FieldByName('Tipo').AsString)=-1) then begin B.Add(FieldByName('Tipo').AsString); A[x]:=FieldByName('Tipo').AsString; inc(x); end; next; end; end; Fin.
Navegación
Ir a la versión completa