Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   caracteres en un listbox (https://www.clubdelphi.com/foros/showthread.php?t=53255)

ZayDun 15-02-2008 13:41:34

caracteres en un listbox
 
Hola! ante todo gracias por molestaros en leer mi problema.

Tengo un listbox con varias lineas alguna de ellas no me valen para nada y me gustaria saber como puedo eliminarlas. por ejemplo...

Articulo-132
Articulo-253
%633 ...
Articulo-654
=spsdf-
Articulo-333

Los articulos son validos y siempre comienzan por el mismo nombre "Articulo" dependiendo despues de su referencia "-xxx" lo que intento hacer es que recorrar todo el listbox y si no contiene el texto Articulo elimine la linea, pero no soy capaz de lograrlo. espero que me ayudeis

eduarcol 15-02-2008 13:58:16

Lb = Listbox
nid = Indice o Contador

Código Delphi [-]
var
   nId: Integer;
begin
   for nId := 0 to lb.Items.Count do
   begin
      if Copy(lb.Items.String[nId], 1, 9) <> 'Articulo-' then
         lb.Items.Delete(nId);
   end;
end;


pd. esta de memoria, no lo he probado espero te sirva

dec 15-02-2008 14:01:41

Hola,

Código Delphi [-]
var
  i: integer;
begin
  for i := Listbox1.Items.Count - 1 downto 0 do begin
    if Pos('Articulo', Listbox1.Items[i]) = 0 then
      Listbox1.Items.Delete(i);
  end;
end;

ixMike 15-02-2008 14:32:16

Hola,

para quien no entienda la modificación de dec (que ya se podía haber explicado :D) es sencillo: El método de eduarcol recorría del primer hasta el último item comprobando... esto está mal, porque en cuanto borre uno, la cantidad de items y la posición de los que vienen después varía, por lo que se vuelve imprevisible y hasta dará un error (o más de uno :p)

En cambio, si lo hacemos como dec, del último al primero, esto no pasa, ya que los que están antes del que se ha borrado no se mueven.


Salu2 :)

eduarcol 15-02-2008 14:50:58

Cita:

Empezado por ixMike (Mensaje 266144)
Hola,

para quien no entienda la modificación de dec (que ya se podía haber explicado :D) es sencillo: El método de eduarcol recorría del primer hasta el último item comprobando... esto está mal, porque en cuanto borre uno, la cantidad de items y la posición de los que vienen después varía, por lo que se vuelve imprevisible y hasta dará un error (o más de uno :p)

En cambio, si lo hacemos como dec, del último al primero, esto no pasa, ya que los que están antes del que se ha borrado no se mueven.


Salu2 :)

upppsss :o perdon eran las 9 de la mañana me voy despertando y no me he tomado el cafe jeje, que buen pelon, gracias ixMike por aclararlo

Al González 15-02-2008 21:22:07

¡Hola a todos!

Sólo anotar que el Begin y el End en el For del ejemplo son innecesarios, y que artículo lleva acento gráfico en la letra i.

Saludos.

Al.

dec 16-02-2008 01:54:52

Hola,

Cita:

Empezado por ixMike
para quien no entienda la modificación de dec (que ya se podía haber explicado )

En realidad no modifiqué nada. Respondimos ambos al mismo tiempo.

Cita:

Empezado por Al
Sólo anotar que el Begin y el End en el For del ejemplo son innecesarios, y que artículo lleva acento gráfico en la letra i.

Son innecesarios, pero, ayudan a la legibilidad del código, en mi opinión. Por otro lado, el "Artículo" original no lleva acento y si lo "posicionas" con acento no funciona como se espera.

ixMike 16-02-2008 02:11:16

Cita:

Empezado por dec (Mensaje 266295)
Por otro lado, el "Artículo" original no lleva acento y si lo "posicionas" con acento no funciona como se espera.

¿Comor?:confused:

dec 16-02-2008 02:12:44

Hola,

Es muy sencillo. Tenemos una lista como esta:

Código:

Articulo-132
Articulo-253
%633 ...
Articulo-654
=spsdf-
Articulo-333

Si tratas de encontrar algún elemento "Artículo" en la lista no encontrarás ninguno.

PD. Lo sé porque yo "vi" el acento sin que estuviera, lo busqué, y no lo encontré...

ixMike 16-02-2008 02:15:06

Bueno, supongo que a lo que Al se refería era a poner la tilde tanto en el código como en la lista. La tilde en todas partes, ¡como debe ser! :p

