![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
Una pregunta, si quieres leer un fichero y mostrarlo en un stringgrid, ¿por qué lo cargas en el richedit de intermediario?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#2
|
|||
|
|||
|
Pues en principio lo hice por comodidad, ya que con el LoadFromFile ya leo perfectamente el csv teniendo en cuenta los saltos de linea, y me coloca 1 registro por linea en el RichEdit, lo cual facilita luego la lectura para el StringGrid.
Piensas que la lentitud es a causa de leer el RichEdit? quizás leyendo directamente desde el archivo puede ser mas rápido? Si es asi como crees que podria leer desde el archivo caracter a caracter para tener en cuenta las mismas cosas? Gracias por tu interes ![]() |
|
#3
|
||||
|
||||
|
Hola ErYcK.
Si no entendí mal lo que deseas hacer, se me ocurre que podrías cambiar el separador ';' por ',' y aprovechar la propiedad CommaText del TStringGrid. Fijate si de este modo hace mas rápido lo que buscas: Código:
void __fastcall TForm1::Button1Click(TObject *Sender) {
TStringList *TS = new TStringList;
TStringGrid *SG = static_cast<TStringGrid*> (StringGrid1);
if (OpenDialog1->Execute()) {
TS->LoadFromFile(OpenDialog1->FileName);
for(int i=0; i< TS->Count; i++) {
StringReplace(TS->Strings[i], ';', ',', TReplaceFlags() << rfReplaceAll);
SG->Rows[i]->CommaText = TS->Strings[i];
}
}
delete TS;
}
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
|
#4
|
|||
|
|||
|
Gracias por tu aporte ecfisa, el problema es que algunos campos llevan ',' entonces necesito el ';' como separador, sino me crearía conflictos.
Por ejemplo hay un campo fotos en el cual hay 6 nombres de fotos separados con ',' entonces me metería 6 campos distintos donde debe ser solo uno. Este mismo proceso lo hice en principio utilizando el componente Memo, y lo hacia más rápido pero me vi obligado a cambiarlo porque llegara el límite de caracteres del Memo, no termino de entender porque con el RichEdit se ralentiza tanto, en principio pensé que el problema estaba en que siempre recorría al completo los campos del RichEdit y de por ese motivo utilice el contador para que una vez encuentre 2 espacios seguidos me me salga del bucle, pero no consigo acelerarlo suficiente con eso. De nuevo gracias por vuestra atención. |
|
#5
|
||||
|
||||
|
Hola ErYcK.
A ver, proba si te sirve de este modo: Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (OpenDialog1->Execute()) {
TStringList *TS = new TStringList;
TS->LoadFromFile(OpenDialog1->FileName);
for(int i=0; i< TS->Count; i++)
ExtractStrings(TSysCharSet()<< ';', TSysCharSet() << ' ',
TS->Strings[i].c_str(), StringGrid1->Rows[i]);
delete TS;
}
}
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
|
#6
|
|||
|
|||
|
Buenísimo el aporte ecfisa, me acelera muchísimo el proceso y en principio va bien, el único fallo es que la base de datos de la empresa tiene ciertos fallos, como por ejemplo que algunos de los campos no están, por ejemplo algunos de los registros son algo así:
referencia;estado;producto;categoria;categoria1;categoria2;categoria3; descripción 11234;;producto1;hogar; electrodomésticos;Lavadoras;;lavadora ultimo modelo tal y tal; Es decir algunos campos vienen vacíos, con lo cual se genera en el csv dos ';' seguidos y lo que hace es meterme en el estado, la categoría. No se si me he explicado bien, el tema es que cuando se encuentran dos ';' seguidos ha dejar esa celda vacía, estoy dándole vueltas al código que me pusiste e intento dar con la tecla para tener eso en cuenta pero me da ami que no puede ser de esa forma, aunque no lo se. Si se te ocurre algo seria de gran ayuda. Gracias por el esfuerzo. |
|
#7
|
||||
|
||||
|
Hola de nuevo.
Cita:
Código:
ExtractStrings(TSysCharSet()<< ';', TSysCharSet() << '\0',
TS->Strings[i].c_str(), StringGrid1->Rows[i])
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Lentitud en ADO | JF Sebastian | Conexión con bases de datos | 0 | 16-03-2008 11:06:26 |
| Lentitud Firebird | mjjj | Conexión con bases de datos | 16 | 13-01-2008 17:35:06 |
| Lentitud en la red. | Carlos Arevalo | Varios | 2 | 09-07-2007 19:04:08 |
| Lentitud en la red | Ignacio | Conexión con bases de datos | 2 | 26-08-2003 14:09:39 |
|