Club Delphi  
    Paypal   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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 23-04-2009
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
A ver, o no entiendo lo que quieres hacer o está muy complicado el método que usas.

Voy a partir de esto que pones en tu código:

Cita:
//String que quiero leer. que puede ser de dos o tres letras
//y de dos o cuatro pares de números:
// 've56-21.doc' o 'jun01-06-82-11.pdf'
y de las cadenas resultantes en el ejemplo que pusiste en tu primer mensaje.

La idea es:

1. Quitar la extensión
2. Separar la parte de las letras y la parte con la secuencia numérica.
3. Por cada número en la secuencia, formar una cadena compuesta por las letras y el número.

La primera parte es muy sencilla usando la función ChangeFileExt.

Para la segunda parte, si -como mencionas en el comentario- la cadena sólo puede contener dos o tres letras, entonces basta leer el tercer caracter para saber cuántas letras tenemos. Si es un número, quiere decir que sólo hay dos letras, y en caso contrario tres. Una vez determinado esto, es fácil separar las letras con la función Copy y, así mismo, la secuencia de números como 01-06-82-11.

Ahora bien, esta secuencia consiste de números separados por un guíon. Así que, para aislar cada número, viene muy práctico el uso de un TStringList y su propiedad DelimitedText.

Una vez que tengamos en una lista los distintos números, ya sólo es cosa de recorrer dicha lista y concatenar las letras con el número en turno.

Aquí pongo la expresión de mi idea:

Código Delphi [-]
procedure SplitString(S: String; Strings: TStrings);
var
  Letras: string; // Parte de las letras
  Cantidad: Integer; // Cantidad de letras
  Numeros: TStringList; // Lista de números
  I: Integer;

begin
  // Eliminamos la extensión
  S := ChangeFileExt(S, '');

  // Determinamos la cantidad de letras según lo que haya en el tercer caracter
  if ( S[3] in ['0'..'9'] ) then
    Cantidad := 2
  else
    Cantidad := 3;

  // Separar las letras
  Letras := Copy(S, 1, Cantidad);

  Numeros := TStringList.Create;
  try
    // Separamos los números y los ponemos en una lista
    Numeros.Delimiter := '-';
    Numeros.DelimitedText := Copy(S, Cantidad + 1, MaxInt);

    for I := 0 to Numeros.Count - 1 do
      Strings.Add(Letras + Numeros[i]);
  finally
    Numeros.Free;
  end;
end;

La forma de usar este procedimiento sería así, por ejemplo, para poner las cadenas resultantes en un Memo:

Código Delphi [-]
SplitString('jun01-06-82-11.pdf', Memo1.Lines);

// Saludos
Responder Con Cita
 


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
Recorrer y Cortar String octalh Varios 6 28-11-2017 09:46:41
Recorrer un STRING creus Varios 3 07-01-2007 22:52:37
Error al recorrer string creus Varios 6 16-11-2006 22:39:45
recorrer string emiliu Varios 2 16-11-2005 10:23:25
Recorrer un string davidgaldo Varios 3 09-11-2005 10:04:28


La franja horaria es GMT +2. Ahora son las 14:41:40.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi