Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda con ListBox Urgente ... (https://www.clubdelphi.com/foros/showthread.php?t=40928)

Ricomarz 02-03-2007 08:21:42

Ayuda con ListBox Urgente ...
 
Que tal quisiera que me ayudaran con este problema que tengo, les explico tengo un ListBox con los siguientes datos: matricula,digito verificador, importe, folio, fecha y estatus respectivamente:

Cita:

304358 5684 2541.10 645 2007-06-15 0
304256 2564 1564.10 564 2007-06-10 0
Lo que quiero hacer es obtener linea por linea y agregarlos a una tabla .... he intentado pero no he podido hacerlo espero puedan ayudarme por que en verdad me urge, es para un trabajo que tengo que entregar el dia lunes y necesito hacer esta parte para poder pasar a lo siguiente el generar los reportes ...

Bueno espero y me ayuden ....

Saludos Ricomarz

dec 02-03-2007 08:44:07

Hola,

Por favor, revisa la guía de estilo de estos Foros. No es esa forma de plantear preguntas aquí.

roman 02-03-2007 08:59:27

Bueno, bueno, Ricomarz, haz caso de lo que dice dec. Es que aquí estamos entre amigos y los amigos no se piden las cosas unos a otros con urgencia.

Lo que preguntas puedes resolverlo así

Código Delphi [-]
var
  Campos: TStringList;
  I: Integer;

begin
  Campos := TStringList.Create;

  try
    for I := 0 to ListBox.Items.Count - 1 do
    begin
      Campos.CommaText := ListBox.Items[i];

      Table.Edit;
      Table['matricula'] := Campos[0];
      Table['digito'] := Campos[1];
      Table['importe'] := Campos[2];
      Table['folio'] := Campos[3];
      Table['fecha'] := Campos[4];
      Table['estatus'] := Campos[5];
      Table.Post;
    end;
  finally
    Campos.Free;
  end;
end;

Es decir, cada elemento en tu ListBox lo asignas a la propiedad CommaText de un TStringList. Un TStringList es una lista de cadenas (igual que ListBox.Items); al asignar a su propiedad CommaText, el texto se desglosa por espacios y comas y cada término se pone en un item. Es decir, una cadena como "304358 5684 2541.10 645 2007-06-15 0" la convierte en una lista

304358
5684
2541.10
645
2007-06-15
0

de manera que puedes aceder a cada elemento por separado y asignarlos a tu tabla.

// Saludos

joHn je@N 02-03-2007 10:07:42

que joya!!!
 
Justamente Roman no se si creer en el destino porque jejejeje estaba investigando el similar al StringTokenizer de Java pero, en Delphi claro.
Y me encuentro con este tema.
Tengo que dar las gracias por la respuesta que das ya que no solo le servirá a
Ricomarz si no a mi tambien.

Solo un agregado. Mencionas de las palabras separadas por espacios y por comas. Un favor. Me indicarías Roman como agregar otro tipo de caracteres para poder hacer la separación de las palabras. Me refiero a que además de la comas y el espacio, pudiece utilizar #, $, & etc etc.

GRACIAS y SALUDOS

dec 02-03-2007 10:12:22

Hola,

Prueba con la propiedad "Delimiter" de la clase "TStrings". Ahí puedes indicar el caracter separador, como alguno de los que dices.

joHn je@N 02-03-2007 10:18:43

Upss
 
Ciertamente Dec y
Segun Roman usando la variable campos sería:
Código Delphi [-]
campos.Delimiter := '#&% ,';

y así los que se adapten al gusto del programador.

Gracias de todas formas Roman por mostrar el camino.

SALUDOS

Lepe 02-03-2007 12:05:52

Un apunte:

Delimiter está declarado como char, así que solo puedes usar un caracter como separador. Internamente siempre usará el espacio, así que poniendo una coma en Delimiter tendrías 2 separadores de caracteres, la coma y el espacio.

Saludos

seoane 02-03-2007 12:17:33

Ya que estamos haciendo apuntes, es verdad que se toma como separador el indicado como Delimiter (que es un char como indico Lepe) y cualquier carácter menor o igual a #32 (espacio). Sin embargo en el nuevo Turbo, el objeto TStringList cuenta con la propiedad StrictDelimiter que indica que solo se debe utilizar como separador el Delimiter y no los demás caracteres.

roman 02-03-2007 17:20:15

Si van a usar Delimiter, ¿no tendrían que usar DelimitedText en lugar de CommaText?

Cita:

Empezado por seoane
en el nuevo Turbo, el objeto TStringList cuenta con la propiedad StrictDelimiter que indica que solo se debe utilizar como separador el Delimiter y no los demás caracteres.

Es bueno saberlo, ya era hora que hicieran funcional esa propiedad.

// Saludos

roman 02-03-2007 17:21:44

Por cierto, ¿qué caracter hay antes del espacio? :p

// Saludos

seoane 02-03-2007 17:30:13

Cita:

Empezado por roman
Por cierto, ¿qué caracter hay antes del espacio? :p

El #31 :p :D

roman 02-03-2007 17:34:41

Ajá, y ¿me podrías enseñar cómo es ese caracter, no sé, una imagen de él quizá? :p

// Saludos

seoane 02-03-2007 17:53:22

¿Y tu me puedes hacer un dibujo de un "espacio"? :p

Lepe 02-03-2007 18:47:38

esto..... caracter o carácter... porque a saber el caracter que tiene dicho carácter :D :D

joHn je@N 03-03-2007 05:55:49

Ijole
 
Bueno antes que nada pido disculpas.
Y como se que estamos entre amigo programadores pues... se que las aceptarán.
Lo malo es que en lugar de ayudar, resulte perjudicando.
Mire un ejemplo en internet y como no lo puse el código en Delphi y además no explicaba sobre Delimiter como tipo Char, crei que funcionaba como en Java. Pero efectivamente es un Char.

SALUDOS :o

Lepe 03-03-2007 13:10:55

Hombre John tampoco hace falta disculparse por eso, hice la corrección por si alguien visita el hilo buscando la solución que no se lleve ideas equivocadas.... pero nada más.

Esto no es un exámen... aunque a veces si lo parece, sobre todo cuando roman te hace una pregunta directa :D (no sueles escapar airoso... tenlo en cuenta :D)

Saludos

roman 03-03-2007 16:52:02

Sólo hay una cosa imperdonable y es irle al América, aunque veo que nuestro amigo John ya sa ha corregido :D

Je, je, es broma ¿eh? ;)

// Saludos


La franja horaria es GMT +2. Ahora son las 00:31:55.

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