Salu2.

Al González 16-02-2008 07:48:40

Cita:

Empezado por ixMike (Mensaje 266301)
Bueno, supongo que a lo que Al se refería era a poner la tilde tanto en el código como en la lista. La tilde en todas partes, ¡como debe ser! :p

Salu2.

Así es ixMike, mi observación sobre el diacrítico faltante era en relación al mensaje número uno de esta discusión y, por ende, en general a cualquier derivación de dicho mensaje donde se usase la palabra referida.

La otra observación me surgió a partir del For de Eduardo y el de David también. Es respetable el argumento de la legibilidad David, mas a mí me bastaría el sangrado que muy recomendado sabemos es para tal propósito. Claro, sólo es la opinión de este programador simplista. :)

Un abrazo.

Al.

Lepe 16-02-2008 11:34:54

Cita:

Empezado por dec (Mensaje 266295)
Son innecesarios, pero, ayudan a la legibilidad del código, en mi opinión.

Si usas cnpacks, que colorea el código fuente emparejando los begin... end (cada par de un mismo color), estructuras for, if, etc, te olvidas de esa " incomodidad.

Saludetes

eduarcol 16-02-2008 13:53:04

A mi manera de ver, siempre utilizo "begin end", por regla general siempre que un codigo tiene mas de una linea(aunque sea una solo instruccion) me parece mas legible, y no todos con los que puedas compartir o que en futuro trabajaran sobre tu codigo pueden tener instalado alguna herramienta para mejorar su legibilidad.

Lepe 16-02-2008 17:50:16

... Pero eso es problemas de ellos... no mío :D :D

En serio, un for con una sola línea de código (sin begin ni end) para mí es mucho más legible, precisamente porque visualmente con el identado, espero 1 sóla línea de código ;).

Para gustos los colores, ya sean de cnpacks o del arcoiris :D.

Saludos

Al González 16-02-2008 18:01:44

Cita:

Empezado por Lepe (Mensaje 266380)
...precisamente porque visualmente con el identado...

Creo que te refieres a sangrado o sangría. ;)

ixMike 16-02-2008 18:07:29

Cita:

Empezado por Al González (Mensaje 266387)
Creo que te refieres a sangrado o sangría. ;)

En un texto/párrafo sí, en el código mejor identar (aunque el DRAE no recoje el témino "identar" ni ninguno similar ;))

¿No crees?

eduarcol 16-02-2008 18:22:26

Cita:

Empezado por Lepe (Mensaje 266380)
... Pero eso es problemas de ellos... no mío :D :D

En serio, un for con una sola línea de código (sin begin ni end) para mí es mucho más legible, precisamente porque visualmente con el identado, espero 1 sóla línea de código ;).

Para gustos los colores, ya sean de cnpacks o del arcoiris :D.

Saludos

Es que debes diferenciar entre "una linea" y "una instruccion", no es lo mismo, en caso de una linea si lo uso sin el begin end

Lepe 16-02-2008 18:25:41

Cita:

Empezado por Al González (Mensaje 266387)
Creo que te refieres a sangrado o sangría. ;)

Si, he sangrado mucho por la herida del dedo :p, y la sangría me gusta, pero no es hora aún :D.

La verdad, pensaba que existía la palabreja. Asias por el dato.

Al González 16-02-2008 23:53:03

Cita:

Empezado por ixMike (Mensaje 266390)
En un texto/párrafo sí, en el código mejor identar (aunque el DRAE no recoje el témino "identar" ni ninguno similar ;))

¿No crees?

Discrepo totalmente. También las líneas de código son texto. Procuro llamarle a las cosas por su nombre. Además, sangrado o sangría, en inglés se escribe indent o indentation. Son traducciones perfectamente aceptadas. :)

No destrocemos más el idioma, por favor.

Saludos.

Al González.

Lepe 17-02-2008 01:14:24

Estoy totalmente de acuerdo con Al, es normal que de tanto leer en inglés la ayuda, del mismo código, nombre de propiedades, etc, acabemos usándolos en el foro, pero pensádlo bien, sin estos debates, usaríamos palabras en inglés por no saber como decirlas en español. Aquí "mismamente" el ejemplo con indent.

Una entrevista de trabajo en .... ¿spanglis? uff, no quiero ni imaginarlo. Hablemos con propiedad.

Saludos.


La franja horaria es GMT +2. Ahora son las 09:51:39.

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