Leer un dvd o cd desde VFP y cargar su contenido a una dbf

Estoy intentando realizar un programa en VFP 9 que pueda leer el contenido de un Cd o DVD, y volcar los nombres de los archivos que contiene en una dbf, no sé como encararlo, si puedes orientarme al respecto, te estaría muy agradecido.

Fernando.

1 respuesta

Respuesta
1

Puedes usar el ADIR

Algo así:

LOCAL cLetraCd
Create TAble TuTabla (Archivo c(250))
cLetraCd = getdir('','Elija la unidad de DVD/CD')
nNumArchivos = ADIR(aLista)
For nI = 1 to nNumArchivos
if !INLIST(aLista(nI,1) ,'.','..')
insert into TuTabla;
(archivo);
VALUES (aLista(nI, 1))
Endif
next

Amigo César: Intenté con el código que le facilitaste, desde un botón del formulario llamado carga, pero me deriva a a elegir una unidad de dvd; ahora bien, solo tengo una unidad de dvd, la G, y mi idea es ir leyendo sucesivos DVD, e ir cargando los nombres de los archivos en una base de datos ya hecha dentro de la estructura del proyecto, ya sea sueltos dentro del dvd o en carpetas, intenté trabajar el código que me enviaste pero no logro orientarme, agradezco desde ya tu valiosa ayuda.

Fernando

Cambia la siguiente linea:

cLetraCd = getdir('','Elija la unidad de DVD/CD')

por:

cLetraCd = "G:"

Para así utilizar la unidad G como constante

 

Cesar:

Intenté con el código como me dijiste, pero así no logro que se cargue en la base de datos; tengo la estructura armada, con una tabla libre llamada "MP3", y un formulario, con dos botones, uno llamado "carga", donde inserté el código que me enviaste en el evento click, y otro botón "salir". Lo que deseo lograr puntualmente es que el form lea el dvd, cargue los títulos de los archivos, los cargue en la base de datos "mp3", y si coloco otro posteriormente, los siga agregando a continuación, no sé donde estoy cometiendo el error

Pásame el código que insertas en tu CLICK del botón "Carga"

LOCAL
cLetraCd
Create TAble
TuTabla (Archivo c(250))
cLetraCd = "G:"
*cLetraCd = getdir('','Elija la unidad de DVD/CD')
nNumArchivos =
ADIR(aLista)
For
nI = 1 to nNumArchivos
if
!INLIST(aLista(nI,1) ,'.','..')
insert into
TuTabla;
(archivo);
VALUES
(aLista(nI,1))
endif
next

El código que te pasé es un ejemplo, para tu caso en lugar de poner el CREATE TABLE, nada mas haz referencia a tu tabla, al igual que en el INSERT INTO, colo ahí el nombre de tu tabla y sus campos.

César:

Modifiqué el código según me indicaste, pero, el la linea "LOCAL="G:" me dice "syntax error", y en la base de datos solo me carga un registro, "mp3.dbf", te adjunto el código que tengo, no se como orientarme para lograr que lea el dvd y cargue sus datos, la tabla libre la tengo creada, dentro del directorio data de la estructura del programa, la base da datos esta armada con tres registros:

nombre, caracter, 80

codigo, caracter, 5

disconro, caracter, 5

El código es:

LOCAL
"G:"
Create TAble
MP3 (Archivo c(250))
cLetraCd = "G:"
*cLetraCd = getdir('','Elija la unidad de DVD/CD')
nNumArchivos =
ADIR(aLista)
For
nI = 1 to nNumArchivos
if
!INLIST(aLista(nI,1) ,'.','..')
insert into
MP3;
(archivo);
VALUES
(aLista(nI,1))
endif
next

realmente no alcanzo a ver dónde estoy haciendo mal, desde ya te agradezco tu tiempo y paciencia.

Fernando

LOCAL "G:" <--- esto no funciona, la instrucción LOCAL es para crear variables

Quítala

Cambia:

ADIR(aLista)

Por

ADIR(aLista,'G:\*.*')

César:

Funcionó a la perfección, sólo me falta lograr que lea dentro de carpetas en el mismo cd, ¿cómo logro esto?

Tendrías que hacer un análisis recursivo de todas las carpetas.

Para considerar también las carpetas en la obtención del array le tendías que poner:

ADIR(aLista,'G:\*.*','"D")

Y tus análisis tendrías que validar si es directorio para "entrar" a él, antes del "insert into":

if "D" $ aLista(1,5)

nNumArch1 = ADIR(aLista2,'G:\'+aLista(nI,1))

if !INLIST(aLista2(nI,1) ,'.','..')
insert into MP3;
(archivo);
VALUES
(aLista2(nI,1))
endif

else

***acá pones tu INSERT de antes, pues el archivo no es un directorio.

Endif

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas