Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   TStringList y Delimitadores. (https://www.clubdelphi.com/foros/showthread.php?t=77854)

ungrande87 29-02-2012 23:24:16

TStringList y Delimitadores.
 
Hola estoy trabajando en delphi 7 y basicamente lo que quiero hacer es de una cadena de texto, buscar donde se encuentran los puntos y separar dichas cadenas, para eso me dijeron que podia utilizar el TStringList, pero la verdad que nose como se utiliza ni como extraer las cadenas. Si alguien pudiese pasarme un ejemplo con un TStringList o algun componente parecido que me sirva para hacer lo que pregunte anteriormente le agradeceria muchisimo.

Y tambien me gustaria saber si alguien sabe si existen delimitadores en delphi, porque lo que necesito basicamente es delimitar donde empieza y donde termina una cadena mas alla de lo preguntado anteriormente, esto seria algo aparte.

Si pudieran ayudarme les agradeceria muchisimo!!! Saludos

Casimiro Notevi 29-02-2012 23:56:37

¿No has encontrado nada buscando por nuestros foros?, es un tema que se ha tratado en repetidas ocasiones.

ungrande87 01-03-2012 01:19:07

Cita:

Empezado por Casimiro Notevi (Mensaje 426561)
¿No has encontrado nada buscando por nuestros foros?, es un tema que se ha tratado en repetidas ocasiones.

La otra vez que tuve problemas con la base de datos no tuve problemas en encontrar la solucion porque estan bien delimitados esos temas pero este en particular no pude encontrarlo. Por eso que cree este hilo, sino no molesto a la gente. Saludos

Casimiro Notevi 01-03-2012 01:23:36

No molestas para nada :)

A ver si te sirven estos enlaces: este, este y este otro.

ungrande87 01-03-2012 01:31:46

Cita:

Empezado por Casimiro Notevi (Mensaje 426567)
No molestas para nada

A ver si te sirven estos enlaces: este, este y este otro.

Muchas gracias mañana sigo viendo este tema pero creo que con eso que me pasaste me alcanza. Gracias de verdad

ungrande87 01-03-2012 15:13:11

me sirvio mucho la ayuda que me pasaste. Ahora tengo otra pregunta:

supongamos que tengo la siguiente cadena: hola.como.estas=el.dia.de.hoy

y con el StringList logre separar por punto las siguientes partes:

hola
como
estas=el
dia
de
hoy

lo que querria hacer ahora seria establecer que un determinado caracter me marque el final de la cadena en este caso seria el =, nose si me explique bien.

y la devolucion seria:

hola
como
estas

Espero puedan ayudarme. Gracias

ungrande87 01-03-2012 17:51:14

Cita:

Empezado por ungrande87 (Mensaje 426592)
me sirvio mucho la ayuda que me pasaste. Ahora tengo otra pregunta:

supongamos que tengo la siguiente cadena: hola.como.estas=el.dia.de.hoy

y con el StringList logre separar por punto las siguientes partes:

hola
como
estas=el
dia
de
hoy

lo que querria hacer ahora seria establecer que un determinado caracter me marque el final de la cadena en este caso seria el =, nose si me explique bien.

y la devolucion seria:

hola
como
estas

Espero puedan ayudarme. Gracias

Recien acabo de darme cuenta que al espacio tambien me lo toma como separar y eso que yo puse al punto .
Cita:

como Cadena.Delimiter := '.'
porque me pasa esto????

ecfisa 02-03-2012 03:50:43

Cita:

Empezado por ungrande87 (Mensaje 426602)
Recien acabo de darme cuenta que al espacio tambien me lo toma como separar y eso que yo puse al punto . porque me pasa esto????

Hola.

Creo que a partir de Delphi 2006 existe la propiedad StrictDelimiter que soluciona ese problema. Pero para los que aún tenemos Delphi 7 hay que escribir un poco de código.

Una forma puede ser:
Código Delphi [-]
function SepararCadena(Cadena: string; const Delim: Char): TStrings;
var
  p: Integer;
begin
  Result:= TStringList.Create;
  Cadena:= Cadena + Delim;
  while Length(Cadena) > 0 do
  begin
    p:= Pos(Delim, Cadena);
    if p = Length(Cadena) then
      SetLength(Cadena,Length(Cadena)-1);
    Result.Add(Copy(Cadena, 1, p));
    Delete(Cadena, 1, p);
  end;
end;

Llamadas de ejemplo:
Código Delphi [-]
var
  Texto: string;
  TS: TStrings;
begin
  Texto:= 'Esta función, se podría haber evitado, si Delphi 7, '+
          'tuviera implementada la propiedad StrictDelimiter.';
  Memo1.Lines:= SepararCadena(Texto, ',');
  // otro ejemplo
  TS:= TStringList.Create;
  try
    TS:= SepararCadena(Texto, 'e');
    Memo1.Lines:= TS;
  finally
    TS.Free;
  end;
end;

Saludos.

Edito: ¡Al fín pude encontrar el hilo!... :) Creo que también te podría interesar esto

ungrande87 05-03-2012 21:34:15

Cita:

Empezado por ecfisa (Mensaje 426661)
Hola.

Creo que a partir de Delphi 2006 existe la propiedad StrictDelimiter que soluciona ese problema. Pero para los que aún tenemos Delphi 7 hay que escribir un poco de código.

Una forma puede ser:

Código Delphi [-]
function SepararCadena(Cadena: string; const Delim: Char): TStrings;
var
p: Integer;
begin
Result:= TStringList.Create;
Cadena:= Cadena + Delim;
while Length(Cadena) > 0 do
begin
p:= Pos(Delim, Cadena);
if p = Length(Cadena) then
SetLength(Cadena,Length(Cadena)-1);
Result.Add(Copy(Cadena, 1, p));
Delete(Cadena, 1, p);
end;
end;




Llamadas de ejemplo:

Código Delphi [-]
var
Texto: string;
TS: TStrings;
begin
Texto:= 'Esta función, se podría haber evitado, si Delphi 7, '+
'tuviera implementada la propiedad StrictDelimiter.';
Memo1.Lines:= SepararCadena(Texto, ',');
// otro ejemplo
TS:= TStringList.Create;
try
TS:= SepararCadena(Texto, 'e');
Memo1.Lines:= TS;
finally
TS.Free;
end;
end;





Saludos.

Edito: ¡Al fín pude encontrar el hilo!... :) Creo que también te podría interesar esto

Muchisimas gracias amigo me sirvio!!!


La franja horaria es GMT +2. Ahora son las 03:44:25.

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