Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-09-2022
Camilo Camilo is offline
Miembro
 
Registrado: jun 2007
Posts: 147
Poder: 17
Camilo Va por buen camino
Pasar nombre de archivo en pdf a un archivo txt

Hola Amigos.
Una vez mas solicitando su ayuda.
tengo una carpeta cualquiera en donde alojo uno s archivos en formato pdf. (suelen ser bastantes, mas de 500 por vez).
Necesito hacer un programa que tome todos los nombres de esos archivos y me los ponga en un archivo txt separados por "Comas".

la estructura del nombre del archivo pdf es como la siguiente.

camilo_campos_05-09-2022_clinica_ejemplo.pdf
jorge_campos_garcia_04-09-2022_hospital_central.pdf

Lo que necesito es que ese nombre que va separado por _ ingrese (todos los de la carpeta) al archivo txt, reemplazando la _ por la , que los separa.

OJO: solo los nombres de los archivos; nada de lo que ellos contienen debe ir al txt. solamente los nombres.

Acudo a Uds. si nada de código por que no he arrancado y la verdad no se ni por donde; no se si se pueda hacer o no; pero con unas orientaciones lo estructuro, lo hago y arranco a hacer las pruebas de su funcionamiento. solo trozos de código u orientaciones relacionadas con esta acción por fa. Les iré comentando.
Gracias comunidad.
Responder Con Cita
  #2  
Antiguo 05-09-2022
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
¡Hola, Camilo!

La función FindFirst puede serte útil para lo que requieres.

Enlaces:

1. Delphi Basics
2. Embarcadero
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #3  
Antiguo 05-09-2022
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Hola q tal Camilo.

Puedes hacer esto:
Código Delphi [-]
procedure TfrmCargaSaldos.btnCarpetaClick(Sender: TObject);
begin
    FileListBox1.Clear;
    edCarpeta.Text:='';
    Dir:='\';
    if SelectDirectory('Seleccione la carpeta donde se localizan los archivos de Deposito',Dir,Carpeta) then
    begin
         FileListBox1.Directory:=Carpeta;
         edCarpeta.Text:=Carpeta;
    end;
end;

En un formulario coloque un TFileListBox el cual se llena con lo que contenga "carpeta", los nombre de los archivos serán colocados 1 a 1 según tengas en el directorio que se haya seleccionado.

Lo que YO haría después de esto:

Hacer un bucle para ir comparando (If-then-else) carácter x carácter en ir guardándolos hasta q se encuentre el primer CARACTER NUMERICO, en cada comparación podrías sustituir el carácter "_" por "," y almacenar esa cadena en un TMemo o un arreglo que luego de ahí lo podría grabar en archivo de texto...talvez haya otra forma mas elegante de hacerlo con menos componentes.

Espero te sirva.

Saludos.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #4  
Antiguo 05-09-2022
Camilo Camilo is offline
Miembro
 
Registrado: jun 2007
Posts: 147
Poder: 17
Camilo Va por buen camino
Gracias Movorack: no es lo que necesito. Gracias.
Gracias Miguel: Eso ya lo intente sin éxito. Pero mil gracias por el aporte.
Responder Con Cita
  #5  
Antiguo 05-09-2022
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Cita:
Empezado por Camilo Ver Mensaje
Gracias Movorack: no es lo que necesito. Gracias.
Archivos en el directorio:
Código:
camilo_campos_01-09-2022_clinica_ejemplo.pdf
camilo_campos_02-09-2022_clinica_ejemplo.pdf
camilo_campos_03-09-2022_clinica_ejemplo.pdf
camilo_campos_04-09-2022_clinica_ejemplo.pdf
camilo_campos_05-09-2022_clinica_ejemplo.pdf
jorge_campos_garcia_01-09-2022_hospital_central.pdf
jorge_campos_garcia_02-09-2022_hospital_central.pdf
jorge_campos_garcia_03-09-2022_hospital_central.pdf
jorge_campos_garcia_04-09-2022_hospital_central.pdf
jorge_campos_garcia_05-09-2022_hospital_central.pdf
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
  lTemp : string;
  lNombre: string;
  lFecha: string;
  lLugar: string;
  SR : TSearchRec;
  lFiles: TArray<string>;
  lArchivo: TStrings;
