Delphi4.0으로 개발한 exe file을 DB Blob Field에 저장하였다가 사용자의 요청에 의해 DB에 있는 exe file을 Down받아 사용할 수 있도록 구현하려 하는데 잘 안되네요..... LoadFromFile, SaveToFile을 사용하였더니 exe file은 Down되는...
김영대
•
1999.08.05 23:27
오승섭 께서 말씀하시기를...
> Delphi4.0으로 개발한 exe file을 DB Blob Field에 저장하였다가
> 사용...
> Delphi4.0으로 개발한 exe file을 DB Blob Field에 저장하였다가
> 사용자의 요청에 의해 DB에 있는 exe file을 Down받아 사용할 수 있도록
> 구현하려 하는데 잘 안되네요.....
> LoadFromFile, SaveToFile을 사용하였더니 exe file은 Down되는데
> Dos용 exe로 인식해서 실행이 안되거든요....
>
> DB는 Oracle입니다.
>
> 방법을 아시분은 좀 알려주십시요.....
안녕하세요 김영대입니다
전에 한번 올렸던건데 잘 될려나 모르겠습니다
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DBTables, Db, StdCtrls;
type
TForm1 = class(TForm)
B_BlobToFile: TButton;
B_FileToBlob: TButton;
B_DeleteBlob: TButton;
Database1: TDatabase;
Query1: TQuery;
Table1: TTable;
E_FileName: TEdit;
procedure B_BlobToFileClick(Sender: TObject);
procedure B_FileToBlobClick(Sender: TObject);
procedure B_DeleteBlobClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.B_BlobToFileClick(Sender: TObject);
var
FS_Write: TFileStream;
begin
try
FS_Write := TFileStream.Create(E_FileName.Text, fmCreate);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(' SELECT BLOBFIELD ');
Query1.SQL.Add(' FROM BLOBTABLE ');
Query1.SQL.Add(' WHERE FILENAME = '''+E_FileName.Text+''' ');
Query1.Open;
TBlobField(Query1.FieldByName('BLOBFIELD')).SaveToStream(FS_Write);
// 위의 TFileStream을 쓰지않고 직접 저장하려면 아래의 SaveToFile을 쓰십시요
// TBlobField(Query1.FieldByName('BLOBFIELD')).SaveToFile(E_FileName.Text);
Query1.Close;
finally
FS_Write.Free;
end;
end;
procedure TForm1.B_FileToBlobClick(Sender: TObject);
begin
// Table1.TableName 프로퍼티는 'BLOBTABLE'이 되겠죠
Table1.Open;
Table1.Insert;
Table1.FieldByName('FILENAME').AsString := E_FileName.Text;
TBlobField(Table1.FieldByName('BLOBFIELD')).LoadFromFile(E_FileName.Text);
Table1.Post;
Table1.Close;
end;
procedure TForm1.B_DeleteBlobClick(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(' DELETE FROM BLOBTABLE ');
Query1.SQL.Add(' WHERE FILENAME = '''+E_FileName.Text+''' ');
Query1.ExecSQL;
end;
end.