Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-02-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 24
ixMike Va por buen camino
Cita:
Empezado por keyboy Ver Mensaje
Eso explota pero por usar un TStrings en lugar de un TStringList.

Bye
Eso explota porque al hacer ListBox1.Items:=Lista y después liberar Lista, al intentar al acceder a ListBox1.Items... Error Acces violation bla bla bla porque ya no existe, ¡lo he liberado!


Salu2.
Responder Con Cita
  #2  
Antiguo 09-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Parece que no leíste el código que puse en el post #9 de este hilo. Ahora veo que solo seguís suponiendo que explotaría... pero en realidad no pasa. Te invito a comprobarlo.

Código Delphi [-]
var
  Lista: TStrings;
begin
  Lista := TStringList.Create();
  try
    Lista.Add('A que no exploto!!!');
    Listbox1.Items:=Lista;
  finally
    Lista.Free;
  end;
  try
    ShowMessage(ListBox1.Items[0]);
  except
    ShowMessage('Explotó!');
  end;
end;

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate

Última edición por jachguate fecha: 09-02-2008 a las 03:25:56. Razón: Corregir ShowMessage
Responder Con Cita
  #3  
Antiguo 09-02-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 24
ixMike Va por buen camino
Cita:
Empezado por jachguate Ver Mensaje
Parece que no leíste el código que puse en el post #9 de este hilo. Ahora veo que solo seguís suponiendo que explotaría... pero en realidad no pasa. Te invito a comprobarlo.
Es cierto, pero, ¡si a mí me pasaba!

Mí no entender.


Edito: creo recordar que me pasaba entre objetos TStrings, no con la propiedad Items.
Responder Con Cita
  #4  
Antiguo 09-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
No lo tengo a mano ahora para confirmarlo... pero estoy seguro que esto es así desde Delphi 1.

Quizás te pasaba con Turbo Pascal..

Un saludo.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 09-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por jachguate Ver Mensaje
No lo tengo a mano ahora para confirmarlo... pero estoy seguro que esto es así desde Delphi 1.

Quizás te pasaba con Turbo Pascal..

Un saludo.

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
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #6  
Antiguo 09-02-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 24
ixMike Va por buen camino
Cita:
Empezado por egostar Ver Mensaje
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é
Responder Con Cita
  #7  
Antiguo 09-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Cita:
Empezado por egostar Ver Mensaje
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #8  
Antiguo 09-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por jachguate Ver Mensaje
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
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #9  
Antiguo 09-02-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 22
keyboy Va por buen camino
Cita:
Empezado por jachguate Ver Mensaje
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
Responder Con Cita
  #10  
Antiguo 09-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por ixMike Ver Mensaje
Eso explota porque al hacer ListBox1.Items:=Lista y después liberar Lista, al intentar al acceder a ListBox1.Items... Error Acces violation bla bla bla porque ya no existe, ¡lo he liberado!


Salu2.
Amigo ixMike, que quieres decir con intentar acceder a ListBox1.Items, si liberas Lista el ListBox1.Items ya cargo lo que tuviese Lista, asi que no veo donde este el error de acceso.

Prueba este código, funciona sin problemas y accedes al ListBox tantas veces quieras y Lista ya está "liberada".......

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
    procedure ListBox1DblClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Lista: TStrings;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Lista := TStringList.Create;
  with Lista do begin
    Add('This example uses A string List.');
    Add('It is the easiest way to add strings');
    Add('to a combobox''s list of strings.');
    Add('Always remember TStrings.Create method');
    Add('is abstract; So use TStringList.Create');
    Add('method instead.');
  end;
  Listbox1.Items := Lista;
  Lista.Free;
end;

procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
  ShowMessage(ListBox1.Items.Strings[ListBox1.ItemIndex]);
end;

end.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #11  
Antiguo 09-02-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 24
ixMike Va por buen camino
Cita:
Empezado por egostar Ver Mensaje
Amigo ixMike, que quieres decir con intentar acceder a ListBox1.Items, si liberas Lista el ListBox1.Items ya cargo lo que tuviese Lista, asi que no veo donde este el error de acceso.

Prueba este código, funciona sin problemas y accedes al ListBox tantas veces quieras y Lista ya está "liberada".......

Salud OS
se te adelantó jachguate

De todas formas, Items no es una variable tipo dato a la que se le asignes un número, un carácter... sino que es un objeto... creo que ahí estaba mi jaleo mental

Gracias a los dos.


Añado: me pasaba con Delphi 3, pero ya digo, puede que fuera entre objetos TStrings, o algo así...
Responder Con Cita
  #12  
Antiguo 09-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Fantástico, ¿no?
¿Por qué crees que he dicho esto antes?

Cita:
Empezado por yo mero
Gracias al estupendo trabajo del equipo de desarrollo de la VCL!
...
¡gracias, chavales! Por eso es un placer programar en Delphi!
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #13  
Antiguo 09-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por ixMike Ver Mensaje
se te adelantó jachguate
Es verdad, es que jachguate ya trae varias copas encima jejeje

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #14  
Antiguo 09-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Cita:
Empezado por egostar Ver Mensaje
Es verdad, es que jachguate ya trae varias copas encima jejeje

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



pd. estoque=aliento.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #15  
Antiguo 09-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por jachguate Ver Mensaje
quta!!!! ¿tan fuerte es el estoque?



pd. estoque=aliento.
Hey amigo, que a mi no me engañas, se de tus habilidades para ingerir cervecitas, traes doble tanque de combustible.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #16  
Antiguo 09-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Cita:
Empezado por egostar Ver Mensaje
Hey amigo, que a mi no me engañas, se de tus habilidades para ingerir cervecitas, traes doble tanque de combustible.

Salud OS
¿alegre aquel día, no?

Por cierto... sigo pendiente con el asunto del mezcal..
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
agregar y/o eliminar items de un listbox a partir de otro listbox Goyo PHP 2 27-09-2007 16:46:30
Llenar un listbox con 3 columnas manel660 OOP 4 14-06-2007 21:05:46
Recuperar Fuentes JODELSA Varios 2 26-01-2007 22:01:33
trabajo con fuentes gustavoh .NET 0 28-08-2006 14:13:31
Fuentes de microsoft en la red !!! abel Noticias 11 19-02-2004 15:25:37


La franja horaria es GMT +2. Ahora son las 08:31:06.


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
Copyright 1996-2007 Club Delphi