begin
  //Reemplazar con la ruta de los archivos
  lTemp := IncludeTrailingPathDelimiter(ExtractFilePath(Paramstr(0))) + 'Archivos\*.pdf';

  // Try to find regular files matching Unit1.d* in the current dir
  if FindFirst(lTemp, faAnyFile, SR) = 0 then
  begin
    repeat
      lFiles := lFiles + [SR.Name];
    until FindNext(SR) <> 0;

    // Must free up resources used by these successful finds
    FindClose(SR);
  end;

  for i := Low(lFiles) to High(lFiles) do
  begin
    lTemp := lFiles[i];

    //Fecha
    lFecha := TRegex.Match(lTemp, '([0-9]+-)*[0-9]+', []).Value;

    //Nombre
    lNombre := lTemp.Substring(0, lTemp.IndexOf(lFecha)-1);
    lNombre := StringReplace(lNombre, '_', ' ', [rfReplaceAll]).Trim;

    //Lugar
    lLugar := lTemp.Substring((lTemp.IndexOf(lFecha) + lFecha.Length) + 1, lTemp.Length);
    lLugar := lLugar.Substring(0, lLugar.IndexOf('.'));
    lLugar := StringReplace(lLugar, '_', ' ', [rfReplaceAll]).Trim;

    lFiles[i] := Format('%s;%s;%s', [lNombre,lFecha,lLugar]);
  end;

  lArchivo:= TStringList.Create;
  try
    lArchivo.AddStrings(lFiles);
    lArchivo.SaveToFile(IncludeTrailingPathDelimiter(ExtractFilePath(Paramstr(0)))+'ListaArchivos.txt');
  finally
    lArchivo.Free;
  end;
end;

Resultado:
Código:
camilo campos;01-09-2022;clinica ejemplo
camilo campos;02-09-2022;clinica ejemplo
camilo campos;03-09-2022;clinica ejemplo
camilo campos;04-09-2022;clinica ejemplo
camilo campos;05-09-2022;clinica ejemplo
jorge campos garcia;01-09-2022;hospital central
jorge campos garcia;02-09-2022;hospital central
jorge campos garcia;03-09-2022;hospital central
jorge campos garcia;04-09-2022;hospital central
jorge campos garcia;05-09-2022;hospital central
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #6  
Antiguo 05-09-2022
Camilo Camilo is offline
Miembro
 
Registrado: jun 2007
Posts: 147
Poder: 17
Camilo Va por buen camino
Hola Hombre, mil gracias por tu interés. de veras lo aprecio.
pues desarrollado de esta forma pinta perfecto. Lo tomo por otro y definitivamente no me dio lo que buscaba.
En esta línea
Código Delphi [-]
lFecha := TRegex.Match(lTemp, '([0-9]+-)*[0-9]+', []).Value;
Me tira error de declaración. alguna unidad por declarar??
Responder Con Cita
  #7  
Antiguo 05-09-2022
Camilo Camilo is offline
Miembro
 
Registrado: jun 2007
Posts: 147
Poder: 17
Camilo Va por buen camino
Hombre acabo de probarlo y efectivamente si es lo que necesito. Muy bien. Todo salió perfecto. disculpa por no comprender tu aporte inicial. Desarrollado de esta forma realmente es facil de implementar y funciona perfecto.
Gracias de nuevo Movorack.
Punto positivo para ti. Gracias.
Responder Con Cita
  #8  
Antiguo 06-09-2022
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.278
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Aunque ya veo que tienes la solución, añado este link, por si alguien más necesita algo similar.

Listar los archivos de un determinado directorio:
https://www.clubdelphi.com/foros/showthread.php?t=80413

Se trata de un mensaje en la sección de trucos (de hace ya un tiempo), que permite obtener todos los nombres de ficheros de una determinada carpeta utilizando una máscara; Además hay una versión recursiva para navegar por subcarpetas.
La salida es a un TStrings. Con un SaveToFile bastaría para guardarla en fichero.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 06-09-2022 a las 16:23:52.
Responder Con Cita
  #9  
Antiguo 06-09-2022
Camilo Camilo is offline
Miembro
 
Registrado: jun 2007
Posts: 147
Poder: 17
Camilo Va por buen camino
Gracias Neftalí. Interesante programa.
Responder Con Cita
Respuesta



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
Nombre de archivo de un link JuanOrtega Varios 1 02-10-2011 03:32:48
nombre de archivo de una fuente TTF Gimli Varios 1 27-05-2011 16:39:49
Pasar el nombre de un archivo .zip a un Edit. BuRtOn Varios 1 30-06-2008 20:10:10
nombre del archivo de la imagen ingel Gráficos 1 15-05-2008 15:20:54
Ruta y nombre de archivo INI jfranco Varios 2 27-02-2004 16:44:23


La franja horaria es GMT +2. Ahora son las 15:54:37.


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