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 09-05-2003
sergionr sergionr is offline
Registrado
 
Registrado: may 2003
Posts: 5
Poder: 0
sergionr Va por buen camino
función split en delphi

Hola a todos.

Que función es la que dado un string con caracter separador me devuelve un array.

Como la función split de PHP...?

Gracias...

Chaooooo
Responder Con Cita
  #2  
Antiguo 09-05-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 21
andres1569 Va por buen camino
Hola:

No me suena una función con ese nombre, pero imagino que sería algo así (dices que devuelve un array, supongo que te refieres a un string, que es un array of char):

Código:
function DelphiSplit (const s: string; SepChr: Char) : String;
var
  p : Integer;
begin
  p := Pos (SepChr, s);
  if p <> 0 then result := Copy (s, p + 1, Length(s) - p)
  else result := s;
end;
Saludos
Responder Con Cita
  #3  
Antiguo 09-05-2003
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
Una opción sería usar listas de cadenas y luego vaciarla al arreglo:

Código:
var
  SLista: TStringList;
  Arreglo: array of String;
  Indice: Integer;

begin
  SLista := TStringList.Create;
  SLista.Delimiter := Separador; // el separador que uses
  SLista.DelimitedText := Cadena;  // la cadena a partir

  SetLength(Arreglo, SLista.Count);
  for Indice := 0 to Pred(SLista.Count) do
    Arreglo[Indice] := SLista[Indice];

  SLista.Free;
// Saludos

pd: Este mètodo no será tan potente como el de PHP pues aquí el separador debe ser un caracter mientras que en PHP me parece que puede ser una cadena.

Última edición por roman fecha: 09-05-2003 a las 19:59:13.
Responder Con Cita
  #4  
Antiguo 23-10-2003
DJ VMan DJ VMan is offline
Miembro
 
Registrado: jun 2003
Ubicación: Iquique - Chile
Posts: 81
Poder: 21
DJ VMan Va por buen camino
hola, teniendo la misma necesidad, y buscando en el foro fue que encontré esta "función split en delphi". Lo probé y me funcionó. Pero siempre y cuando la Cadena no contenga espacios es decir
, tomando en cuenta los siguentes valores:

Cita:
var
...
...
SLista.Delimiter := ';'; // el separador que uses
SLista.DelimitedText := '0123 45670;108 4837'; // la cadena a partir
....
....
en donde Arreglo quedará con el siguiente resultado :

Arreglo[0]=>'0123'
Arreglo[1]=>'45670'
Arreglo[2]=>'108'
Arreglo[3]=>'4837'

No se supone que debiese quedar asi?:

Arreglo[0]=>''0123 45670'
Arreglo[1]=>'108 4837'


o no?...o entendí mal?
__________________
- Si tienes un problema que tiene solución ¿porque te preocupas?
- Si tienes un problema que no tiene solución ¿porque te preocupas?
Responder Con Cita
  #5  
Antiguo 06-01-2009
mcinpapr mcinpapr is offline
Registrado
 
Registrado: jun 2008
Posts: 1
Poder: 0
mcinpapr Va por buen camino
Función de Split
Nota: Esta función de Split no funciona con un Separador de varios Caracteres pero funciona muy bien con uno sólo:

-----------------------------------------------------------
// 1er Paso Declaras el Arreglo en la cabecera de tu .pas
Type TArreglo = array of String;


-------------------------------------------------------
// 2o Paso - Copias la siguiente función en tu .pas dentro del cuerpo de tu programa
Function Split (cad : String; separador : string): TArreglo;
var
tam, t, i, j : integer;
arr : TArreglo;//array of string;
begin
t:=0;
j:=0;
tam := StrLen(PChar(cad));

for i:=0 to tam -1 do
begin
if cad[i]=separador then
t:= t+1;
end;
SetLength(arr, t+1);

for i:=1 to tam do
begin
if cad[i]<>separador then
begin
arr[j] := arr[j]+cad[i];
end
else
begin
j:= j+1;
end;
end;
Result := arr;
End;

---------------------------------------------------
// 3er Paso - Llamar a la Función
arrFileName := split(strCadenaAEditar, '\');

Donde :
arrFileName la Declaras como de tipo "TArreglo",
strCadenaAEditar es la cadena que quieres separar, y
'\' es el caracter separador.
Responder Con Cita
  #6  
Antiguo 03-10-2011
LeonelGisuk LeonelGisuk is offline
Registrado
NULL
 
Registrado: oct 2011
Posts: 3
Poder: 0
LeonelGisuk Va por buen camino
Split

Código:
Function Split(enumeracion : string): TStringList;
var
        Aux : String;
        i : integer;
        Lista :TStringList;
begin
        enumeracion := trim(enumeracion);
        Lista := TStringList.create;
        Aux := '';
        i:=1;
        while i <= length(Enumeracion) do begin
                if enumeracion[i] <> ',' then begin
                        Aux := Aux + enumeracion[i];
                end;
                if enumeracion[i] = ',' then begin
                        Lista.Add(trim(Aux));
                        Aux := '';
                end;
                inc(i);
        end;
        if Aux <> '' then begin
              Lista.Add(trim(Aux));
        end;
        result := lista;
end;
Responder Con Cita
  #7  
Antiguo 03-10-2011
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Está bien, LeonelGisuk. Lo único, dejar claro que después hay que destruir (Free) el objeto que se crea una vez que ya no se necesite.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #8  
Antiguo 10-10-2011
ogalonzo ogalonzo is offline
Registrado
NULL
 
Registrado: oct 2011
Posts: 2
Poder: 0
ogalonzo Va por buen camino
¿Porqué no con ExtractStrings()?

Puse una respuesta al mismo problema en otro thread, como no tengo permisos aún para postear enlaces, replico mi comentario:
  1. Deposita un TEdit, un TButton y un TMemo
  2. Haz doble clic en el TButton y pon este código:
    Código:
      Memo1.Lines.Clear();
      ExtractStrings([';'], [' '], PChar(Edit1.Text), Memo1.Lines);
  3. Corre el programa, introduce una cadena separada con puntos y comas y listo, cuando hagas clic en el botón verás que el memo se llena con las cadenas.

Espero sirva.

Saludos.
Responder Con Cita
  #9  
Antiguo 04-04-2013
Los maquinas Los maquinas is offline
Registrado
NULL
 
Registrado: abr 2013
Posts: 1
Poder: 0
Los maquinas Va por buen camino
ahora Maquina solucionado el Split

la llamada
var
Arreglo: TStringList;
begin
Arreglo:= TStringList.Create;
Split(',',string, Arreglo);

...
..
.

procedure Split(const Delimiter: Char; Input: string; const Strings: TStrings);
begin
Assert(Assigned(Strings));
Strings.Clear;
input:='|' + StringReplace(Input, Delimiter, '| |', [rfReplaceAll])+'|';
Strings.Delimiter := ' ';
Strings.QuoteChar := '|';
Strings.DelimitedText := Input;
end;


Los Maquinas de chile
Responder Con Cita
  #10  
Antiguo 04-04-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Los maquinas y bienvenidos a Club Delphi

Como a todos los que se inician te invitamos a que leas nuestra guía de estilo.

Una sugerencia, cuando incluyas código en tus mensajes, utiliza TAG's para darle mas legibilidad. Esta imágen explica el uso:



Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
Crystal Reports Delphi 2005 jodycom Impresión 5 09-01-2008 20:37:08
Mi primer contacto con Delphi 2006 mazinger Noticias 1 12-12-2005 14:07:08
Traduccion de función VB a delphi !!! Jan_polero API de Windows 2 07-02-2005 12:32:54
¿Cual es el futuro de Delphi? Voutarks Debates 33 13-04-2004 19:29:08
Aplicaciones Delphi Cliente/servidor TelloClos Conexión con bases de datos 8 09-06-2003 17:12:38


La franja horaria es GMT +2. Ahora son las 15:37:24.


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