Ver Mensaje Individual
  #37  
Antiguo 22-09-2012
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Reputación: 20
anubis Va por buen camino
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
Responder Con Cita