Q&A

  • 김영대님 BLOB 좀 봐주세요.급해요.
델파이 4.0이구요 db는 oracle 입니다.

Blob Field에 exe, 워드문서, txt문서 등을 long binary로 저장하고

저장된 레코드를 다시 복원하여 하드디스크상의 파일로 저장하려 합니다.

그런나 저장은 되는거 같은데 복원하면 txt 외에는 실행이 안되고

다른 형태의 파일은 제대로 처리되지 않습니다.

물론 db의 blob size는 조정했구요(500000).

어디가 틀렸는지 살펴보시고 답변부탁드립니다.

참고로 실행파일을 db에 저장했다가 다른이름으로 저장하면

사이즈도 예전 파일과 같습니다. 그러나

실행해 보면 도스창이 나타나고 메모리가 부족하다는 메세지가

나면서 종료합니다.

savetofile과 savetostream의 차이점에 대해서도 간략히 개요만이라도

설명해주시면 고맙구요. 아시다시피 델파이 help는 영 꽝이라서.



//db에 저장

if trim(edi_flongname.text) <> '' then

begin

Quy_MailFile.Insert;

Quy_MailFileAgency_no.AsString := Quy_MasterAgency_no.AsString;

Quy_MailFileMail_dt.AsString := Quy_MasterMail_dt.AsString;

Quy_MailFileMail_Seq.Value := Quy_MasterMail_Seq.Value;

Quy_MailFileMail_File.LoadFromFile(edi_flongname.Text);

Quy_MailFile.Post;

end;



// 저장된 record를 query해서 파일로 저장

if trim(edi_fname.text) <> '' then

begin

SaveDialog1.FileName := edi_flongname.Text;

if SaveDialog1.Execute then

begin

Quy_MailFile.Close;

Quy_MailFile.Open;

Quy_MailFileMail_File.SaveToFile(SaveDialog1.FileName);

end;

end;



5  COMMENTS
  • Profile
    유효종 2000.02.03 02:57
    내용이 길어지니

    개인적으로 Mail 보내드렸습니다.



    여기만 보고 계실것 같아서.....

  • Profile
    유효종 2000.02.02 22:19
    좋은날 wrote:

    > 델파이 4.0이구요 db는 oracle 입니다.

    > Blob Field에 exe, 워드문서, txt문서 등을 long binary로 저장하고

    > 저장된 레코드를 다시 복원하여 하드디스크상의 파일로 저장하려 합니다.

    > 그런나 저장은 되는거 같은데 복원하면 txt 외에는 실행이 안되고

    > 다른 형태의 파일은 제대로 처리되지 않습니다.

    > 물론 db의 blob size는 조정했구요(500000).

    > 어디가 틀렸는지 살펴보시고 답변부탁드립니다.

    > 참고로 실행파일을 db에 저장했다가 다른이름으로 저장하면

    > 사이즈도 예전 파일과 같습니다. 그러나

    > 실행해 보면 도스창이 나타나고 메모리가 부족하다는 메세지가

    > 나면서 종료합니다.

    > savetofile과 savetostream의 차이점에 대해서도 간략히 개요만이라도

    > 설명해주시면 고맙구요. 아시다시피 델파이 help는 영 꽝이라서.

    >

    > //db에 저장

    > if trim(edi_flongname.text) <> '' then

    > begin

    > Quy_MailFile.Insert;

    > Quy_MailFileAgency_no.AsString := Quy_MasterAgency_no.AsString;

    > Quy_MailFileMail_dt.AsString := Quy_MasterMail_dt.AsString;

    > Quy_MailFileMail_Seq.Value := Quy_MasterMail_Seq.Value;

    > Quy_MailFileMail_File.LoadFromFile(edi_flongname.Text);

    > Quy_MailFile.Post;

    > end;

    >

    > // 저장된 record를 query해서 파일로 저장

    > if trim(edi_fname.text) <> '' then

    > begin

    > SaveDialog1.FileName := edi_flongname.Text;

    > if SaveDialog1.Execute then

    > begin

    > Quy_MailFile.Close;

    > Quy_MailFile.Open;

    > Quy_MailFileMail_File.SaveToFile(SaveDialog1.FileName);

    > end;

    > end;

    >



    oracle 의 create table SQL 문장좀 볼 수 있을까요?

    실행파일 필드를 무슨 datatype 으로 했는지?





    김영대님 이 아니라 죄송합니다.

  • Profile
    좋은날 2000.02.03 01:16
    유효종 wrote:

    > 좋은날 wrote:

    > > 델파이 4.0이구요 db는 oracle 입니다.

    > > Blob Field에 exe, 워드문서, txt문서 등을 long binary로 저장하고

    > > 저장된 레코드를 다시 복원하여 하드디스크상의 파일로 저장하려 합니다.

    > > 그런나 저장은 되는거 같은데 복원하면 txt 외에는 실행이 안되고

    > > 다른 형태의 파일은 제대로 처리되지 않습니다.

    > > 물론 db의 blob size는 조정했구요(500000).

    > > 어디가 틀렸는지 살펴보시고 답변부탁드립니다.

    > > 참고로 실행파일을 db에 저장했다가 다른이름으로 저장하면

    > > 사이즈도 예전 파일과 같습니다. 그러나

    > > 실행해 보면 도스창이 나타나고 메모리가 부족하다는 메세지가

    > > 나면서 종료합니다.

    > > savetofile과 savetostream의 차이점에 대해서도 간략히 개요만이라도

    > > 설명해주시면 고맙구요. 아시다시피 델파이 help는 영 꽝이라서.

    > >

    > > //db에 저장

    > > if trim(edi_flongname.text) <> '' then

    > > begin

    > > Quy_MailFile.Insert;

    > > Quy_MailFileAgency_no.AsString := Quy_MasterAgency_no.AsString;

    > > Quy_MailFileMail_dt.AsString := Quy_MasterMail_dt.AsString;

    > > Quy_MailFileMail_Seq.Value := Quy_MasterMail_Seq.Value;

    > > Quy_MailFileMail_File.LoadFromFile(edi_flongname.Text);

    > > Quy_MailFile.Post;

    > > end;

    > >

    > > // 저장된 record를 query해서 파일로 저장

    > > if trim(edi_fname.text) <> '' then

    > > begin

    > > SaveDialog1.FileName := edi_flongname.Text;

    > > if SaveDialog1.Execute then

    > > begin

    > > Quy_MailFile.Close;

    > > Quy_MailFile.Open;

    > > Quy_MailFileMail_File.SaveToFile(SaveDialog1.FileName);

    > > end;

    > > end;

    > >

    >

    > oracle 의 create table SQL 문장좀 볼 수 있을까요?

    > 실행파일 필드를 무슨 datatype 으로 했는지?

    >

    >

    > 김영대님 이 아니라 죄송합니다.





    죄송은요 뭘, 제가 고맙죠.

    빠른 답변 부탁드립니다.



    테입블 create 문장입니다.



    CREATE TABLE AIMS.TBMAIL_FILE (

    AGENCY_NO VARCHAR2(4) NOT NULL,

    MAIL_DT VARCHAR2(8) NOT NULL,

    MAIL_SEQ NUMBER(5, 0) NOT NULL,

    MAIL_FILE LONG RAW

    )

    TABLESPACE AIMS

    PCTFREE 10

    PCTUSED 80

    INITRANS 1

    MAXTRANS 255

    STORAGE (INITIAL 4194304

    NEXT 1048576

    MINEXTENTS 1

    MAXEXTENTS 120

    PCTINCREASE 0

    FREELISTS 1

    FREELIST GROUPS 1)



  • Profile
    유효종 2000.02.03 01:42
    글쎄요 보내주신 내용으로 봐서는 특이한점이 없는것으로 보입니다.

    먼저 등록하신 프로그램 내용도 물론 이상 없는것 같구요



    그리고 savetofile과 savetostream 의 차이점에 대해서는

    다음과 같습니다.



    savetostream 은 TStream 을 이용하여 binary 파일을 메모리에 동적으로

    올려놓는 프로시져구요



    savetofile 은 단지 파일명을 파라미터로 줘서 savetostream 에서 하는일을

    할 뿐입니다.



    지금 제가 oracle test 할 수 없어서 자세한 원인은 찾을 수 없어 안타깝군요...



    하지만 다음의 내용을 체크 해 보세요 아마 원인을 찾을 수 있을지



    1. db 에 저장 한 파일과 db 에서 빼낸 파일과 파일 크기를 비교해 보세요.

    틀리다면 oracle 문제 입니다.(뭔진 모르지만)



    2. 실행파일만 테스트 하지 마시고 TEXT 파일을 테스트 해 보세요.



    3. Text 파일이 이상 없다면 다음으로 BMP 파일을 테스트 해 보시구요.



    4. 그것도 된다면 파일 크기가 작은 실행 파일을 테스트 해 보세요.



    이렇게 테스트 해 보시구요 다시 제게 연락 주세요.





    - 프리랜서 유효종 -

  • Profile
    좋은날 2000.02.03 02:16
    유효종 wrote:

    > 글쎄요 보내주신 내용으로 봐서는 특이한점이 없는것으로 보입니다.

    > 먼저 등록하신 프로그램 내용도 물론 이상 없는것 같구요

    >

    > 그리고 savetofile과 savetostream 의 차이점에 대해서는

    > 다음과 같습니다.

    >

    > savetostream 은 TStream 을 이용하여 binary 파일을 메모리에 동적으로

    > 올려놓는 프로시져구요

    >

    > savetofile 은 단지 파일명을 파라미터로 줘서 savetostream 에서 하는일을

    > 할 뿐입니다.

    >

    > 지금 제가 oracle test 할 수 없어서 자세한 원인은 찾을 수 없어 안타깝군요...

    >

    > 하지만 다음의 내용을 체크 해 보세요 아마 원인을 찾을 수 있을지

    >

    > 1. db 에 저장 한 파일과 db 에서 빼낸 파일과 파일 크기를 비교해 보세요.

    > 틀리다면 oracle 문제 입니다.(뭔진 모르지만)

    >

    > 2. 실행파일만 테스트 하지 마시고 TEXT 파일을 테스트 해 보세요.

    >

    > 3. Text 파일이 이상 없다면 다음으로 BMP 파일을 테스트 해 보시구요.

    >

    > 4. 그것도 된다면 파일 크기가 작은 실행 파일을 테스트 해 보세요.

    >

    > 이렇게 테스트 해 보시구요 다시 제게 연락 주세요.

    >

    >

    > - 프리랜서 유효종 -



    1. 사이즈 같습니다.

    2. text 됩니다.

    3. bmp, jpg 안됩니다.

    4. 사이즈 작은 실행파일도 안됩니다.

    저도 사이즈 문제 같았는데 그게 아닌거 같아요.

    10K zip 도 올려봤는데 그겄도 안되요.

    좌우가 text 빼고는 전부안됩니다.

    워드, 파워포인트문서, 압축파일, 실행파일등등...

    물론 db의 blob size와 cache size도 조정해봤지만...



    다시 한번 고견 부탁드립니다.