[1]번만이라도 알고 싶습니다......제발요.....오늘도 안되면....저 미칠지도 모릅니다....ㅠㅠ
[1]
파일을 올리고 내릴때 exe파일만 깨집니다....
기타 다른 파일들은 멀쩡한데....exe실행파일만 실행이 안됩니다....
왜 그런지 잘 모르겠습니다......
[2]
그리고 데이타베이스 콤퍼넌트를 exclusive모드로 하지않으면 에러가 발생합니다..."LOB트랜잭션에러...."이런식으로.....
exclusive:= true 하면 에러가 없어지구염....근데 여럿이 쓸거라서......
exclusive 를 false로 할수 있는 방법은 없을까염?
소스를 올립니다.....
우선 다운받는거..
///////////////////////////////////////////////////////////////////
procedure TForm1.BitBtn1Click(Sender: TObject);
var
FName: String;
begin
if Application.MessageBox(PChar(' ['+Table1FILE_NAME.AsString+']파일을 하드디스크로 풉니다.'),
'확인',mb_IconQuestion+mb_YesNo) = id_Yes then
begin
FName := 'C:'+Table1FILE_NAME.AsString;
TBlobField(Table1FILE_FILE).SaveToFile(FName);
Application.MessageBox('풀기가 완료되었습니다.','확인',0);
end;
end;
///////////////////////////////////////////////////////////////////
업로드하는거...(dragNdrop하려구...이렇게 했습니다.)
///////////////////////////////////////////////////////////////////
procedure TForm1.WMDropFiles(var Msg: TMessage);
var
Buff : Array[0..255] of Char;
Count : Word;
FullPath : String; //읽어오는 파일의 완전한 경로.
begin
for Count := 0 to DragQueryFile(Msg.WParam, $FFFFFFFF, NIL, 0) - 1 do
begin
with Self do
SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height,
SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
Application.ProcessMessages;
DragQueryFile(Msg.WParam, Count, @Buff, SizeOf(Buff));
FullPath := StrPas(Buff);
GetFileInfo(FullPath);
DBEdit1.Text := UpperCase(ExtractFilename(FullPath)); // 파일 이름.
Application.ProcessMessages;
Table1.Insert;
DragQueryFile(Msg.WParam, Count, @Buff, SizeOf(Buff));
FullPath := StrPas(Buff);
GetFileInfo(FullPath);
DBEdit1.Text := UpperCase(ExtractFilename(FullPath)); // 파일 이름.
Application.ProcessMessages;
TBlobField(Table1.FieldByName('FILE_FILE')).LoadFromFile(FullPath);
Table1.Post;
ShowMessage('복사가 완료되었습니다.');
with Self do
SetWindowPos(Handle, HWND_NOTOPMOST, Left, Top, Width, Height, 0);
end;
DragFinish(Msg.WParam);
///////////////////////////////////////////////////////////
GetFileInfo는 사용자 정의 프로시져입니다....
파일정보를 가져오지요....
아시는 분 돔 바랍니다.
테이블 구조는 아래와 같습니다.
file_name varchar2
file_file blob
file_update date
대강 블럽필드의 파일을 생성하는 코드를 함 만들어 봤어요..
안돌려 봐서 잘 될지는 모르겠어여.. 안되면 말구여.. ㅠㅠ
좀이라도 참고가 되길 바람다..
var
FS: TFileStream;
BS: TBlobStream;
.......
begin
..........
FS := TFileStream.Create(FileName, fmCreate);
BS := TBlobStream.Create(TBlobField(Field), bmRead);
try
FS.SetSize(BS.Size);
FS.CopyFrom(BS, BS.Size);
.....
finally
BS.Free;
FS.Free;
end;
end;
즐푸하세여..
타락천사..