Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Encontrar una fecha en el nombre de un archivo.- (https://www.clubdelphi.com/foros/showthread.php?t=88884)

gdlrinfo 19-08-2015 23:08:21

Encontrar una fecha en el nombre de un archivo.-
 
Hola amigos tengo una duda necesito sacar una fecha de una nombre de un archivo obvio para sacar el nombre del archivo usaría el extractFileName pero no se me ocurre como quitar la fecha del mismo por ejemplo el archivo tiene este nombre (NHHH-C0003054T201503270071-SANDRA AMAR LUCIA-20150814) es decir yo necesito extraer la fecha que esta después de la letra T en este caso seria 20150327 osea son 8 dígitos después de la T alguna idea ?..

Gracias como siempre Atte.. Gonzalo

BDWONG 19-08-2015 23:28:12

Hola
 
Mira te dejo esta version el codigo se puede mejorar pero basicamente lo que hace es encontrar la 'T' y de ahi extraer los siguientes 8 caracteres solo si despues de 'T' existe sino regresara un string de "Error";

Código Delphi [-]
function ExtraerFecha(const cadena:String):string;
var
i:integer;
begin
   for i:=1 to length(cadena) do
   begin
      if ((cadena[i]='T') and (length(cadena)-i>=8)) then
      begin
        Result:=copy(cadena,i+1,8);
        Exit;
      end;
   end;
   Result:='Error';
end;

var
str,fecha:string;
begin
    str:='NHHH-C0003054T201503270071-SANDRA AMAR LUCIA-20150814';
    fecha:=ExtraerFecha(str);
    writeln(fecha);
    readln;
end.


saludos...

ecfisa 19-08-2015 23:57:01

Hola gdlrinfo.

Otra opción:
Código Delphi [-]
function ExtractDateSinceT(const str: string): string;
var
  p: Integer;
begin
  p := Pos('T', str);
  if p <> 0 then
    Result := Copy(str, p+1, 8);
end;
O, para obtenerla a partir de cualquier caracter:
Código Delphi [-]
function ExtractDateSinceChar(const str: string; const Ch: Char): string;
var
  p: Integer;
begin
  p := Pos(Ch, str);
  if p <> 0 then
    Result := Copy(str, p+1, 8);
end;


Saludos :)

nlsgarcia 20-08-2015 06:13:51

gdlrinfo,

Cita:

Empezado por gdlrinfo
...necesito sacar una fecha de una nombre de un archivo...el archivo tiene este nombre (NHHH-C0003054T201503270071-SANDRA AMAR LUCIA-20150814)...necesito extraer la fecha que esta después de la letra T...20150327...8 dígitos...

:rolleyes:

Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function GetDateFileName(FileName : String) : String;
var
   FileDate : TDateTime;
   Day, Month, Year : Word;
begin
   try
      Year := StrToInt(Copy(FileName,15,4));
      Month := StrToInt(Copy(FileName,19,2));
      Day := StrToInt(Copy(FileName,21,2));
      FileDate := EncodeDate(Year, Month, Day);
      Result := Copy(FileName,15,8);
   except
      Result := EmptyStr;
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   FileName : String;
begin
   FileName := 'NHHH-C0003054T201503270071-SANDRA AMAR LUCIA-20150814';
   MessageDlg(Format('La Fecha del Archivo es : %s',[GetDateFileName(FileName)]),mtInformation,[mbOK],0);
end;

end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, obtiene la fecha de un nombre de archivo de estructura definida, como se muestra en la siguiente imagen:



Notas:

1- El código del ejemplo asume que la estructura del nombre de archivo es constante en los primeros 26 carácteres, lo cual implica que sin importar el valor del carácter 14 (Letra T), devolverá la fecha si esta es válida.

2- La función valida la fecha, si es correcta devuelve la misma en formato YYYYMMDD, en caso contrario devuelve un string en blanco.

Espero sea útil :)

Nelson.


La franja horaria es GMT +2. Ahora son las 20:51:14.

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