amigos-consulta

08/02/2005 - 17:32 por Alberto | Informe spam
Estimados:

Quiero compartir un archivo binario con los demas usuarios pero que a ese
archivo puedan añadir registros, modificar, eliminar.
Lo que pasa que actualmente al entrar al sistema levanto todo el archivo a
un arreglo o colección. y si viene un segundo usuario ahi viene el problema.
Podrian ayudarme con algunas pautas???

Gracias

Preguntas similare

Leer las respuestas

#6 Isidro Muñoz
11/02/2005 - 19:11 | Informe spam
Hola Alberto,

Yo no te voy a aconsejar nada en especial porque no se para que quieres
hacer esto, solo te voy a explicar como deberias hacerlo en un fichero
binario para que funcione en red.

1.- Has tu aplicación de crear registro, insertarlo y borrarlos en
monopuesto, cuando todo eso funcione haremos la logica para red.

2.- para que funcione en red:

a) El fichero hay que abrirlo en modo comparticion no en modo
exclusivo, si usas runtime C será _open ( funciona igual que fopen solo que
los handle son int ), el último parametro indica las opciones para permitir
que el fichero puede ser usado por varios usuarios, el modo debe de ser
_S_IREAD | _S_IWRITE , en el segundo parametro se puede indicar si se habra
para escritura, lectura, si se crea si no existe, etc.

b) Antes de hacer una modificación en el fichero tendrás que bloquear la
zona del fichero para que dos usuarios no puedan hacerlo a la vez, antes de
hacer el seek y el write, tienes que usar _locking, para bloquear la zona
que vas a modificar, tiene distintos parametros el normal es usar en el que
se queda en espera por si otro usuario tiene bloqueada la zona, cuando el
otro usuario desbloquee lo bloqueara este usuario y podra hacer la
escritura, hay que contrar que el bloqueo se ha hecho bien antes de
modificar.

c) Antes de insertar un dato al final del ficheros tenemos que hacer un
_locking del final de fichero aunque los bytes no existan en el fichero
todavía.

d) Para borrar un dato tendras que bloquear la zona antes de borrarlo
para que nadie pueda modificarla.

e) Desbloquea de hacer las modificaciones, inserciones o borrado tienes
que desbloquear la zona del fichero con _locking


Y eso es todo.

Imaginate que tu tienes una struct del tipo

struct Datos
{
char FlagBorrado;
char Nombre[50];
char Apellidos[100];
char Telefono[9];
char DNI[15];
} prueba;

Si sabes que no vas a tener mas de 1000 datos ( por decir un algo, y que no
suelen borrar mucha informacion ), perfectamente lo puedes organizar en un
fichero binario.


long offset;
offset = _lseek( file, 0L, SEEK_END);
if ( _locking( file, _LK_LOCK, sizeof( prueba)) ) // comprobar error
return;
_write( file, & prueba, sizeof(prueba));
_lseek( file, offset, SEEK_SET);
_locking( file, _LK_UNLCK , sizeof(prueba));


long offset;
offset = _lseek( file, sizeof(prueba) * 4, SEEK_SET);
if ( _locking( file, _LK_LOCK, sizeof( prueba)) ) // comprobar error
return;
_write( file, & prueba, sizeof(prueba));
_lseek( file, offset, SEEK_SET);
_locking( file, _LK_UNLCK , sizeof(prueba));


long offset;
offset = _lseek( file, sizeof(prueba) * 4, SEEK_SET);
if ( _locking( file, _LK_LOCK, sizeof( prueba)) ) // comprobar error
return;
prueba.FlatBorrado = 'X';
_write( file, & prueba, sizeof(prueba));
_lseek( file, offset, SEEK_SET);
_locking( file, _LK_UNLCK , sizeof(prueba));


No he probado el codigo ni nada, solo espero que se entienda.

las funciones usadas son libreria standard de C, puedes usar la de la api de
windows CreateFile, WriteFile, LockFile

Saludos.
Isidro.


"Alberto" escribió en el mensaje
news:
Estimados:

Quiero compartir un archivo binario con los demas usuarios pero que a ese
archivo puedan añadir registros, modificar, eliminar.
Lo que pasa que actualmente al entrar al sistema levanto todo el archivo a
un arreglo o colección. y si viene un segundo usuario ahi viene el


problema.
Podrian ayudarme con algunas pautas???

Gracias


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida