Ja, No NO es para un virus:
Gracias amigo voy a probar esta noche si mi hija me deja un tiempo de máquina, Gracias.
Ees para una aplicación que le estoy haciendo a mi hermano que me dijo que quería tener todo lo que el necesita de electrónica en una sola base de datos, que sea portable, y tener siempre a donde quiera que va su minienciclopedia que el le pueda agregar cosas y hacer búsquedas. En eso incluye .doc, pdf, html, exe,jpg,bmp etc todo lo que usa para su trabajo de electrónica.
Le programé la aplicación en delphi XE4 todo con la base de datos en sqlite3 funciona muy bien, lo que mejor me quedo es que, escaneo el texto de todos los ficheros pdf,word,xls y lo guardo en un campo aparte entonces se pueden hacer búsquedas de subcadenas de textos en cualquier tipo de fichero y eso lo hace muy rápido incluso mejor que windows porque windows no busca txt dentro de los pdf.
Con este procedimiento que te pongo abajo, extraigo los ficheros (campo blob) de la base de datos al hacer dbclick en el grid que muestra los nombres, y funciona bien pero tengo que crearlo en el disco, o sea lo saco de la base sqlite para el disco duro y luego lo ejecuto con el ShellExecute, todo ok, pero después tengo que eliminar el fichero, y si esta en uso no puedo, lo tengo que ir guardando en un arreglo los nombres con los caminos respectivos y los elimino al cerrar la aplicación que es un poco incómodo, y si hay muchos abiertos se demora cerrando, por eso estaba tratando de buscar algo como lo que me mandas a ver cómo funciona en memoria, o quizás combinados a ver que pasa.
Gracias muchas , como decía mi abuelo Salud y Pesetas para ti
Código Delphi
[-]
.........................
File1 := datamodule1.Qfichero.CreateBlobStream( datamodule1.Qfichero.FieldByName('fichero'), bmReadWrite);
try
File1.Seek(0, 0);
try
FS := TFileStream.Create(n, fmCreate);
except
end;
FechaFicheros[indice].Nombre := ExtractFileName(n);
try
try
FS.CopyFrom(File1, File1.Size);
except
end;
ShellExecute(Form2.Handle,nil,PChar(n),'','',SW_SHOWNORMAL);
finally
try
FS.free;
except
end;
end;
finally
try
File1.free;
except
end;
end;
end;