Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-04-2015
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 415
Poder: 14
bulc Va por buen camino
Me sale I/O error 125, ¿qué hago mal?

Estoy practicando con TList y este código me da ese error. Por favor, ¿me podéis decir qué está mal?
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
Const
   Const_A: Array[1..6] of String =( 'a', 'b', 'c', 'd', 'e', 'f');
var
  I: Integer;
  Element: Integer;
  Lista: TList;
  Dato : String;
begin
  Memo1.Clear;
  Randomize;
  try
    Lista := TList.Create();
    try
      for I := 1 to High(Const_A) do
        begin
          Lista.Add( Pointer( I ));
        end;
     repeat
        Element := Random(Lista.Count);
        Dato := Const_A[Element];
        Memo1.Lines.Add( IntToStr (Element) +'   '+ Dato );  // Const_A[Elemento]
        Lista.Delete(Element);
      until Lista.Count = 0;
     finally
       Lista.Free;
    end;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end;
Quería hacer un TList de integers, pero no lo consigo.
Gracias por vuestra ayuda.
bulc
Responder Con Cita
  #2  
Antiguo 30-04-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola bulc.

A primera vista, dado que el índice Element dentro del repeat recibe un valor aleatorio,
Código Delphi [-]
  Element := Random(Lista.Count);
  // dado Const_A, debería ser: Element := Random(Lista.Count-1)+1;
con toda seguridad obtenga dos o mas veces el mismo valor dentro del ciclo repeat.

Esto haría que en la línea,
Código Delphi [-]
Lista.Delete(Element);
intente borrar un elemento que ya fue borrado anteriormente. Provocando una excepción del tipo List index out of bound

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 30-04-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo.

No sé el propósito del código, pero pienso que podrías hacer algo así:
Código Delphi [-]
...
begin
  Memo1.Clear;
  Randomize;
  Lista := TList.Create();
  try
    for i := Low(Const_A) to High(Const_A) do
      Lista.Add( Pointer(i) );
    for i:= Lista.Count - 1 downto 0 do
    begin
      Element := Random(Lista.Count - 1) + 1;
      Memo1.Lines.Add(Format('%d %s', [Element, Const_A[Element]]));
    end;
  finally
    for i:= Lista.Count - 1 downto 0 do
      Lista.Delete( i );
    Lista.Free;
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



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
Por qué sale el [Fatal Error]Internal Error:LA30?? Lizette Varios 13 14-01-2016 13:44:35
me sale error al ejecutar esta query teecweb MySQL 0 26-03-2013 03:13:18
Porque sale este error "Error al copiar archivo o carpeta"? JuanErasmo API de Windows 1 18-11-2009 17:24:49
Al evitar que cierren Windows, me sale la ventana de error "Finalizar Tarea" :( Wonni API de Windows 1 20-08-2007 16:02:21
query report ¿Por q sale sale solo el primer registro? acl_gandalf Impresión 2 31-03-2005 02:14:20


La franja horaria es GMT +2. Ahora son las 07:27:59.


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