Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Llenar ListBox con fuentes del sistema (https://www.clubdelphi.com/foros/showthread.php?t=53056)

ixMike 09-02-2008 03:41:22

Cita:

Empezado por egostar (Mensaje 264559)
Casi estoy seguro que el problema era que usabas esto

Código Delphi [-]var Lista: TStrings; begin Lista := TStrings.Create; end;


en lugar de esto

Código Delphi [-]var Lista: TStrings; begin Lista := TStringList.Create; end;


Salud OS

No, siempre lo he hecho como dices, aunque nunca he entendido porqué :D

egostar 09-02-2008 03:41:37

Cita:

Empezado por ixMike (Mensaje 264558)
:D se te adelantó jachguate :D

:D:D:D Es verdad, es que jachguate ya trae varias copas encima jejeje

Salud OS

jachguate 09-02-2008 03:42:31

Cita:

Empezado por egostar (Mensaje 264559)
Casi estoy seguro que el problema era que usabas esto...

Eliseo: Eso "explotaría" en otro punto, pues la clase TStrings es abstracta. Te aseguro que no llegaría incluso a hacer la asignación... y no elevaría una violación de acceso sino una EAbstractError.

Te invito a cambiar el ejemplo que has puesto antes y probarlo. ;)

Un saludo.

;)

jachguate 09-02-2008 03:44:59

Cita:

Empezado por egostar (Mensaje 264563)
:D:D:D Es verdad, es que jachguate ya trae varias copas encima jejeje

Salud OS

quta!!!! ¿tan fuerte es el estoque?

:D :D :D

pd. estoque=aliento.

egostar 09-02-2008 03:46:20

Cita:

Empezado por jachguate (Mensaje 264564)
Eliseo: Eso "explotaría" en otro punto, pues la clase TStrings es abstracta. Te aseguro que no llegaría incluso a hacer la asignación... y no elevaría una violación de acceso sino una EAbstractError.

Te invito a cambiar el ejemplo que has puesto antes y probarlo. ;)

Un saludo.

;)

Si pues, por eso es que le preguntaba que queria decir con intentar acceder al ListBox, es obvio que te manda error de metodo abstracto.

Salud OS

egostar 09-02-2008 03:49:01

Cita:

Empezado por jachguate (Mensaje 264565)
quta!!!! ¿tan fuerte es el estoque?

:D :D :D

pd. estoque=aliento.

Hey amigo, que a mi no me engañas, se de tus habilidades para ingerir cervecitas, traes doble tanque de combustible. :D:D:D

Salud OS

jachguate 09-02-2008 04:05:17

Cita:

Empezado por egostar (Mensaje 264567)
Hey amigo, que a mi no me engañas, se de tus habilidades para ingerir cervecitas, traes doble tanque de combustible. :D:D:D

Salud OS

¿alegre aquel día, no?

Por cierto... sigo pendiente con el asunto del mezcal.. :D

egostar 09-02-2008 04:07:34

Cita:

Empezado por jachguate (Mensaje 264572)
¿alegre aquel día, no?

Por cierto... sigo pendiente con el asunto del mezcal.. :D

Pues el 30 de febrero amigo, ya ves que se prometio :D:D:D :eek: No digo mas........

Salud OS

jachguate 09-02-2008 04:11:06

Cita:

Empezado por egostar (Mensaje 264576)
Pues el 30 de febrero amigo, ya ves que se prometio :D:D:D :eek: No digo mas........

Salud OS

:eek::eek::eek:

Quizás después de otro par de millones (de millones) :D:D:D

keyboy 09-02-2008 05:19:58

Cita:

Empezado por jachguate (Mensaje 264564)
Eliseo: Eso "explotaría" en otro punto, pues la clase TStrings es abstracta. Te aseguro que no llegaría incluso a hacer la asignación... y no elevaría una violación de acceso sino una EAbstractError.

Esto no es del todo correcto. Si ponemos:

Código Delphi [-]
Lista := TStrings.Create;

el compilador genera una advertencia

Cita:

Constructing instance of 'TStrings' containing abstract method...
pero durante la ejecución la asignación se hace y el objeto se construye correctamente. La excepción EAbstractError saltará cuando se intente usar un método abstracto.

Bye

jachguate 09-02-2008 05:52:01

Cita:

Empezado por keyboy
pero durante la ejecución la asignación se hace

Claro que no se hace!!

En la clase TStrings son abstractos por ejemplo Add, por lo que llegaría a intentar realizar la asignación solo si no se intentara añadir ninguna cadena, y en este supuesto, los métodos Assign y AssignTo también son abstractos, por lo que el asunto siempre terminará con una EAbstractError y sin ninguna asignación realizada. Te invito a probarlo.

Código Delphi [-]
procedure TForm1.Button6Click(Sender: TObject);
var
  Lista: TStrings;
begin
  Lista := TStrings.Create();
  try
    Lista.Add('A que no exploto!!!');  //prueba también poniendo en comentario toda esta línea
    Listbox1.Items:=Lista;  //la asignación nunca llega a ocurrir.
  finally
    Lista.Free;
  end;
  try
    ShowMessage(ListBox1.Items[0]);
  except
    ShowMessage('Explotó!');
  end;
end;
Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 00:07:17.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi