UNIDAD 6: REGISTROS Y ARCHIVOS DIRECTOS

TEMA LINUX GCC 8: EDICION MODIFICACION DE REGISTROS

Modificar o editar un registro es uno de los procesos mas comunes con archivos en disco, generalmente despues de un fuerte proceso de captura de registros, una revisión o consulta general muestra muchos de ellos con errores de captura.

El modelo de programación cliente-servidor que se está estudiando, facilita mucho este proceso de edición.

Para este proceso se ocupara una forma html y se ocuparan 2 PROGRAMAS CPP-CGI, el procedimiento a seguir es:

1.- la forma html pide la clave del registro a editar.

2.- el primer programa cpp-cgi es el programa normal de busqueda que ya se construyo en temas anteriores, pero al desplegar el registro se debera construir una forma html completa(llamada forma o pagina dinamica) que incluya los textboxs cargados con los datos del registro y con el form action apuntando al segundo programa cpp-cgi, observar que en general este programa lo que hace es construir una segunda forma html con los datos cargados del registro.

3.- el segundo programa cpp-cgi es activado y toma los datos de la forma dinamica, los almacena en el registro en memoria luego se posiciona en el registro en disco a modificar con fseek() y se regraba con fwrite().

Prog34.html


<HTML>

<FORM ACTION="http://192.168.1.251/~tusitio/cgi-bin/prog34.cgi" METHOD=post>

CLAVE A EDITAR:<INPUT TYPE=text NAME=CLAVE><BR>

<INPUT TYPE=submit VALUE=EDITAR>

</FORM></HTML>

corrida prog 30 archivo original:

image105.jpg

corrida prog34.html

image83.jpg

vamos a editar el segundo registro.

Prog34.cpp


#include <string>

#include <iostream>

#include <lcnet.h>

using namespace std;

static struct {

int clave;

char nombre[30];

int edad;

} animalito;

int main() {

// cargando clave a buscar

int clave=getinteger("CLAVE");

cout << "Content-type: text/html\n\n";

cout << "<html>" << endl;

//abriendo, leyendo,cargando estructura

FILE *archdisco;

archdisco = fopen("//home//tusitio//animalito.dat","r+");

// usar fseek() para posicionarse al principio de registro buscado

fseek (archdisco, (long)(clave)* sizeof(animalito), 0 );

// ahora se lee el registro

fread(&animalito,sizeof(animalito),1,archdisco);

// construyendo pagina dinamica y desplegando estructura

cout << " <FORM ACTION=http://192.168.1.251/~tusitio/cgi-bin/prog35.cgi METHOD=post>" << endl;

cout<< "CLAVE:<INPUT TYPE=text NAME=CLAVE VALUE=" << animalito.clave << ">" << "<br>" <<endl;

cout<< "NOMBRE:<INPUT TYPE=text NAME=NOMBRE VALUE=" << animalito.nombre << ">" << "<br>" <<endl;

cout<< "EDAD:<INPUT TYPE=TEXT NAME=EDAD VALUE=" << animalito.edad << ">" << "<br>"<< endl;

cout<< "<INPUT TYPE=SUBMIT VALUE=OK>" <<endl;

cout << "</html>" << endl;

// no olvidar cerrar archivo y pagina

fclose(archdisco);

return 0;

}

Observar que es el programa normal de busqueda pero el despliegue se realiza construyendo una pagina o forma dinamica como se observa en la siguente corrida:

image106.jpg

Prog35.cpp


#include <string>

#include <iostream>

#include <lcnet.h>

using namespace std;

static struct {

int clave;

char nombre[30];

int edad;

} animalito;

int main() {

//cargando estructura

animalito.clave=getinteger("CLAVE");

// y se debe almacenar la string como un arreglo de chars de ahí la

// necesidad de un temporal

string temp =getstring("NOMBRE");

strcpy( animalito.nombre, temp.c_str() );

animalito.edad=getinteger("EDAD");

//abriendo, grabando, cerrando

FILE *archdisco;

archdisco = fopen("//home//tusitio//animalito.dat","r+");

// usando fseek() para posicionarse al principio del registro deseado

fseek(archdisco, (long)(animalito.clave)* sizeof(animalito), 0 );

// regrabando encima

fwrite(&animalito,sizeof(animalito),1,archdisco);

fclose(archdisco);

//avisando usuario

cout << "Content-type: text/html\n\n";

cout << "<html>" << endl;

cout << animalito.clave <<" "<<animalito.nombre<<" "<<animalito.edad<<endl;

cout << "<br>" << "registro regrabado y remodificado" <<endl;

cout << "</html>" << endl;

}

Este es el programa que activa la forma dinamica y que actualiza el registro editado en el archivo en disco, la logica de este programa ya se explico en el tercer parrafo de este tema.

Corrida prog30 para ver como quedo el archivo con el registro ya editado.

image107.jpg

TAREAS PROGRAMACION LINUX GCC PROGRAMACION LINUX GCC

CONSTRUIRLES PROGRAMAS DE EDICION O MODIFICACION A LOS ARCHIVOS YA CONSTRUIDOS.

 




Google
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki
Politica de Privacidad