Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Error (List Index of bounds)? (https://www.clubdelphi.com/foros/showthread.php?t=33498)

DM2005 08-07-2006 04:57:35

Error (List Index of bounds)?
 
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:
Código Delphi [-]
 
procedure TFormForm01.FormCreate(Sender: TObject);
begin
     ListBox1.Items.LoadFromFile('C:\teste\IPCapitulo.txt');
end;
Código Delphi [-]
 
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

Código Delphi [-]
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:

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


La franja horaria es GMT +2. Ahora son las 09:44:52.

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