::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-03-05 10:22:33, Hit : 4721, Vote : 1323
 WAVE 파일을 테이블에 저장하고 불러와서 연주하기

// WAVE 파일등 임의의 Binary 파일을 DB의 table에 저장하려면
// 필드 타입을 BLOB 형(ORACLE은 Long Raw 형)으로 만들어야 합니다
// 아래 예제는 Table1BINA 이라는 Table1에 BINA라는 BLOB형 필드가
// 있다고 가정하여 보시면 됩니다


uses
  MMSystem; // WAVE 파일을 연주하기 위해서 포함

// DB의 WAVE을 읽어와서 연주하는 루틴
procedure TForm1.PlaySndFromDBClick(Sender: TObject);
var
  s: TBlobStream;
  FData: Pointer;
  MemSize: integer;
begin
  s := TBlobStream.create(Table1BINA, bmRead);
  MemSize := S.Size;
  FData := AllocMem(MemSize);
  s.Read(FData^, MemSize);
  sndPlaySound(FData, SND_MEMORY or SND_SYNC);
  s.free;
  FreeMem(FData, MemSize);
end;

// DB의 table에 WAVE 파일을 통째로 저장하는 루틴
procedure TForm1.SaveWaveToDBClick(Sender: TObject);
var
  F: TFileStream;
  FData: pointer;
  FDataSize, x: longint;
  BS: TBlobStream;
begin
  if FileListBox1.itemindex < 0 then
    exit;
  F := TFileStream.Create(expandfilename(filelistbox1.filename), fmOpenRead);
  try
    FData := AllocMem(F.Size);
    FDataSize := F.Size;
    x := F.Read(FData^, FDataSize);
    table1.edit;
    BS := TBlobStream.create(Table1BINA, bmWrite);
    BS.Write(FData^, FDataSize);
    table1.post;
    table1.refresh;
    BS.free;
    table1.post;
    FreeMem(FData, FDataSize);
  finally
    F.Free;
    table1.refresh;
  end;
end;

// WAVE 파일을 연주하는 루틴
procedure TForm1.PlaySndFromFileClick(Sender: TObject);
var
  f: file;
  p: pointer;
  fs: integer;
begin
  if filelistbox1.itemindex < 0 then
    exit;
  AssignFile(f, expandfilename(FileListBox1.filename));
  Reset(f,1);
  fs := FileSize(f);
  GetMem(p, fs);
  try
    BlockRead(f, p^, fs);
    CloseFile(f);
    sndPlaySound(p, SND_MEMORY or SND_SYNC);
  finally
    FreeMem(p, fs);
  end;
end;





731   [시스템] 파일(들)을 클립보드로 복사하여 탐색기에서 붙여넣기 하기  김영대 2003/04/10 5297 1350
730   [일반/컴포넌트] StringGrid - multiline text  김영대 2003/03/07 5779 1349
729   [윈도우즈 API] 델파이에서 시간을 기다리는 함수  김영대 2003/03/04 5865 1349
728   [일반/컴포넌트] Search and Select  김영대 2004/08/03 5154 1348
727   [일반/컴포넌트] TStringGrid 인쇄하기  김영대 2003/03/07 5424 1347
726   [일반/컴포넌트] 리스트뷰에서 동적으로 칼럼삭제하기  김영대 2003/03/05 4999 1347
725   [COM/OLE] 윈도우즈 "검색: 파일 또는 폴더" 화면  김영대 2004/07/25 4827 1345
724   [시스템] 내 프로그램의 실행 우선순의 바꾸기  김영대 2004/07/24 4947 1344
723   [COM/OLE] TWebBrowser 에서 새창을 열때 cookie 공유되게 하기  김영대 2004/11/24 6576 1343
722   [일반/컴포넌트] Caption Bar위에 버튼 올리기  김영대 2003/03/05 4903 1342
721   [윈도우즈 API] 바탕화면의 모든 창 최소화하기  김영대 2006/02/28 5579 1341
720   [윈도우즈 API] TaskBar의 다양한 기능제어  김영대 2003/03/07 4991 1341
719   [일반/컴포넌트] 투명한 Bitmaps 인쇄  김영대 2003/03/07 5721 1340
718   [시스템] DOS 명령어 실행하고 결과 받아오기 (Win2k,XP)  김영대 2004/08/03 5608 1339
717   [일반/컴포넌트] 폼에 자석효과 주기 (Delphi 6 이하)  김영대 2005/08/04 6355 1338
716   [시스템] CD-ROM 문 열기/닫기  김영대 2003/03/04 4730 1338
715   [윈도우즈 API] 세로 타이틀바 만들기  김영대 2004/08/04 4896 1337
714   [일반/컴포넌트] 문자열의 암호화(Password 처리) & INI 파일  김영대 2003/03/06 5864 1337
713   [시스템] IP address 바꾸기  김영대 2003/03/07 5351 1336
712   [시스템] System, User, GDI Resource  김영대 2003/03/07 4589 1334
711   [윈도우즈 API] 프린터 스풀러에 대기중인 job의 수  김영대 2003/03/04 4528 1333
710   [일반/컴포넌트] StringGrid의 중간에 제목 Cell 두기  김영대 2003/03/07 5278 1332
709   [일반/컴포넌트] DateTimePicker 의 표시형식(format) 바꾸기  김영대 2003/03/04 6203 1331
708   [시스템] Windows NT 에서 한글 NT인지 영문 NT인지 구분하는 방법  김영대 2003/03/04 5140 1331
707   [시스템] Sleep 중에도 타이머 이벤트 발생시키기  김영대 2004/08/09 5743 1330
706   [시스템] PrintScreen 키가 눌렸는지 검사하기  김영대 2003/03/04 4270 1330
705   [네트웍/인터넷] Internet에 연결중인지 여부를 알려면...  김영대 2003/03/04 5171 1330
704   [일반/컴포넌트] 실행파일에서 잃어버린 DFM 파일 뽑아내기  김영대 2004/08/17 5008 1329
703   [COM/OLE] TWebBrowser에 직접 HTML 소스코드 넣기  김영대 2004/12/26 6388 1328
702   [윈도우즈 API] 윈도우즈 탐색기와의 연동  김영대 2003/03/04 5473 1328
701   [시스템] 프린터의 "용지 공급" 리스트 구하기  김영대 2003/03/07 4620 1327
700   [윈도우즈 API] 폼의 최대/최소화 막기  김영대 2003/03/06 4941 1327
699   [시스템] 윈도우즈 사용자 계정 정보 구하기  김영대 2004/08/03 5146 1326
698   [일반/컴포넌트] WMF 를 BMP 로 변환하기  김영대 2003/03/07 4307 1326
697   [윈도우즈 API] 작업표시줄이 자동 숨김인지 검사  김영대 2003/03/04 5032 1326
696   [윈도우즈 API] 키보드의 임의키 발생  김영대 2003/03/04 5210 1326
695   [윈도우즈 API] 도구모음 Bar는 어떻게 만드는지...  김영대 2003/03/04 4692 1325
694   [데이터베이스] DB그리드 Row Height를 조절할 수 있는 콤포넌트  김영대 2003/03/05 5839 1324
693   [윈도우즈 API] Application의 최소화시 Zooming 효과 주기  김영대 2003/03/05 4474 1324
692   [일반/컴포넌트] TMemo 스크롤 다운 시키기  김영대 2003/03/29 4580 1323

[1][2][3][4][5][6] 7 [8][9][10]..[25] [다음 10개]
 

Copyright 1999-2019 Zeroboard / skin by zero