Gracias por la orientación Neftali y Casimiro
Por si alguien puede interesarle, realice lo siguiente:
Es un código para probar lo que necesito
Código Delphi
[-]
procedure Form1.btn1Click(Sender: TObject);
var
hInst: Cardinal;
Paramt,path: string;
BlobField: TBlobField;
begin
Paramt := 'HC';
path := ExtractFilePath(Application.ExeName) + 'Ecograma.exe';
if not FileExists(path) then
begin
ShowMessage('El archivo "Ecograma.exe" no se encuentra en la ubicación especificada.');
Exit;
end;
hInst :=ShellExecute(0, 'open', PChar(path), PChar(Paramt), nil, SW_SHOWNORMAL);
if hInst <= 32 then
begin
case hInst of
ERROR_FILE_NOT_FOUND:
ShowMessage('El archivo no se encontró.');
ERROR_PATH_NOT_FOUND:
ShowMessage('La ruta especificada no se encontró.');
ERROR_BAD_FORMAT:
ShowMessage('El formato del archivo no es válido.');
else
ShowMessage('Se produjo un error al ejecutar el archivo.');
end;
end;
IBQuery1.Close;
IBQuery1.ParamByName('ECOGRAMA').DataType := ftGraphic;
IBQuery1.ParamByName('ECOGRAMA').LoadFromFile('D:\mychart.sgp', ftBlob);
IBQuery1.Open;
IBQuery1.Transaction.CommitRetaining;
IBQuery2.Close;
IBQuery2.Open;
BlobField := TBlobField(IBQuery2.FieldByName('ECOGRAMA'));
SaveBlobToFile(BlobField, 'C:\mychart.sgp');
end;
procedure form1.SaveBlobToFile(Blob: TBlobField;
const FileName: string);
var
Stream: TFileStream;
begin
Stream := TFileStream.Create(FileName, fmCreate);
try
Blob.SaveToStream(Stream);
finally
Stream.Free;
end;
end;
Con ese trozo de código hago lo siguiente:
Llamo a Ecograma.exe desde mi aplicativo y no permito que se ejecute si le doy doble click a Ecograma.exe, ya que este va a estar en la misma carpeta de mi aplicativo, además si quieren llevarlo
a otro pc y abrirlo no lo podrán hacer.
Código Delphi
[-]
Paramt := 'HC';
hInst :=ShellExecute(0, 'open', PChar(path), PChar(Paramt), nil, SW_SHOWNORMAL);
Una vez se abra Ecograma.exe, se guarde el diagrama (aquí debo modificar para que guarde el diagrama con ciertas condiciones), se guarda el fichero en BD(debo modificarlo para que lo guarde cuando le de guardar desde mi aplicativo, ingresando a la ubicación donde se guarda el diagrama ).
Código Delphi
[-]
IBQuery1.Close;
IBQuery1.ParamByName('ECOGRAMA').DataType := ftGraphic;
IBQuery1.ParamByName('ECOGRAMA').LoadFromFile('D:\mychart.sgp', ftBlob);
IBQuery1.Open;
IBQuery1.Transaction.CommitRetaining;
Finalmente se consulta el campo donde se guardo el fichero y se descarga en C: (aquí también debo hacer varios ajustes).
Código Delphi
[-]
IBQuery2.Close;
IBQuery2.Open;
BlobField := TBlobField(IBQuery2.FieldByName('ECOGRAMA'));
SaveBlobToFile(BlobField, 'C:\mychart.sgp');
procedure form1.SaveBlobToFile(Blob: TBlobField;
const FileName: string);
var
Stream: TFileStream;
begin
Stream := TFileStream.Create(FileName, fmCreate);
try
Blob.SaveToStream(Stream);
finally
Stream.Free;
end;
end;
Probé abrir el fichero descargado y me abre normal y lo puedo editar.
Aun hay trabajo por hacer, pero por ahora va todo viento en popa
Gracias por su colaboración