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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-08-2015
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Poder: 17
gdlrinfo Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 20-08-2015
Avatar de BDWONG
BDWONG BDWONG is offline
Miembro
NULL
 
Registrado: nov 2013
Posts: 113
Poder: 11
BDWONG Va por buen camino
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...
Responder Con Cita
  #3  
Antiguo 20-08-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 20-08-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
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...


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.
Responder Con Cita
Respuesta


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
Agregar fecha al nombre de un archivo. Tourette Varios 5 20-05-2013 23:40:34
Encontrar objeto por su nombre, encontrar metodo, ejecutar metodo coso Trucos 7 02-09-2011 01:23:13
Encontrar ruta de archivo en Datos de Programa vejerf Varios 4 20-11-2009 12:18:06
Encontrar propiedades de un archivo desde Delphi. gonzalez Servers 6 07-06-2007 21:32:58
Funcion para encontrar un archivo. zugazua2001 Varios 1 04-08-2005 21:59:38


La franja horaria es GMT +2. Ahora son las 03:32:07.


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
Copyright 1996-2007 Club Delphi