Delphi - Concurrencia

 
Vista:

Concurrencia

Publicado por Guillermo (9 intervenciones) el 08/12/2009 23:06:07
Hola

Tengo que acceder a un archivo. Mi pregunta es si el Sistema operativo maneja la concurrencia. Es decir si varios usuarios estan queriendo escribir en un archivo, si este bolquea a uno hasta que otro termine de modificarlo.

Muchas gracias.
Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:Concurrencia

Publicado por E.T. (1244 intervenciones) el 08/12/2009 23:22:37
Pues si, el sistema operativo bloquea los archivos, pero depende del programa que está aciendo uso del archivo indicarle al SO que lo bloquee, así pues tu debes de crear un handle al archivo para impedir que alguien más lo use hasta que tu termines, si no creas un handle o una forma de acceso exclusivo al archivo, mas de un usuario puede modificar el archivo y los cambios que se van a mantener serán los del último usuario que guardó sus modificaciones
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Concurrencia

Publicado por Guillermo (9 intervenciones) el 09/12/2009 00:01:38
Gracias por contestar!!!!

para hacer eso que se bolque. Solo hay que abrirlo en modo Rewrite y listo, no??

Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:Concurrencia

Publicado por E.T. (1244 intervenciones) el 09/12/2009 19:21:48
Si usas la forma:
AssignFile(archivo, 'my_archivo.txt');
no se va a bloquear, lo que deberías usar es algo como esto

NOTA: esto es para un archivo simple de texto

Declara esta variable en private
archivo: TFileStream;

primero cargar el archivo en un memo para editarlo, luego ponerlo en modo exclusivo

Memo1.Lines.LoadFromFile('d:\archivo.txt');
archivo := TFileStream.Create('d:\archivo.txt', fmOpenRead);

Al ejecutarse la linea de arriba, si nadie tiene abierto el archivo, inmediatamente queda bloqueado.

luego editas y para guardar usas estas lineas

archivo.Free;
archivo := TFileStream.Create('d:\archivo.txt', fmCreate);
Memo1.Lines.SaveToStream(archivo);

Primero hay que liberar el archivo, para abrirlo de nuevo pero para editarlo, y se guarda lo que hay en el memo, y al cerrar la form o al terminar de editar, liberar el archivo apra alguien más

archivo.Free;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Concurrencia

Publicado por Guillermo (9 intervenciones) el 09/12/2009 22:11:54
Gracias por tu contestacion!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar