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-06-2015
xdelph xdelph is offline
Registrado
NULL
 
Registrado: jun 2015
Posts: 5
Poder: 0
xdelph Va por buen camino
Separación de un string

Mi problema es que quiero guardar a partir de un string, unos valores en variables de modo que:

linea es el string y contiene : "1|aaaaaa|2000|Juan Pérez"

Yo necesito guardar en variables el 2000 y "Juan Pérez"
Como puedo hacerlo?
Gracias de antemano!
Responder Con Cita
  #2  
Antiguo 09-06-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Es muy sencillo, además existen muchísimas formas de hacerlo, unas muy simples y otras más elaboradas.
¿Cómo has pensado hacerlo? ¿qué código has probado? ¿has buscado por los foros?
Por cierto, bienvenido a clubdelphi, no olvides leer nuestra guía de estilo, gracias
Responder Con Cita
  #3  
Antiguo 09-06-2015
xdelph xdelph is offline
Registrado
NULL
 
Registrado: jun 2015
Posts: 5
Poder: 0
xdelph Va por buen camino
Pues la verdad no tenía mucha idea, soy casi nuevo en Delphi
Mi idea era utilizar pos() y a partir de ahí sacarlo. Me puedes decir como?
Un saludo!
Responder Con Cita
  #4  
Antiguo 09-06-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Es una buena idea, además te servirá para ir aprendiendo sobre el manejo de cadenas de texto.
A ver, haz un intento y muestra tu código.
Responder Con Cita
  #5  
Antiguo 09-06-2015
xdelph xdelph is offline
Registrado
NULL
 
Registrado: jun 2015
Posts: 5
Poder: 0
xdelph Va por buen camino
La verdad había probado, pero he borrado porque no me funcionaba y ahora mismo estoy algo agobiado con esto.
El problema que yo tenía es que solo podía leer a partir del primer |
Responder Con Cita
  #6  
Antiguo 09-06-2015
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Apuesto a que la función ExtractString te ha de servir para lograr tu objetivo.
__________________
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 09-06-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Con lo comentado por jhonny puedes buscar en los foros:
ejemplo 1, ejemplo 2
Responder Con Cita
  #8  
Antiguo 09-06-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Hola xdelph

Te recomiendo revises estos enlaces:

Operaciones con cadenas de texto (I)
Operaciones con cadenas de texto (II)
Operaciones con cadenas de texto (III)
Operaciones con cadenas de texto (IV)
Operaciones con cadenas de texto (y V)

Tambien esto:
Tipos de variable para el manejo de caracteres

Cortesia del blog Delphi al Límite
Responder Con Cita
  #9  
Antiguo 09-06-2015
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
xdelph,

Cita:
Empezado por xdelph
...linea es el string y contiene : "1|aaaaaa|2000|Juan Pérez"...necesito guardar en variables el 2000 y "Juan Pérez"...soy casi nuevo en Delphi...


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

interface

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

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);
var
   Source : String;
   S1, S2, AuxStr : String;
   SL : TStringList;
   i : Integer;
   P : Integer;
   MsgUsr, MsgApp : String;

begin

   // Obtener '2000' y 'Juan Pérez' de Source

   Source := '1|aaaaaa|2000|Juan Pérez';

   // Método-1

   SL := TStringList.Create;

   ExtractStrings(['|'],[],PChar(Source),SL);

   P := SL.IndexOf('2000');
   if P <> - 1 then
      S1 := SL[P];

   P := SL.IndexOf('Juan Pérez');
   if P <> - 1 then
      S2 := SL[P];

   MsgApp := 'Método 1 (ExtractStrings-IndexOf)';
   MsgUsr := Format('S1 = %s y S2 = %s',[S1,S2]);

   MessageBox(Handle, PChar(MsgUsr), PChar(MsgApp), MB_OK + MB_ICONINFORMATION);

   SL.Free;

   // Método-2

   S1 := EmptyStr;
   S2 := EmptyStr;
   i := 1;

   repeat

      P := PosEx('|', Source,i);

      if P <> 0 then
      begin

         AuxStr := Copy(Source,i,P-i);

         if (AuxStr = '2000') then
            S1 := AuxStr;

         if (AuxStr = 'Juan Pérez') then
            S2 := AuxStr;

         i := P+1;

      end
      else
      begin

         AuxStr := Copy(Source,i,MaxInt);

         if (AuxStr = '2000') then
            S1 := AuxStr;

         if (AuxStr = 'Juan Pérez') then
            S2 := AuxStr;

      end;

   until (P = 0);

   MsgApp := 'Método 2 (PosEX-Copy)';
   MsgUsr := Format('S1 = %s y S2 = %s',[S1,S2]);

   MessageBox(Handle, PChar(MsgUsr), PChar(MsgApp), MB_OK + MB_ICONINFORMATION);

   // Método-3

   S1 := EmptyStr;
   S2 := EmptyStr;

   SL := TStringList.Create;

   ExtractStrings(['|'],[],PChar(Source),SL);

   for i := 0 to SL.Count - 1 do
   begin

      if SL[i] = '2000' then
         S1 := SL[i];

      if SL[i] = 'Juan Pérez' then
         S2 := SL[i];

      if (S1 <> EmptyStr) and (S2 <> EmptyStr) then
         Break;

   end;

   MsgApp := 'Método 3 (ExtractStrings-Count)';
   MsgUsr := Format('S1 = %s y S2 = %s',[S1,S2]);

   MessageBox(Handle, PChar(MsgUsr), PChar(MsgApp), MB_OK + MB_ICONINFORMATION);

   // Método-4

   S1 := EmptyStr;
   S2 := EmptyStr;
   i := 1;

   for P := 1 to Length(Source) do
   begin

      if Source[P] = '|' then
      begin

         AuxStr := Copy(Source,i,P-i);

         if (AuxStr = '2000') then
            S1 := AuxStr;

         if (AuxStr = 'Juan Pérez') then
            S2 := AuxStr;

         i := P + 1;

      end;

   end;

   AuxStr := Copy(Source,i,MaxInt);

   if (AuxStr = '2000') then
      S1 := AuxStr;

   if (AuxStr = 'Juan Pérez') then
      S2 := AuxStr;

   MsgApp := 'Método 4 (String-Length)';
   MsgUsr := Format('S1 = %s y S2 = %s',[S1,S2]);

   MessageBox(Handle, PChar(MsgUsr), PChar(MsgApp), MB_OK + MB_ICONINFORMATION);

end;

end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, Ejemplifica la extracción de substrings de un String por 4 diferentes métodos, como se muestra en la siguiente imagen:



Notas:

1- El código propuesto tiene como único objetivo, servir de guía a los requerimientos planteados en el Msg #1.

2- Es importante que estudies los métodos propuestos y hagas pruebas con los mismos para internalizar los conceptos, programar se aprende programando.

Revisa esta información:
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
Punto de separación de miles m.ruiz Varios 5 22-11-2007 17:34:00
Separacion entre líneas de un QRMemo fedeloko Impresión 0 30-10-2006 19:53:57
Separación de QRDBText fedeloko Impresión 0 18-09-2006 17:44:19
file of, caracter de separación jonmendi Varios 12 09-06-2006 17:27:19
mainmenu y barritas de separación unreal4u Varios 2 22-04-2005 21:19:46


La franja horaria es GMT +2. Ahora son las 01:17:04.


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