Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-12-2014
pabloe9k pabloe9k is offline
Registrado
NULL
 
Registrado: oct 2013
Posts: 5
Poder: 0
pabloe9k Va por buen camino
Question Pasar una cadena (string) a una lista (tstringlisg) según delimitador

Hola.
Les hago una consulta: tengo una cadena (string) con un texto asignado. Este texto contiene una serie de caracteres que quisiera usar como delimitadores y convertir la cadena a distintos items de una lista según este delimitador. Por ejemplo, mi cadena es

+ EBML head'#$D#$A'|+ EBML version: 1'#$D#$A'|+ EBML read version: 1'#$D#$A'|+ EBML maximum ID length: 4'#$D#$A'

y quisiera pasarlo a una lista utilizando el delmitador '#$D#$A'
El resultando sería algo como:

lista[0]:= + EBML head
lista[1]:= |+ EBML version: 1
lista[2]:=|+ EBML read version: 1
lista[3]:=|+ EBML maximum ID length: 4

Esto es muuuuuy fácil de hacer en PHP con la función "explode", pero no tengo idea de como se hace con Delphi 7.
Podrán ayudarme, por favor?

Gracias.
Slds.
Responder Con Cita
  #2  
Antiguo 18-12-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Ejemplo visual con TMemo (puedes hacer lo mismo con un TStringList):
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Text:= '+ EBML head'+#$D#$A+'|+ EBML version: 1'+#$D#$A+'|+ EBML read version: 1'+#$D#$A+'|+ EBML maximum ID length: 4'+#$D#$A;
end;

Saludos.
Responder Con Cita
  #3  
Antiguo 18-12-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
pabloe9k,

Cita:
Empezado por pabloe9k
...Pasar una cadena string (+ EBML head#$D#$A|+ EBML version: 1#$D#$A|+ EBML read version: 1#$D#$A|+ EBML maximum ID length: 4#$D#$A) a una lista TStringList según delimitador (#$D#$A)....


Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
   InputString = '+ EBML head' + #$D#$A +
                 'EBML version: 1' + #$D#$A +
                 'EBML read version: 1' + #$D#$A +
                 '|+ EBML maximum ID length: 4' + #$D#$A;

var
   SL : TStringList;
   i : Integer;

begin
   SL := TStringList.Create;
   ExtractStrings([#$D,#$A],[],InputString,SL);
   for i := 0 to SL.Count - 1 do
      ShowMessage(SL[i]);
   SL.Free;
end;

end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, carga el texto contenido en la variable InputString a un TStringList usando como delimitador #$D#$A y muestra cada uno de los elementos individuales.

Revisa esta información:
Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 18-12-2014 a las 06:41:37.
Responder Con Cita
  #4  
Antiguo 18-12-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Teniendo en cuenta que la cadena mostrada por pabloe9k contiene como delimitador $D#$A y sabiendo que jústamente representan retorno de carro + avance de línea (CRLF), un TStringList parte directamente el texto en las líneas correspondientes sin más código que una simple asignación.

Saludos.
Responder Con Cita
  #5  
Antiguo 18-12-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.054
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por escafandra Ver Mensaje
Teniendo en cuenta que la cadena mostrada por pabloe9k contiene como delimitador $D#$A y sabiendo que jústamente representan retorno de carro + avance de línea (CRLF), un TStringList parte directamente el texto en las líneas correspondientes sin más código que una simple asignación. Saludos.
Exactamente, no hay que hacer nada.
Responder Con Cita
  #6  
Antiguo 18-12-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
escafandra,

Cita:
Empezado por escafandra
...un TStringList parte directamente el texto en las líneas correspondientes sin más código que una simple asignación...
Es correcto

Cita:
Empezado por pabloe9k
...Esto es muuuuuy fácil de hacer en PHP con la función "Explode", pero no tengo idea de como se hace con Delphi 7...
La idea era mostrar que existe la función ExtractStrings de Delphi equivalente a la función Explode de PHP con la cual se puede hacer Split de texto en función de diversos delimitadores, ciertamente hubiera sido suficiente hacer:
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
const
   InputString = '+ EBML head' + #$D#$A +
                 'EBML version: 1' + #$D#$A +
                 'EBML read version: 1' + #$D#$A +
                 '|+ EBML maximum ID length: 4' + #$D#$A;

var
   SL : TStringList;
   i : Integer;

begin
   SL := TStringList.Create;
   SL.Text := InputString;
   for i := 0 to SL.Count - 1 do
      ShowMessage(SL[i]);
   SL.Free;
end;
Espero sea útil

Nelson.
Responder Con Cita
Respuesta



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
Como separar una cadena con un delimitador radge Varios 13 05-03-2016 22:52:52
Añadir carácter según una posición x a un String Ledian_Fdez OOP 3 01-08-2013 16:22:21
String a Cadena de Bytes a cadena Hexadecimal ruedabeat2003 Varios 2 11-01-2012 02:04:06
Descomponer cadena @String Alejo15x Varios 3 04-02-2010 03:23:21
Recorrer un string y actuar segun palabras leidas vcs Varios 16 14-11-2008 14:51:31


La franja horaria es GMT +2. Ahora son las 02:37:27.


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