Copy com pos de trás pra frente

Delphi

04/07/2011

Tenho essa string:
19900711-35399--NAC-001-CADE.TIF
e assim vem outros arquivos, 002,003 e também com os nome CADE,NOT,AGRI e etc... Preciso fazer um copy que me traga somente as palavras CADE, NOT,AGRI,CLASS, ou seja, apartir do '.' até encontrar o primeiro '-'. Mas tentei aqui de várias formas e não achei nada. Dá pra fazer de outra forma, mas se escreve muitas linhas. Gostaria de saber se há uma forma mais simples, tipo um COPY com POS. É possivel?
Pjava

Pjava

Curtidas 0

Melhor post

Marco Salles

Marco Salles

05/07/2011

Ha muitas maneiras de serem feitas

Aqui mais uma

uses
StrUtils ;

var
str:string;
begin
str:='19900711-35399--NAC-001-CADE.TIF';
str:=ReverseString(Str);
delete(str,pos('-',str),length(Str));
str:=copy(str,pos('.',str)+1,length(Str));
str:= ReverseString(Str);
showmessage(str);
end;
GOSTEI 1

Mais Respostas

Wilson Junior

Wilson Junior

04/07/2011

Lhe aconselho a fazer uma função para tratar este tipo de string, ainda mais que é um tratamento especial.

Espero ter colaborado.
GOSTEI 0
Rafael Mattos

Rafael Mattos

04/07/2011

function Pega(Texto : String) : String;
var
  Posicao : Byte;
begin
  Posicao := Pos('.',Texto)-1;
  while Texto[Posicao] <> '-' do
  begin
     Result := Texto[Posicao]+Result;
     Inc(Posicao,-1);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    ShowMessage(Pega(Edit1.Text));
end;




--------------------------------------------------------------------------------
Blog: http://mundodoprogramador.wordpress.com/
MSN: rafmattos@hotmail.com
Twitter: _rafmattos
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

04/07/2011

eu sugiro a você criar uma função, baseada no código postado pelo Marco Salles.

deverá ficar mais ou menos assim:

function PosEnd(const substr, str: string) // busca a partir do final da string
begin
  result := pos(substr,ReverseString(str));
end;



e, para usar:

  cStr := '19900711-35399--NAC-001-CADE.TIF';
  nPos := PosEnd(cStr, '-');
  if nPos > 0
    ShowMessage(Copy(cStr,nPos+1,Length(cStr)));
GOSTEI 0
POSTAR