Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cadena de texto (https://www.clubdelphi.com/foros/showthread.php?t=86939)

gdlrinfo 24-10-2014 22:21:17

Cadena de texto
 
Hola amigos tengo la siguiente duda a ver si me pueden dar una mano:

Necesito recorrer una cadena como esta "BBBB-C0000754T20130517" (puede variar el tamaño) y que cuando llegue a "T" me copie los siguientes 8 caracteres lo que a mi se me ocurrió fue lo siguiente pero claro no puedo volver a incrementar I porque me la toma como un loop:

Código Delphi [-]
Var
str, str2:string;
I, a:integer;
begin
str:='BBBB-C0000754T20130517';
str2:'';
for I := 1 to Length(str) do
If str[i]= 't' Then
 for a:=1  to 8 do
 begin
 str2:= str2+str[i];
 end;
end;

Al no poder volver a incrementar "I" lo que hace me pone 8 t jajajaj y ahí me quede la verdad esto de los caracteres nunca le di mucha importancia y hoy los estoy usando bastante desde ya muchas gracias !!!

duilioisola 24-10-2014 23:15:38

Utiliza bucles while y maneja el contador a mano, según te convenga
Código Delphi [-]
Var
str, str2:string;
I, a:integer;
begin
  str := 'BBBB-C0000754T20130517';
  str2 := '';
  i := 1;
  // Recorro la cadena
  while (i < length(str)) do
  begin
      // Si encuentro T
      if (str[i] = 'T') then
      begin
        // establezco la posicion final. 8 caracteres despues del que estoy
        a := i + 8;
        // recorro hasta llegar al octavo caracter
        while (i < a) do
        begin
          str2 := str2 + str[i];
          i := i + 1;
        end;
      end;
      i := i + 1;
  end;
end;

ecfisa 24-10-2014 23:39:34

Hola gdIrinfo.
Cita:

Empezado por gdlrinfo (Mensaje 483790)
Hola amigos tengo la siguiente duda a ver si me pueden dar una mano:

Necesito recorrer una cadena como esta "BBBB-C0000754T20130517" (puede variar el tamaño) y que cuando llegue a "T" me copie los siguientes 8 caracteres
...

Si queres extraer los ocho caracteres siguientes a la primera ocurrencia de la letra 'T'/'t', otra opción es:
Código Delphi [-]
function EightAfterT(const cad: string): string;
begin
  Result:= Copy(UpperCase(cad), Pos('T', UpperCase(cad))+1,  8);
end;

Llamada ej.:
Código Delphi [-]
  ShowMessage(EightAfterT('BBBB-C0000754T20130517'));

Saludos :)

gdlrinfo 25-10-2014 00:16:41

Gracias
 
Pruebo y comento gracias!!!!


La franja horaria es GMT +2. Ahora son las 11:39:25.

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