Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Un copy con pos, pero de tras hacia adelante (https://www.clubdelphi.com/foros/showthread.php?t=74687)

Paulao 04-07-2011 21:21:22

Un copy con pos, pero de tras hacia adelante
 
Tengo essa string:
19900711-35399--NAC-001-CADE.TIF
19900711-35399--NAC-002-AGRI.TIF
19900711-35399--NAC-001-NOT.TIF

Necessito de un copy o algo parecido, que me traiga las palabras:
CADE o AGRI o NOT. Un copy con POS yo no lo he conseguido hacer. Hay otras formas, pero si escribe muchas lineas y nos es mui elegante.

ecfisa 04-07-2011 23:22:36

Hola Paulao.

Si siempre respeta ese formato, esta función te va a devolver la cadena buscada:
Código Delphi [-]
uses StrUtils;

function ExtraerCad(Cad: string): string;
var
  i: Integer;
begin
  Result:= '';
  i:= Length(Cad);
  while Cad[i] <> '-' do
  begin
    Result:= Result + Cad[i];
    Dec(i);
  end;
  Result:= ReverseString(Result);
  Result:= Copy(Result,1,Pos('.',Result)-1);
end;
Aunque no es precisamente 'elegante'... :)

Ejemplo de llamada:
Código Delphi [-]
var
  s1,s2,s3: string;
begin
  s1:= '19900711-35399--NAC-001-CADE.TIF';
  s2:= '19900711-35399--NAC-001-NOT.TIF';
  s3:= '19900711-35399--NAC-002-AGRI.TIF';
  ShowMessage(ExtraerCad(s1)+ #13 +ExtraerCad(s2)+ #13 +ExtraerCad(s3));
end;


Saludos.

Paulao 05-07-2011 16:15:24

Gracias, Cris.

ecfisa 05-07-2011 16:20:08

Cita:

Empezado por Paulao (Mensaje 405563)
Gracias, Cris.

Aunque es todo un honor que me hayas confundido con Chris, soy ecfisa. :)

Saludos.

Chris 05-07-2011 16:31:34

Cita:

Empezado por ecfisa (Mensaje 405564)
Aunque es todo un honor que me hayas confundido con Chris, soy ecfisa. :)

Saludos.

:D :p No al contrario. El honor es todo mío eficsa. No soy capaz de escribir tan geniales códigos como los que nos compartes siempre. Yo por mi parte hubiera recomendado utilzar la función ReverseString, que es la que utilizo para resolver problemas igual al que tiene el compañero. Pero creeme que jamás se me hubiera ocurrido escribir algo así como lo que nos presentas.

Saludos,
Chris


La franja horaria es GMT +2. Ahora son las 02:26:36.

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