Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-06-2013
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 16
fide_uci Va por buen camino
Cool Dejar una marca en los archivos

Hola Amigos, saludos.

Necesito hacer una aplicacion a la cual por ejemplo, le arrastre un archivo o le seleccione un archivo (cualquier tipo de archivo ya sea video, audio, aplicacion, etc) y mi aplicacion escriba alguna marca en el, por ejemplo una cadena de texto, que luego mas adelante yo pueda recuperarla para saber si ese archivo fue marcado por mi o no.

Espero me entiendan y gracias de antemano.
Responder Con Cita
  #2  
Antiguo 25-06-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola fide_uci.

Almacenar en una tabla las rutas+nombres de archivo que se seleccionen es a mi criterio la mejor opción. Luego con una simple consulta podrás saber si un archivo ya ha sido seleccionado.

Apegandome a lo que solicitas, pero sin recomendartelo, podrías hacer:
Código Delphi [-]
...
implementation


const
   SIGNATURE = 'TU FIRMA';  

// Agregar firma
procedure TForm1.Mark(const aFileName: string);
var
  i: Integer;
begin
  with TFileStream.Create(aFileName, fmOpenReadWrite) do
  try
    Seek(0, soFromEnd);
    for i:= 0 to Length(SIGNATURE) do
      Write(SIGNATURE[i], 1);
  finally
    Free;
  end;
end;

// Verificar firma
function TForm1.isMarked(const aFileName: string): boolean;
var
  buf: char;
  str: string;
  i  : Integer;
begin
  with TFileStream.Create(aFileName, fmOpenRead) do
  try
    Seek(-Length(SIGNATURE), soFromEnd);
    for i:= 0 to length(SIGNATURE)-1 do
    begin
      Read(buf,1);
      str := str + buf;
    end;
  finally
    Free;
  end;
  Result := str = SIGNATURE;
end;

// Borrar firma
procedure TForm1.DeleteMark(const aFileName: string);
begin
  if isMarked(aFileName) then
    with TFileStream.Create(aFileName, fmOpenReadWrite) do
    try
      Size := Size - Length(SIGNATURE);
    finally
      Free;
    end;
end;
El único inconveniente que encontre de este modo es con los archivos de texto, ya que al abrirlos (vg.: bloc de notas), se visualiza la firma.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 25-06-2013
WkaymQ48 WkaymQ48 is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 43
Poder: 0
WkaymQ48 Va por buen camino
Si los ficheros se van a guardar en NTFS y no los vas a enviar por internet puedes usar "Alternate Data Streams"

http://es.wikipedia.org/wiki/Alternate_Data_Streams

Si los ficheros los copias o mueves la información se copiara o moverá unida a ellos, pero si los copias a un disco fat o los envías por correo electrónico perderás esa información.

Un uso típico de los ADS es cuando bajas un fichero ejecutable de internet, el IE lo marca y de esa forma cuando lo intentas ejecutar te muestra una advertencia.
Responder Con Cita
  #4  
Antiguo 25-06-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.271
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por fide_uci Ver Mensaje
y mi aplicacion escriba alguna marca en el, por ejemplo una cadena de texto, que luego mas adelante yo pueda recuperarla para saber si ese archivo fue marcado por mi o no.
Si necesitas saber si un archivo fue arrastrado, es mejor que te apuntes la ruta, como te han comentado.
No veo factible que modifiques el contenido de un archivo, porque entre otras cosas puedes dejarlo inutilizable. No es trivial modificar un archivo de video, uno de imagen o uno con formato propietario.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 26-06-2013
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 16
fide_uci Va por buen camino
Post

Muchas gracias a todos por sus respuestas. ecfisa gracias, esa esa la solucion que andaba buscando y verdaderamente no me interesa marcar archvos de texto. Neftali, no puedo utilizar una tabla y almacenar los nombres puesto que la idea es algo asi como que mantener un control de los archivos que he proporsionado yo mismo a ciertas personas y bueno esos archivos podrian viajar por cientos de computadoras y lo que ando buscando es la forma de saber si esos que andan x ahi son los que yo entregue a los clientes.

Saludos y cualquier cosa les comento a ver.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Marca Registrada egostar Noticias 7 04-08-2006 14:56:21
shellexecute marca un error martita Varios 2 03-11-2005 17:41:07
marca de agua davidgaldo Impresión 1 18-02-2004 12:47:28
Marca este error! Supermagayin Conexión con bases de datos 1 24-12-2003 08:02:18
Me Marca Error!! Supermagayin Conexión con bases de datos 1 15-12-2003 01:40:22


La franja horaria es GMT +2. Ahora son las 19:54:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi