Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-08-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Eliminar el espacio como delimiter por defecto

Hola

Tengo un pequeño detalle, buscando por aquí y por allá vi que se puede cargar un TStringList con valores obtenidos desde un archivo de texto, hasta aquí todo bien, uso las propiedades Delimiter y DelimitedText de esta forma:

Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  i: Integer;
  Linea: string;
begin
  DoubleBuffered := True;
  Memo1.Lines.LoadFromFile('C:\Desarrollo\TDelphi\SGP\Documentos\Base.csv');
  for i := 0 to Memo1.Lines.Count - 1 do begin
      Linea := Memo1.Lines[i];
      Linea := StringReplace(Linea,#9,' ',[rfReplaceAll]); //Quito los caracteres Tab que no me sirven,
      Memo2.Lines.Delimiter := ';'; //Asigno punto y coma como delimiter
      Memo2.Lines.DelimitedText := Linea; //Agrego la Linea al Memo
      Memo2.Lines.Add('==========================');
  end;
end;

Ok, hasta aquí todo aparenta funcionar como debe ser, pero..... (como siempre hay un pero) sigue tomando el espacio como un delimiter, que por lo que he leído es el que traen por defecto.

Bueno, después de todo este rollo mareador, la pregunta que quiero hacer.

¿Hay manera de eliminar el espacio como delimiter?

Yo lo he resuelto cambiando el espacio por un guion bajo,

Código Delphi [-]
      Linea := StringReplace(Linea,' ','_',[rfReplaceAll]);

Pero no es lo que necesito.

Salud OS y gracias.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #2  
Antiguo 07-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola,
¿este codigo te funciona?

Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
var
   i: Integer;
   Linea: string;
begin
   DoubleBuffered := true;
   Memo1.Lines.LoadFromFile('...');
   Memo1.Lines.text := stringreplace(Memo1.Lines.text,#9,' ',[rfReplaceAll]);
   Memo2.Lines.Delimitier := ';';
   Memo2.Lines.Delimitiedtext := Memo1.Lines.Text;
end;

Última edición por coso fecha: 07-08-2008 a las 16:48:26.
Responder Con Cita
  #3  
Antiguo 07-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
y remirando...no deberia ser antes de cargar el fichero memo1.lines.delimitier:= ';'?
Responder Con Cita
  #4  
Antiguo 07-08-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por coso Ver Mensaje
Hola,
¿este codigo te funciona?

Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
var
   i: Integer;
   Linea: string;
begin
   DoubleBuffered := true;
   Memo1.Lines.LoadFromFile('...');
   Memo1.Lines.text := stringreplace(Memo1.Lines.text,#9,' ',[rfReplaceAll]);
   Memo2.Delimitier := ';';
   Memo2.Lines.Delimitiedtext := Memo1.Lines.Text;
end;
Hola coso,

Si gracias, esa es la forma simplificada de hacerlo, sin embargo en este caso necesito mostrar la información tal y como lo tiene el archivo y después hacer un listado con datos del mismo archivo, el tema es que necesito que el espacio no lo considere como delimiter por ejemplo

El Archivo tiene esta estructura:

Cita:
Juan Pérez Martínez;jpm@isp.com;Compañia Universal
Necesito que el otro memo muestre esto:

Cita:
Juan Pérez Martínez
jpm@isp.com
Compañia Universal
=================
Pero como está tomando el caracter espacio como delimiter, me hace esto

Cita:
Juan
Pérez
Martínez
jpm@isp.com
Compañia
Universal
=================
Yo estoy cambiando el espacio por un guion bajo, pero no es lo que necesito.

Cita:
Juan_Pérez_Martínez
jpm@isp.com
Compañia_Universal
=================
Espero haber sido más claro.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #5  
Antiguo 07-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Y, como te decia, ¿poniendo memo1.lines.delimitier := ';' antes de cargar el archivo? en teoria te lo tendria que cargar considerando como delimitador ese, a no ser que haya alguna otra variable.
Responder Con Cita
  #6  
Antiguo 07-08-2008
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Otra forma de como lo puedes hacer es la siguiente:

Código Delphi [-]
 
procedure TForm2.Button1Click(Sender: TObject);
var
  Linea: String;
begin
  Memo1.Lines.LoadFromFile('C:\Desarrollo\TDelphi\SGP\Documentos\Base.csv');
  Memo2.Clear;
  for Linea in Memo1.Lines do
  begin
    ExtractStrings([';'], [' '], PCHAR(Linea+';'+StringOfChar('=', 17)), Memo2.Lines);
  end;
end;
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #7  
Antiguo 07-08-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por coso Ver Mensaje
Y, como te decia, ¿poniendo memo1.lines.delimitier := ';' antes de cargar el archivo? en teoria te lo tendria que cargar considerando como delimitador ese, a no ser que haya alguna otra variable.
Hola haciendo lo que comentas me resulta esto

Cita:
Juan
Pérez;jpm@iSP.com;Av
Conocida
1254;
Salud OS y gracias
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #8  
Antiguo 07-08-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por jhonny Ver Mensaje
Otra forma de como lo puedes hacer es la siguiente:

Código Delphi [-]
 
procedure TForm2.Button1Click(Sender: TObject);
var
  Linea: String;
begin
  Memo1.Lines.LoadFromFile('C:\Desarrollo\TDelphi\SGP\Documentos\Base.csv');
  Memo2.Clear;
  for Linea in Memo1.Lines do
  begin
    ExtractStrings([';'], [' '], PCHAR(Linea+';'+StringOfChar('=', 17)), Memo2.Lines);
  end;
end;
Hey, eres mi héroe amigo jhonny, funciona perfecto, te debo una

No entiendo como funciona eso que hiciste , pero lo voy a analizar, esta muy interesante

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #9  
Antiguo 07-08-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Cita:
Empezado por egostar Ver Mensaje
Hola coso,

Si gracias, esa es la forma simplificada de hacerlo, sin embargo en este caso necesito mostrar la información tal y como lo tiene el archivo y después hacer un listado con datos del mismo archivo, el tema es que necesito que el espacio no lo considere como delimiter por ejemplo

El Archivo tiene esta estructura:


Necesito que el otro memo muestre esto:


Pero como está tomando el caracter espacio como delimiter, me hace esto



Yo estoy cambiando el espacio por un guion bajo, pero no es lo que necesito.


Espero haber sido más claro.

Salud OS
Eso se resuelve con un caracter ascii invicible.
Responder Con Cita
  #10  
Antiguo 07-08-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola egopolice, que yo sepa es así como funciona, la forma que se me ocurre para que te separe tomando en cuenta los espacios es utilizando QuoteChar.

Código Delphi [-]
  StringList.QuoteChar := ';';
  StringList.Delimiter := ' ';
  StringList.DelimitedText := ';Juan Pérez Martínez; ;jpm@isp.com; ;Compañia Universal;';

tu cadena tendría que estar de esa forma, egopolice sería mejor que reemplaces por la _ como lo estabas haciendo y despues esa _ por un espacio. O buscar otra forma sin usar Delimiter y DelimiterText.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #11  
Antiguo 07-08-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por Caro Ver Mensaje
Hola egopolice, que yo sepa es así como funciona, la forma que se me ocurre para que te separe tomando en cuenta los espacios es utilizando QuoteChar.

Código Delphi [-]
  StringList.QuoteChar := ';';
  StringList.Delimiter := ' ';
  StringList.DelimitedText := ';Juan Pérez Martínez; ;jpm@isp.com; ;Compañia Universal;';

tu cadena tendría que estar de esa forma, egopolice sería mejor que reemplaces por la _ como lo estabas haciendo y despues esa _ por un espacio. O buscar otra forma sin usar Delimiter y DelimiterText.

Saluditos
Hola amiguita Caro, si, de hecho yo tenia esa opción, pero la verdad es que trataba de simplificar el código, digo, con Delphi puedes hacer todo lo que necesitas y mas , solo que no nos sabemos todas sus bondades, con el código que posteo jhonny funciona tal y como lo soñe y con menos lineas de las que estaba haciendo, quiero decir, se cumplieron dos objetivos, simplificar el código y lograr el resultado esperado

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #12  
Antiguo 07-08-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Amigo egostar, ¿qué tu versión de Delphi no cuenta con la propiedad StrictDelimiter para el StringList?

// Saludos
Responder Con Cita
  #13  
Antiguo 07-08-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
Amigo egostar, ¿qué tu versión de Delphi no cuenta con la propiedad StrictDelimiter para el StringList?

// Saludos
Cita:
Empezado por RTFH
Description

Use this property to specify whether the Delimiter is the only value used within the DelimitedText property. If set to True, individual strings in DelimitedText are separated only by the character that is the value of Delimiter. If set to False, individual strings in DelimitedText can be separated by a space, a non-printable character, or the character that is the value of Delimiter.


Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #14  
Antiguo 08-08-2008
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
En defensa de egostar hay que decir que la propiedad StrictDelimiter es relativamente reciente. Yo la vi por primera vez en el turbo, en delphi 7 no existía
Responder Con Cita
  #15  
Antiguo 08-08-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por seoane Ver Mensaje
En defensa de egostar hay que decir que la propiedad StrictDelimiter es relativamente reciente. Yo la vi por primera vez en el turbo, en delphi 7 no existía
Gracias amigo seoane por esa defensa a mi orgullo herido

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #16  
Antiguo 08-08-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Oigan, yo no lo decía con ánimo de herir orgullos eh? Por eso cité el mensaje de Seoane, dónde queda claro que yo tampoco sabía de esa propiedad

// Saludos
Responder Con Cita
  #17  
Antiguo 08-08-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
Oigan, yo no lo decía con ánimo de herir orgullos eh? Por eso cité el mensaje de Seoane, dónde queda claro que yo tampoco sabía de esa propiedad

// Saludos
Ah bueno, siendo así me siento mejor

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #18  
Antiguo 08-08-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Cita:
Empezado por egostar Ver Mensaje
Ah bueno, siendo así me siento mejor

Salud OS
Si amigo sientate mejor.
Responder Con Cita
  #19  
Antiguo 19-07-2014
tnc tnc is offline
Registrado
NULL
 
Registrado: jul 2014
Posts: 1
Poder: 0
tnc Va por buen camino
Thumbs up funciona perfecto

Cita:
Empezado por roman Ver Mensaje
Amigo egostar, ¿qué tu versión de Delphi no cuenta con la propiedad StrictDelimiter para el StringList?

// Saludos

yo tenia el mismo problema, quería que los espacios no se tomaran como delimitador excelente comentario roman gracias
Responder Con Cita
  #20  
Antiguo 19-07-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración

Es de hace 6 años
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Eliminar espacio en blanco al final de la hoja judit25 Impresión 3 14-08-2006 18:55:14
como eliminar espacio en blanco de una ..... ronimaxh Varios 7 14-07-2006 02:42:52
Eliminar espacio vtdeleon Firebird e Interbase 3 09-05-2005 00:29:33
Eliminar espacio Luis Varios 5 11-03-2005 22:03:58
'9 ' eliminar espacio kepacha Varios 5 01-02-2005 14:31:06


La franja horaria es GMT +2. Ahora son las 02:24:06.


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