/*********************************************************************

TRABAJO CON ARCHIVO

Inteligencia artificial

Gonzalo Villarreal Farah.

Corre con la versión Turbo Prolog 2.0

********************************************************************/

openread(SymbolicFileName,DosFileName)

(file,string) - (i,i)

Permite abrir un archivo para su lectura

SymbolicFileName: Nombre simbolico al cual se le asociara el nombre del

archivopara, de esta manera en el futuro, se hace

referencia a este en otras instrucciones y no al

nombre del archivo. Es de tipo file y se declara en

el DOMAINS.

DosFileName : nombre y opcionalmente el camino (path) del archivo

que se desea abrir

Ejemplo:

DOMAINS

file = base

PREDICATES

abre_lee

CLAUSES

abre_lee:-openread(base,"c:\\prolog\\prolog.hlp").

%-----------------------------------------------------------------------

openwrite(SymbolicFileName,DosFileName)

(file,string) - (i,i)

Permite abrir un archivo para su escritura. Si el archivo contiene algo

esto se pierde.

SymbolicFileName y DosFileName: iguales que en openread

Ejemplo:

DOMAINS

file = base

PREDICATES

abre_escribe

CLAUSES

abre_escribe:-openwrite(base,"c:\\prolog\\prolog.hlp").

%-----------------------------------------------------------------------

openappend(SymbolicFileName,DosFileName)

(file,string) - (i,i)

Permite abrir un archivo para agregarle al final de Çste alg£n texto.

SymbolicFileName y DosFileName: iguales que en openread

Ejemplo:

DOMAINS

file = base

PREDICATES

abre_agrega

CLAUSES

abre_agrega:-opeappend(base,"c:\\prolog\\prolog.hlp").

%-----------------------------------------------------------------------

openmodify(SymbolicFileName,DosFileName)

(file,string) - (i,i)

Permite abrir un archivo para modificarlo.

SymbolicFileName y DosFileName: iguales que en openread

Ejemplo:

DOMAINS

file = base

PREDICATES

abre_modifica

CLAUSES

abre_modifica:-opemodify(base,"c:\\prolog\\prolog.hlp").

%-----------------------------------------------------------------------

readdevice(SymbolicFileName)

(file) - (i) (o)

Permite cambiar la unidad de lectura, por defecto es el teclado (i). De lo

contrario, permite saber que unidad esta activa como lectura.

SymbolicFileName: iguales que en openread. Aqui se aprecia que hace la

conecci¢n con el archivo que se desea por medio de SymbolicFileName

Nota: Primero debe ser abierta algun archivo.

Ejemplo:

DOMAINS

file = base

PREDICATES

lectura_activa(file)

trae_nuevo(file,file)

modifica_device_lectura(fiel)

GOAL

openread(base,"c:\\prolog\\prolog.hlp"),

lectura_activa(File),trae_nuevo(File,File2),

modifica_device_lectura(Fiel2).

CLAUSES

lectura_activa(File):-readdevice(File).

% Aqui File es de output

intercambia_device(keyboar,base).

intercambia_device(_,keyboar).

modifica_device_lectura(Fiel):-readdevice(File).

% Aqui File es de input

%-----------------------------------------------------------------------

writedevice(SymbolicFileName)

(file) - (i) (o)

Permite cambiar la unidad de escritura, por defecto es la pantalla (i).

De lo contrario, permite saber que unidad esta activa como escritura.

Nota: Primero debe ser abierta algun archivo.

SymbolicFileName: iguales que en openread.

Ejemplo:

DOMAINS

file = base

PREDICATES

escritura_activa(file)

trae_nuevo(file,file)

modifica_device_escritura(fiel)

GOAL

openwrite(base,"c:\\prolog\\prolog.hlp")

escritura_activa(File),trae_nuevo(File,File2),

modifica_device_escritura(Fiel2).

CLAUSES

escritura_activa(File):-readdevice(File).

% Aqui File es de output

intercambia_device(keyboar,base).

intercambia_device(_,keyboar).

modifica_device_escritura(Fiel):-writedevice(File).

% Aqui File es de input

%-----------------------------------------------------------------------

closefile(SymbolicFileName)

(file) - (i)

Permite cerrar un archivo.

Ejemplo:

DOMAINS

file = base

PREDICATES

...

GOAL

openwrite(base,"c:\\prolog\\prolog.hlp")

...

closefile(base).

CLAUSES

...

%-----------------------------------------------------------------------

filepos(SymbolicFileName,FilePosition,Mode)

(file,real,integer) - (i,i,i) (i,o,i)

Mode specifies: 0:Inicio 1:Relativo 2:Fin

Permite leer la posici¢n donde esta el cursor en un archivo(output), ya sea

para leer de el o escribir, o permite colocar el cursor en alguna posici¢n

deseada, para leer o escribir.

SymbolicFileName: igual que en openread.

FilePosition : coloca el cursor en una posici¢n deseada o lee la posici¢n

donde esta el cursor. Este valor es real por que su cuenta

es por cada caracter.

%-----------------------------------------------------------------------

eof(SymbolicFileName)

(file) - (i)

Permite controlar cuando es fin de archivo. Cuando estamos leyendo, por

ejemplo en un ciclo, este se realiza mientras no sea fin de archivo

(eof: end of file)

Ejemplo:

DOMAINS

file = base

PREDICATES

lee_escribe

GOAL

makewindow(1,31,7,"",0,0,25,80),

openread(base,"a:\\prolog\\archivo.pro"),

lee_escribe.

CLAUSES

lee_escribe:-readdevice(base),not(eof(base)),readln(A),write(A),nl,

readdevice(keyboard),readchar(_),lee_escribe.

lee_escribe.

%-----------------------------------------------------------------------

existfile(DosFileName)

(string) - (i)

Permite verificar si un archivo existe.

DosFileName: igual que en openread

Ejemplo:

PREDICATES

existe_archivo(sting)

GOAL

existe_archivo("c:\\prolog\\prolog.hlp").

CLAUSES

existe_archivo(Archivo):-existfile(Archivo).

% Si existe tiene exito sino fracasa

%-----------------------------------------------------------------------

deletefile(DosFileName)

(string) - (i)

Permite borrar un archivo (similar al DELETE de DOS).

DosFileName: igual que en openread

Ejemplo:

PREDICATES

borra_archivo(sting)

GOAL

borra_archivo("c:\\prolog\\prolog.hlp").

CLAUSES

borra_archivo(Archivo):-deletefile(Archivo).

% Debe existe el archivo para tener exito sino fracasa

%-----------------------------------------------------------------------

renamefile(OldDosFileName,NewDosFileName)

(string,string) - (i,i)

Permite renombrar un archivo (similar al RENAME de DOS).

OldDosFileName: nombre de archivo que se desea renombrar

NewDosFileName: nuevo nombre que se le desea colocar al archivo

Ejemplo:

PREDICATES

renombra_archivo(sting,string)

GOAL

renombra_archivo("WORK.PRO","TRABAJO.PRO").

CLAUSES

borra_archivo(AntiguoArchivo,NuevoArchivo):-

renamefile(AntiguoArchivo,NuevoArchivo).

% Debe existe el archivo para tener exito sino fracasa

%-----------------------------------------------------------------------

disk(DosPath)

(string) - (i) (o)

Permite cambiar la unidad de disco o camino (path) activa o ver cual esta

activa.

DosPath:unidad de disco o camino (path)

Ejemplo:

PREDICATES

ve_disco_activo

modifica_path(string)

GOAL

ve_disco_activo,modifica_path("C:\\TEMP").

CLAUSES

ve_disco_activo:-disck(DosCamino),

write("El disco y directorio activo es: ",DosCamino).

modifica_pat(DosCamino):-disck(DosCamino).

%-----------------------------------------------------------------------