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 13-11-2014
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
eliminar elementos de lista y restar valores

Hola... de nuevo

Tengo un problema con la lista, exactamente a la hora de borrar. Este es el código:

Código Delphi [-]
procedure TrForm.Eliminarseleccionado1Click(Sender: TObject);
var
  i: integer;
  list: TListItem;
  valor1: real;

begin
  for i:= 0 to lista.Items.Count -1 do
    if lista.Items.Item[i].Selected then
      begin
        list:= Lista.Items.Item[i];
        valor1:= StrToFloat(list.SubItems[Lista.Columns.Count-3]);
        label35.Caption:= FloatToStr(StrToFloat(label35.Caption)-valor1);
        lista.Items.Item[i].Delete;
        plista.Items.Item[i].Delete;
      end;
end;

* Borrar, borra los elementos seleccionados sin problemas
* A medida que borra, va restando del total a pagar.... pero:

Aquí se aplica eso del metodo LIFO en toda su extensión, y lo digo por que para que no falle, el primero en borrar tiene que ser el ultimo en entrar. Siempre y cuando seleccione desde el ultimo en entrar, todo va bien, ahora si tengo por ejemplo 5 articulos y empiezo a borrar por el primero o cualquiera que no sea el ultimo, da error "access vioation".

Lo he mirado y remirado y no lo veo, se me escapa o no se encontrar el error, siento tener que ser tan pesado pero si no os pido ayuda no avanzo.
Lo que si me gustaría, si no es mucho pedir, es que me indicarais con comentarios junto al codigo donde y por que falla.

Lo dicho, perdonad si estoy pesado.
Gracias y un saludo.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #2  
Antiguo 13-11-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
danielmj,

Cita:
Empezado por danielmj
...eliminar elementos de lista...cuando seleccione desde el ultimo en entrar, todo va bien, ahora si tengo por ejemplo 5 artículos y empiezo a borrar por el primero o cualquiera que no sea el ultimo, da error "Access Violation"...


Revisa este código:
Código Delphi [-]
 unit Unit1;
 
 interface
 
 uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, StdCtrls;
 
 type
   TForm1 = class(TForm)
     ListBox1: TListBox;
     Button1: TButton;
     procedure FormCreate(Sender: TObject);
     procedure Button1Click(Sender: TObject);
   private
     { Private declarations }
   public
     { Public declarations }
   end;
 
 var
   Form1: TForm1;
 
 implementation
 
 {$R *.dfm}
 
 procedure TForm1.FormCreate(Sender: TObject);
 var
    i : Integer;
 begin
 
    ListBox1.MultiSelect := True;
 
    for i := 0 to 10 do
       ListBox1.Items.Add('Item-' + IntToStr(i));
 end;
 
 procedure TForm1.Button1Click(Sender: TObject);
 var
    i : Integer;
 begin
    for i := ListBox1.Count - 1 downto 0 do
      if ListBox1.Selected[i] then
         ListBox1.Items.Delete(i);
 end;
 
 end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, ilustra como eliminar elementos de un TListBox en cualquier orden.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 13-11-2014 a las 23:50:38.
Responder Con Cita
  #3  
Antiguo 13-11-2014
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
Cita:
Espero sea útil
Pues si, lo ha sido nelson, gracias. Viendo tu codigo me di cuenta de donde estaba mi error, en el for. Yo lo escribía asi:

Código Delphi [-]
...
For i:= 1 - lista.items.count downto 0 do
...

Así que error mio gracias otra vez.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
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
sumar o restar valores tipo money gonza_619 Varios 8 16-09-2010 14:21:34
Mostrar lista de elementos en un Rave, o un TMemo puede ser... HombreGordo Impresión 0 10-08-2008 08:49:18
Usar un solo procedimiento almacendado para restar o sumar valores a un mismo registro Chogo Trucos 2 11-05-2007 17:39:01
Problemas al añadir elementos a una Lista en una aplicación tipo consola judoboy Varios 2 09-06-2003 13:58:48
Obtener lista de elementos de un form aom PHP 16 28-05-2003 09:52:49


La franja horaria es GMT +2. Ahora son las 07:55:47.


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