PDA

Ver la Versión Completa : Ayuda con ListBox Urgente ...


Ricomarz
02-03-2007, 08:21:42
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:


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 (http://www.clubdelphi.com/foros/guiaestilo.php) 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í


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
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
Ciertamente Dec y
Segun Roman usando la variable campos sería:
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?


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
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
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 (http://www.clubdelphi.com/foros/showpost.php?p=186100&postcount=5) :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