Buenas amigos,
Aplicando vuestros sabios consejos al final he conseguido algo de lo que pretendía, sacar una imagen de un blob y guardarlo en un archivo para poder visualizarlo externamente.
Lo saqué de otro post.
Código Delphi
[-]
PROCEDURE TFORM1.LEERBLOB;
VAR
BLOB:TSTREAM;
BEGIN
blob := zquery1.CreateBlobStream(zquery1.FieldByName('factura'), bmRead);
try
blob.Seek(0, soFromBeginning);
with TFileStream.Create('PRUEBA.jpg', fmCreate) do
try
CopyFrom(blob, blob.Size)
finally
Free
end;
finally
blob.Free
end;
ShellExecute(0, 'open', PChar('prueba.jpg'), Nil,Nil, SW_SHOWNORMAL);
END;
En este caso, tenia almancenadas solo imagenes jpg, pero cambiando un poco las cosas posteriormente, podre meter finalmente los pdf o lo que sea (tal como decia casimiro, gracias).
El método que comentabais de no usar intermediarios sino guardarlo directamente no he sido capaz de realizarlo

, pero este sirve.
Me falta ahora implementarlo al reves, que no tiene que ser dificil
La última cuestión es relacionado con el shellexecute, funcionar funciona estupendamente, aunque me gustaba más el tprocess, tal y como he visto, pero le falla 1 punto:
- Se necesita un ejecutable a fuerza (si, opendocument funciona pero no es ni mas ni menos que un shellexecute).
Y la ventaja que si he visto es que si abres el archivo con tprocess, hasta que no cierras la aplicacion externa no vuelves a tu programa.
Entonces, de que otra forma se le puede decir a tprocess que abra un archivo, por ejemplo, un pdf, con el programa determinado en la máquina que lo estas corriendo.
saludos y gracias