PDA

Ver la Versión Completa : Error (List Index of bounds)?


DM2005
08-07-2006, 04:57:35
Hola a todos, volviendo a utilizar un poco de ayuda, necesitaria saber pq en mi aplicacion tengo el siguiente error cuando hago doble clique sobre m ListBox:

" List Index of bounds (-1) "


esta es mi procedure:

procedure TFormForm01.FormCreate(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('C:\teste\IPCapitulo.txt');
end;


procedure TFormForm01.ListBox1DblClick(Sender: TObject);
begin
Panel2.Visible := True;
begin
Panel2.Caption := ListBox1.Items.Strings[ListBox1.ItemIndex];
end;
end;


gracias y hasta pronto...

madriles
08-07-2006, 09:52:01
hola
el codigo tal como lo pones funciona perfectamente, no hay ningun error, te pongo la prueba que he hecho


unit Unit1;

interface

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

type
TForm1 = class(TForm)
Panel1: TPanel;
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
procedure ListBox1DblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('C:\hola.txt');
end;

procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
Panel1.Visible := True;
begin
Panel1.Caption := ListBox1.Items.Strings[ListBox1.ItemIndex];
end;
end;

end.


no se de donde te puede venir el fallo, aunque supongo que puede estar en el texto que quieres cargar, revisalo y nos cuentas

un saludo

dec
08-07-2006, 12:53:29
Hola,

El código fuente que refieres es correcto salvo por el detalle que el error muestra: el índice requerido (el elemento de la lista requerido) puede no existir, por ejemplo, porque puedes hacer "doble-clic" en la lista sin que ningún elemento de la misma esté seleccionado.

Tú no estás comprobando ese detalle y de ahí el problema. ¿Cómo comprobarlo? Bueno. Una solución podría ser:


procedure TFormForm01.ListBox1DblClick(Sender: TObject);
begin
if ListBox1.ItemIndex <> -1 then
begin
Panel2.Visible := True;
Panel2.Caption := ListBox1.Items.Strings[ListBox1.ItemIndex];
end;
end;