Asignar path para guardar imágenes
Hola amigos:
Necesito asignar un path para insertar archivos de imágenes que se almacenan en una BD de Access, con la siguiente estructura: Application.ExeName\Dicom Data\Archivos Dicom\fecha de hoy\Estudios\Series\Imagenes Las carpetas Dicom Data y Archivos Dicom van incluidos en el ejecutable. Estoy complicado con la asignación de las carpetas Estudios, Series e Imagenes, cuyo valor debiera obtenerlo de un Edit. Lo que llevo hasta aquí para obtener el path en el siguiente código:
Puede alguien iluminarme para completar el código asignando valores a Edit, por ejemplo. Edit1:= Estudios; Edit2:= Series; Edit3:= Imagenes Para insertarlos en la BD uso el siguiente código:
Saludos y muchas gracias |
ummm... no entiendo el problema...
|
Cita:
No se como construir la parte faltante del path, es decir las carpetas Estudios, Series e Imagenes, cuya información debe ser obtenida a partir de un string ingresado en un Edit. Las imágenes .dcm poseen valores específicos para los Estudios del paciente, las series de cada estudio y las imágenes que contiene cada serie, las que posteriormente son cargadas en un stream y visualizadas en un visor especial. Estos archivos pueden llegar a pesar mas de 1Gb y por eso son cargados como imágenes individuales en forma secuencial para no ralentizar el programa. Espero que ahora se pueda entender mejor Saludos y gracias |
Hola randenf.
Si no entendí mal,
Llamada ejemplo: Si por ejemplo el contenido de EditEstSerImg fuese "Imagenes" el resultado es: Cita:
Cita:
Saludos.:) |
Muchas gracias por responder ecfisa.
Funciona perfecto con una pequeña modificación, porque la ruta debe incluir tanto los estudios como las series y las imágenes. Utilizé la función que me enviaste y el siguiente código para copiar los archivos al disco duro.
¿Es posible evitar el mensaje que genera Windows señalando que la carpeta no existe y preguntando si deseo crearla, cada vez que utilizo dicho código? Saludos y muchas gracias por tu ayuda. |
Cita:
Lectura complementaria: |
Muchas gracias por tu respuesta TOPX , pero no lo puedo hacer porque mi OpenDialog1 es un SelectDirectoryDialog, de los bsSkinForms, para abrir directorios completos y no posee esa propiedad.
Salu2 |
Cita:
Supongo que así tendría que funcionarte:
Llamada: No conozco el componente SelectDirectoryDialog y no puedo probar si devuelve un valor finalizado con delimitador. Tal vez sea innecesario el uso de la funcion ExcludeTrailingPathDelimiter. Saludos. Edito: Hay un error en esta línea: Era: Disculpas :o |
Muchas gracias ecfisa , pero el código no funciona con este componente.
No acepta Directory como string en (Directory(OpenDialog1.Directory) Seguiré probando y les cuento. Saludos |
Muchas gracias de nuevo ecfisa, pero con el nuevo código por alguna extraña razón me copia todas las subcarpetas del directorio, no importando cúal haya yo seleccionado.
Saludos |
Hola radenf.
Cita:
Como te mencioné, no tengo forma de probar con el componente SelectDirectoryDialog, pero usando un TDirectoryListBox para seleccionar el orígen y de este modo funciona correctamente: Quité el parámetro aName de la función MakePath ya que creo entender que todos los archivos deben ser copiados. La carpeta se crea previamente a la copia mediante la función CreateDirectory, y agregué el flag FOF_FILESONLY que copia sólo archivos usando el comodín ('*.*') como nombre de archivo. Ahora queda probarlo con el SelectDirectoryDialog... Saludos. :) |
Muchas gracias Daniel por tu paciencia, dedicación y desinterés.
El código funciona perfecto. Hace lo que debe, sin embargo me encontré con una situación que no había considerado y que es cuando un Estudio contiene varias Series, que es lo habitual, en estos casos se crea la carpeta de los estudios y de la primera serie, sin cargar las imágenes ni el resto de las series. La ruta debiera ser: Aplicacion\Dicom Data\Archivos Dicom\Estudio\Serie1\Imagenes \Serie2\Imagenes \Serie3\Imagenes \ etc. Las imágenes pueden ser 1 o miles y se guardan en formto .dcm ¿Es posible arreglarlo? Saludos y nuevamente gracias |
Hola Iván.
Te consulto sobre algunos puntos que no me quedaron claros:
Saludos. |
Estimado Daniel:
Agradezco enormemente tu ayuda. Para que se entienda mejor lo que necesito te envío esta imagen Respecto a tus preguntas es mejor que la fecha se encuentre en la ruta, porque ordena mejor los registros y debiera encontrase al principio. Los estudios, las series de cada estudio y las imágenes de cada serie son cadenas de números y puntos que se asignan al generar cada imagen, valores que incluyen el equipo radiológico en que se obtuvieron las imágenes y algunas características técnicas largas de enumerar, que se conocen como atributos dicom. Los valores de los estudios y de las series se obtienen de un string a partir de los atributos (das1) según el siguiente código:
Si te interesa el tema los componentes que yo utilizo para desarrollar mi programa tienen una amplia ayuda y su demo se puede descargar desde aquí. Desafortunadamente mis conocimientos de programación en Delphi caben en una servilleta y me cuesta mucho avanzar. Aún lamento que no pudieras compartir este proyecto conmigo. La invitación sigue en pie. Saludos y muchas gracias |
Hola Iván.
Si te entendí bién, la composición de la ruta sería: Aplicación\Dicom Data\Archivos Dicom\Fecha\Estudio\Serie, entonces creo que:
Llamada: Se envían como argumentos los números de estudio, de serie y la fecha. Si deseas imponer alguna restricción (como que algún o todos los parámetros deban tener valor), decímelo y lo implementamos. Pero creo que en esencia sería de ese modo. Saludos. :) Edito: Iván, en marzo estimo terminar los tres proyectos en que estoy involucrado. A partir de entonces me comprometo a ayudarte con el tuyo en todo lo que esté a mi alcance. |
Muchas gracias Daniel.
Probé el código y las capetas Series, cuando son varias, crea sólo una cuyo nombre es la unión de los nombres de las distintas series y en la carpeta Imágenes no copia nada. Estudiaré el código que me enviaste y veré si logro avanzar. Saludos PD: Excelente noticia contar en Marzo con tu apoyo. Pero de ser así me gustaría que este proyecto fuera de ambos. |
Solucionado
Estimado Daniel :
Al fin entendí por qué no funcionaba el código que me enviaste y es porque yo llamo a los directorios y no a los archivos. Utilizé la función para ordenar la fecha, que tú creaste:
y el siguiente código para armar el path que necesitaba
y de esta manera copia la totalidad de las imágenes en las carpetas de las series que corresponden a un determinado estudio, sin errores. Muchas gracias Daniel por tu enorme ayuda y por iluminarme en la solución. Personas como tú hacen que este foro sea lo grande que es. Saludos |
La franja horaria es GMT +2. Ahora son las 00:52:33. |
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