• Lunes 23 de Diciembre de 2024, 14:19

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

Deiv

  • Miembro activo
  • **
  • Mensajes: 67
  • Nacionalidad: bo
    • Ver Perfil
¿cuál La Diferencia De Estos Códigos?
« en: Lunes 2 de Julio de 2007, 15:12 »
0
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?

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: ¿cuál La Diferencia De Estos Códigos?
« Respuesta #1 en: Martes 3 de Julio de 2007, 00:12 »
0
este hilo, no deberia estar en Delphi ????.


BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: ¿cuál La Diferencia De Estos Códigos?
« Respuesta #2 en: Martes 3 de Julio de 2007, 07:50 »
0
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
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

Deiv

  • Miembro activo
  • **
  • Mensajes: 67
  • Nacionalidad: bo
    • Ver Perfil
Re: ¿cuál La Diferencia De Estos Códigos?
« Respuesta #3 en: Martes 3 de Julio de 2007, 17:12 »
0
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

  • Miembro activo
  • **
  • Mensajes: 67
  • Nacionalidad: bo
    • Ver Perfil
Re: ¿cuál La Diferencia De Estos Códigos?
« Respuesta #4 en: Miércoles 1 de Agosto de 2007, 15:40 »
0
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.