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 21-07-2011
avila avila is offline
Miembro
 
Registrado: may 2011
Posts: 13
Poder: 0
avila Va por buen camino
¿Como extraer letras de una cadena?

Hola a todos. ¿Cómo puedo extraer una serie de letras que estan en una cadena separadas por comas ','.

Tengo este String 'abc,134,jio', necesito sacar las frases abc a una variable y tambien los números asi como los últimos caracteres. ¿Alguna idea?
Responder Con Cita
  #2  
Antiguo 21-07-2011
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Código Delphi [-]
MiCadena1:=Copy('abc,134,jio',1,3);
MiCadena2:=Copy('abc,134,jio',5,3);

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 21-07-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.009
Poder: 20
oscarac Va por buen camino
Si las posiciones son fijas entonces podrias hacerlo como bien te menciona marcoszorrilla, pero si son variables y delimitadas por "," entonces tendrias que hacerte un procedimiento que lea la cadena y vaya asignando cada vez que encuentre una coma ","

Algo Asi
Código Delphi [-]
 
 
     for i:= 1 to Length(sLinea) do
      begin
        vChar := Copy(sLinea, i, 1);
        if vChar = ',' then
        begin
          Inc(vContador);
          case vContador of
            1: begin CDSCCostoCCosto.Value := vCadena; vCadena:= ''; end;
            2: begin CDSCCostoDescripcion.Value := vCadena; vCadena:= ''; end;
          end
        End
        Else
          vCadena := vCadena + vChar;

vContador te indica el bloque que esta leyendo.. en el ejemplo solo hay 2 bloques
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #4  
Antiguo 21-07-2011
cecam cecam is offline
Miembro
 
Registrado: may 2006
Ubicación: Girona
Posts: 47
Poder: 0
cecam Va por buen camino
O también usar un TStringList y mirarte las propiedades Delimiter y DelimitedText

Saludos!
Responder Con Cita
  #5  
Antiguo 21-07-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.457
Poder: 20
newtron Va camino a la fama
Hola.

Echale un vistazo a esta respuesta del maestro ecfisa.

http://www.clubdelphi.com/foros/showthread.php?t=74871

Saludos
Responder Con Cita
  #6  
Antiguo 22-07-2011
avila avila is offline
Miembro
 
Registrado: may 2011
Posts: 13
Poder: 0
avila Va por buen camino
Muchisimas gracias por las sugerencias, en verdad me pondre a trabajar, no sin antes compartirles que hice dos funciones para obtener lo que quiero, díganme como mejorarlo o dejarlo en una sola función.

ya un poco acorralado se me ocurrio hacer una función para extraer los caracteres y otra para elimanrlos. ¿Qué les parece?

Código Delphi [-]
function ExtraeChars(Linea:String):String;
var i,j : integer;
begin
    for i := 1 to length(Linea) do
    begin
      j:= Pos(',',Linea);
    end;
    ExtraeChars:=copy(Linea,1,j-1);
end;

function EliminaChars(Linea:String):String;
var i,j : Integer;
begin
    for i := 1 to length(Linea) do
    begin
      j:= Pos(',',Linea);
    end;
    Delete(Linea,1,j);
    EliminaChars:=Linea;
end;

procedure TForm2.Button1Click(Sender: TObject);
var Cadena,Result1,Result2: string;
begin
   Cadena:='Club,Delphi';
   Result1:=ExtraeChars(Cadena);
   Cadena :=EliminaChars(Cadena);
   Result2:=Cadena;
   ShowMessage(Result1);
   ShowMessage(Result2);
end;
Responder Con Cita
  #7  
Antiguo 22-07-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.009
Poder: 20
oscarac Va por buen camino
pues eso depende del uso que le quieras dar a las funciones que has creado
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #8  
Antiguo 22-07-2011
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 avila.

Tus funciones son correctas, pero usando TStringLists podés hacerlo de forma simple en una sóla función:
Código Delphi [-]
function SepararCadena(const Cadena: string; const Delim: Char): TStringList;
begin
  Result:= TStringList.Create;
  Result.Delimiter:= Delim;
  Result.DelimitedText:= Cadena;
end;

Ejemplos de llamada:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  TS: TStrings;
  i : integer;
begin
  TS:= SepararCadena('Cadena1,Cadena2,Cadena3,...,CadenaN',',');
  try
    for i:= 0 to TS.Count -1 do
      ShowMessage(TS[i]);
  finally
    TS.Free;
  end;
end;

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox1.Items:= SepararCadena('Cadena1,Cadena2,Cadena3,...,CadenaN',',');
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 22-07-2011 a las 09:39:23. Razón: agregar ejemplo llamada
Responder Con Cita
  #9  
Antiguo 22-07-2011
avila avila is offline
Miembro
 
Registrado: may 2011
Posts: 13
Poder: 0
avila Va por buen camino
Muchisimas Gracias a MarcosZorrilla, Oscarac, Newtron y Ecfisa. Tomare muy en cuenta los TStringLists. El código de Oscar esta muy bueno. Hare las pruebas y regresare a compartir con ustedes como me fue. Seguimos en contacto y muchos saludos.
Responder Con Cita
  #10  
Antiguo 22-07-2011
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
¿Cómo separar una cadena a un arreglo de valores? Artículo en Delphi.About.com en ingles.

Es un ejemplo bien simple y te coloca los valores en un arreglo y ya podrías manejar cada uno a tu antojo. Se puede utilizar cualquier delimitador.
Aunque el ejemplo de eficsa me parece mucho más sencillo, de cualquier forma quería enlazar el otro para tener opciones.
__________________

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
Extraer caracteres de una cadena MiLLeNPuNk Varios 7 19-05-2010 22:37:25
Cómo convertir números a letras JKABARCA Varios 1 11-08-2008 01:20:41
¿Como extraer de una cadena de 18 caracter, las primeras 10 letras? Nelly Varios 5 18-06-2007 21:00:09
como comvertin numeros a letras pollo_c Varios 12 09-06-2007 03:31:31
Extraer caracteres de una Cadena!! subzero C++ Builder 6 18-02-2004 23:15:50


La franja horaria es GMT +2. Ahora son las 21:37:54.


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