亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mmwave.pas

?? 一套及時通訊的原碼
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
         if FPWAVEIOCB^.hmmio <> 0 then
            if wioSetIOBufferSize(FPWAVEIOCB,FIOBufSize) <> 0 then
               raise EMMWaveError.Create(LoadResStr(IDS_WFIOBUFERROR));
   end;
end;

{-- TMMWave --------------------------------------------------------------}
Procedure TMMWave.OpenFile;
begin
   if (FPWAVEIOCB <> Nil) then
   begin
      if wioWaveOpen(FPWAVEIOCB) <> 0 then
         raise EMMWaveError.Create(LoadResStr(IDS_WFOPENERROR));

      if wioSetIOBufferSize(FPWAVEIOCB,FIOBufSize) <> 0 then
         raise EMMWaveError.Create(LoadResStr(IDS_WFIOBUFERROR));

      { build the region list }
      InitRegionList;

      { build the fade list }
      InitPlayFadeList(False);

      FOpen := True;

      { update the position }
      Position := GetPosition;
   end;
end;

{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.CloseFile;
begin
   if (FPWAVEIOCB <> Nil) then wioWaveClose(FPWAVEIOCB);
   FOpen := False;
   FPosition := 0;
   FBytesLeft := 0;
end;

{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.ResetFile;
begin
end;

{-- TMMWave --------------------------------------------------------------}
function TMMWave.GetBytesLeft: LongInt;
begin
   Result := FBytesLeft;
end;

{$IFDEF BCB}
{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.CreateFileC(const FileName: TFileName; pwfx: PWaveFormatEx);
begin
   { bug fix for C++ Builder }
   CreateFile(FileName,pwfx);
end;
{$ENDIF}

{-- TMMWave --------------------------------------------------------------}
{ TODO: Exceptions und bessere Fehlermeldungen, FreeSpace testen !!!!     }
procedure TMMWave.CreateFile(const FileName: TFileName; pwfx: PWaveFormatEx);
Label ERROR_CREATE;
Var
   aResult : Boolean;
   DestFile: PChar;
   lpwioDst: PWaveIOCB;

begin
   aResult := False;

   if (FMemoryWave <> nil) then
      raise EMMWaveError.Create(LoadResStr(IDS_WFMEMFILEERROR));

   if (pwfx = Nil) or (FileName = '') then exit;

   DestFile := StrAlloc(MAX_PATH+1);
   StrPCopy(DestFile, ExpandUNCFileName(FileName));

   if not wioGetFullPathName(DestFile) then
      goto ERROR_CREATE;

   { delete the real destination file (if exits) }
   if wioFileExists(DestFile) then wioFileDelete(DestFile);

   { create the header for the new file }
   if wioCreateFileInfo(lpwioDst, pwfx) <> 0 then
      goto ERROR_CREATE;

   { write the new Header to disc }
   if wioWriteFileInfo(lpwioDst, DestFile) <> 0 then
      goto ERROR_CREATE;

   { set the structure }
   PWaveIOInfo := lpwioDst;

   if (FMemoryWave = nil) then
      { set the FileName }
      FFileName := StrPas(DestFile);

   if wioSetIOBufferSize(FPWAVEIOCB,FIOBufSize) <> 0 then
      raise EMMWaveError.Create(LoadResStr(IDS_WFIOBUFERROR));

   aResult := True;

ERROR_CREATE:

   StrDispose(DestFile);
   if not aResult then
   begin
      wioWaveClose(lpwioDst);
      wioFreeFileInfo(lpwioDst);
      raise EMMWaveError.Create(LoadResStr(IDS_WFCREATEERROR));
   end;
end;

{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.SaveToFile(const Filename: TFileName);
Label ERROR_SAVE;
Var
   Result : Boolean;
   Cancel: Boolean;
   TmpFile, DestFile: PChar;
   lpwioDst: PWAVEIOCB;
   pData: PChar;
   BufSize, CurByte, NumBytes, NumRead: DWORD;

begin
   Result := False;
   Cancel := False;
   if (FPWAVEIOCB = Nil) or (FileName = '') then
      raise EMMWaveError.Create(LoadResStr(IDS_WFINVALIDPARAMS));

   pData := nil;
   lpwioDst := nil;
   TmpFile := StrAlloc(MAX_PATH+1);
   DestFile := StrAlloc(MAX_PATH+1);

   { open the source file and set position to 0 }
   Position := 0;
   OpenFile;

   { how many bytes we have to save }
   NumBytes := BytesLeft;

   { create the dest. WAVEIOINFO }
   if wioCreateFileInfo(lpwioDst, PWaveFormat) <> 0 then
      goto ERROR_SAVE;

   { copy all known chunks to the destination }
   if wioCopyFileInfo(lpwioDst, FPWaveIOCB) <> 0 then
      goto ERROR_SAVE;

   {$IFDEF WIN32}
   {$IFDEF TRIAL}
   {$DEFINE _HACK3}
   {$I MMHACK.INC}
   {$ENDIF}
   {$ENDIF}

   { first create a temporary file for the destination file }
   StrPCopy(TmpFile, ExpandUNCFileName(FileName));
   if Not wioFileCreateTemp(TmpFile) then
      goto ERROR_SAVE;

   { write the new Header to disc }
   if wioWriteFileInfo(lpwioDst, TmpFile) <> 0 then
      goto ERROR_SAVE;

   { compute source bytes to read (round down to nearest }
   { block for one second of data)                       }
   with PWaveFormat^ do
   BufSize := nAvgBytesPerSec-(nAvgBytesPerSec mod nBlockAlign);

   { allocate the data buffer for reading/writing data }
   pData := GlobalAllocMem(BufSize);
   if (pData = Nil) then goto ERROR_SAVE;

   CurByte := 0;
   while CurByte < NumBytes do
   begin
      { read the data }
      NumRead := min(BufSize, NumBytes - CurByte);
      NumRead := ReadDataBytes(pData, NumRead);
      if (NumRead <= 0) then break;

      inc(CurByte, NumRead);

      { have we space on the drive ? }
      if not GetDiskFree(TmpFile, NumRead+DWORD(IOBufferSize)+10240) then
         goto ERROR_SAVE;

      { write the data out as we go... }
      if wioWaveWriteData(lpwioDst, pData, NumRead) <> NumRead then
         goto ERROR_SAVE;

      { let the user have some time }
      Application.ProcessMessages;
      Progress(CurByte, NumBytes, Cancel);
      if Cancel then goto ERROR_SAVE;
   end;

   { close source and temp file }
   CloseFile;
   wioWaveClose(lpwioDst);

   StrPCopy(DestFile, ExpandUNCFileName(FileName));

   { delete the real destination file (if exits) }
   if wioFileExists(DestFile) then wioFileDelete(DestFile);

   { rename the temp file to the destination file }
   if mmioRename(TmpFile, DestFile, Nil, 0) <> 0 then
      goto ERROR_SAVE;

   Result := True;

ERROR_SAVE:

   GlobalFreeMem(Pointer(pData));
   CloseFile;
   wioWaveClose(lpwioDst);
   wioFreeFileInfo(lpwioDst);
   { make sure we delete the temp file }
   if wioFileExists(TmpFile) then wioFileDelete(TmpFile);
   StrDispose(TmpFile);
   StrDispose(DestFile);
   if not Result then
      if not Cancel then
         raise EMMWaveError.Create(LoadResStr(IDS_WFSAVEERROR))
      else
         raise EMMWaveError.Create(LoadResStr(IDS_WFSAVEABORTED))
end;

{-- TMMWave --------------------------------------------------------------}
{ TODO: Exceptions und bessere Fehlermeldungen, FreeSpace testen !!!!     }
procedure TMMWave.ConvertFile(const FileName: TFileName; pwfxDst: PWaveFormatEx);
Label ERROR_CONVERT;
Var
   aResult: Boolean;
   Cancel: Boolean;
   TmpFile, DestFile: PChar;
   lpwioDst: PWAVEIOCB;
   pwfDst: PPCMWaveFormat;
   SrcBufSize, DstBufSize: Longint;
   pSrc, pDst: PChar;
   CurByte, NumBytes, NumRead: DWORD;

begin
   aResult := False;
   Cancel := False;

   if (FPWAVEIOCB = Nil) or (pwfxDst = Nil) or (FileName = '') then
      raise EMMWaveError.Create(LoadResStr(IDS_WFINVALIDPARAMS));

   pwfDst := PPCMWaveFormat(pwfxDst);

   if Not pcmIsValidFormat(PWaveFormatEx(PWaveFormat)) or
      Not pcmIsValidFormat(PWaveFormatEx(pwfDst)) then
      raise EMMWaveError.Create(LoadResStr(IDS_WFCONVERTINVALID));

   pSrc := nil;
   pDst := nil;
   lpwioDst := nil;
   TmpFile := StrAlloc(MAX_PATH+1);
   DestFile := StrAlloc(MAX_PATH+1);

   { open the source file and set position to 0 }
   Position := 0;
   OpenFile;

   { set the bytes we have to convert }
   NumBytes := BytesLeft;

   { create the dest. WAVEIOINFO }
   if wioCreateFileInfo(lpwioDst, PWaveFormatEx(pwfDst)) <> 0 then
      goto ERROR_CONVERT;

   { copy all known chunks to the destination }
   if wioCopyFileInfo(lpwioDst, FPWaveIOCB) <> 0 then
      goto ERROR_CONVERT;

   { first create a temporary file for the destination file }
   StrPCopy(TmpFile, ExpandUNCFileName(FileName));
   if Not wioFileCreateTemp(TmpFile) then
      goto ERROR_CONVERT;

   { write the new Header to disc }
   if wioWriteFileInfo(lpwioDst, TmpFile) <> 0 then
      goto ERROR_CONVERT;

{$IFDEF WIN32}
   { compute source bytes to read (round down to nearest }
   { block for one second of data)                       }
   with PWaveFormat^ do
   SrcBufSize := nAvgBytesPerSec-(nAvgBytesPerSec mod nBlockAlign);
{$ELSE}
   { make sure the DstBufSize can not exceed 64 K ! }
   SrcBufSize := Min($FF0, NumBytes * 4 div 4);
{$ENDIF}
   DstBufSize := pcmConvertSizeOutputData(pwfDst, PPCMWaveFormat(PWaveFormat), SrcBufSize);

   { allocate the src and dst buffers for reading/converting data }
   pSrc := GlobalAllocMem(SrcBufSize);
   if (pSrc = Nil) then goto ERROR_CONVERT;
   pDst := GlobalAllocMem(DstBufSize);
   if (pDst = Nil) then goto ERROR_CONVERT;

   CurByte := 0;
   while CurByte < NumBytes do
   begin
      { read the data to convert }
      NumRead := min(SrcBufSize, NumBytes - CurByte);
      NumRead := ReadDataBytes(pSrc, NumRead);
      if (NumRead <= 0) then break;

      inc(CurByte, NumRead);

      { convert data }
      NumRead := pcmConvert(pwfDst, pDst, PPCMWaveFormat(PWaveFormat), pSrc, NumRead);
      if (NumRead <= 0) then break;

      { have we space on the drive ? }
      if not GetDiskFree(TmpFile, NumRead+DWORD(IOBufferSize)+10240) then
         goto ERROR_CONVERT;

      { write the data out as we go... }
      if wioWaveWriteData(lpwioDst, pDst, NumRead) <> NumRead then
         goto ERROR_CONVERT;

      { let the user have some time }
      Application.ProcessMessages;
      Progress(CurByte, NumBytes, Cancel);
      if Cancel then goto ERROR_CONVERT;
   end;

   { close source and temp file }
   CloseFile;
   wioWaveClose(lpwioDst);

   StrPCopy(DestFile, ExpandUNCFileName(FileName));

   { delete the real destination file (if exits) }
   if wioFileExists(DestFile) then wioFileDelete(DestFile);

   { rename the temp file to the destination file }
   if mmioRename(TmpFile, DestFile, Nil, 0) <> 0 then
      goto ERROR_CONVERT;

   aResult := True;

ERROR_CONVERT:

   CloseFile;
   wioWaveClose(lpwioDst);
   wioFreeFileInfo(lpwioDst);
   GlobalFreeMem(Pointer(pSrc));
   GlobalFreeMem(Pointer(pDst));
   { make sure we delete the temp file }
   if wioFileExists(TmpFile) then wioFileDelete(TmpFile);
   StrDispose(TmpFile);
   StrDispose(DestFile);
   if not aResult then
      if not Cancel then
         raise EMMWaveError.Create(LoadResStr(IDS_WFCONVERTERROR))
      else
         raise EMMWaveError.Create(LoadResStr(IDS_WFCONVERTABORTED));
end;

{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.SetTimeFormat(aValue: TMMTimeFormats);
begin
   if (aValue <> FTimeFormat) then
   begin
      FTimeFormat := aValue;
      InitRegionList;
   end;
end;

{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.SetStartPos(aPosition: Longint);
begin
   if (FPWAVEIOCB <> Nil) then
   begin
      FStartPos := MinMax(TimeFormatToSamples(aPosition),0,FEndPos);
      InitRegionList;
   end;
end;

{-- TMMWave --------------------------------------------------------------}
function TMMWave.GetStartPos: Longint;
begin
   if (FPWAVEIOCB <> Nil) then
       Result := SamplesToTimeFormat(FStartPos)
   else
       Result := -1;
end;

{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.SetEndPos(aPosition: Longint);
begin
   if (FPWAVEIOCB <> Nil) then
   with FPWAVEIOCB^ do
   begin
      FEndPos := MinMax(TimeFormatToSamples(aPosition),FStartPos,dwDataSamples);
      InitRegionList;
   end;
end;

{-- TMMWave --------------------------------------------------------------}
function TMMWave.GetEndPos: Longint;
begin
   if (FPWAVEIOCB <> Nil) then
      Result := SamplesToTimeFormat(FEndPos)
   else
      Result := -1;
end;

{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.SetPosition(aPosition: Longint);
var
   SampleCount,aPos: Longint;
   i: integer;
begin
   if (FPWAVEIOCB <> Nil) then
   with FPWAVEIOCB^ do
   begin
      FPosition := TimeFormatToSamples(aPosition);
      if FOpen then
      begin
         aPos := MinMax(RealSamplesToSamples(FPosition),0,LengthSamples);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人黄色大片在线观看| 日本欧美一区二区三区乱码| 国产亚洲精品bt天堂精选| 欧美大度的电影原声| 日韩精品中文字幕一区二区三区 | 欧美揉bbbbb揉bbbbb| 色综合久久久久综合体| 色综合激情五月| 欧美日韩情趣电影| 日韩欧美一级在线播放| 国产亚洲午夜高清国产拍精品| 久久嫩草精品久久久久| 日本一二三不卡| 国产精品久久久久久亚洲伦| 亚洲精品成a人| 天天综合网天天综合色| 久久99久国产精品黄毛片色诱| 国产精品12区| 91在线porny国产在线看| 欧美日韩精品欧美日韩精品一综合| 884aa四虎影成人精品一区| 欧美成人乱码一区二区三区| 国产精品全国免费观看高清 | 欧美色图一区二区三区| 在线成人av网站| 久久在线观看免费| 亚洲欧美乱综合| 日韩成人一区二区三区在线观看| 国产乱子轮精品视频| 91蝌蚪porny九色| 欧美成人伊人久久综合网| 国产欧美日本一区二区三区| 亚洲一区二区精品视频| 国产毛片精品一区| 欧美天天综合网| 国产亚洲精品中文字幕| 亚洲地区一二三色| 成人性生交大片免费看在线播放| 在线一区二区三区四区五区| 欧美mv日韩mv国产| 亚洲电影中文字幕在线观看| 国产一区二区不卡老阿姨| 在线免费观看成人短视频| 久久综合色8888| 亚洲v日本v欧美v久久精品| 成人美女在线观看| 日韩欧美第一区| 亚洲第一主播视频| 一本色道久久综合狠狠躁的推荐 | 美女一区二区在线观看| 日本电影亚洲天堂一区| 久久久国产午夜精品| 热久久久久久久| 欧美中文字幕一区二区三区亚洲| 国产亚洲自拍一区| 久草这里只有精品视频| 欧美日韩一区三区四区| 怡红院av一区二区三区| 成人av在线电影| 国产嫩草影院久久久久| 国产乱码精品一区二区三| 日韩一区二区三| 日本成人在线看| 欧美久久久一区| 亚洲成人资源在线| 精品视频在线免费| 天天色天天爱天天射综合| 精品视频免费在线| 亚洲自拍欧美精品| 色婷婷综合中文久久一本| 亚洲人吸女人奶水| kk眼镜猥琐国模调教系列一区二区 | 亚洲色欲色欲www| 成人亚洲精品久久久久软件| 中文字幕精品综合| 高清beeg欧美| 国产精品二区一区二区aⅴ污介绍| 国产精品91xxx| 国产精品狼人久久影院观看方式| 国产不卡视频在线观看| 欧美高清一级片在线观看| 成人黄色av电影| 亚洲欧美另类图片小说| 91黄色免费看| 日韩在线一区二区三区| 日韩欧美一区二区在线视频| 久久av老司机精品网站导航| www久久久久| www.日韩在线| 亚洲精品国产a久久久久久 | 久久久欧美精品sm网站| 国产精品一区二区三区四区| 国产精品丝袜在线| 在线观看日韩一区| 久久国产精品无码网站| 日本一区二区三区在线观看| 91日韩一区二区三区| 水野朝阳av一区二区三区| 欧美电影免费观看高清完整版在线 | 成人午夜电影网站| 亚洲综合色在线| 日韩欧美亚洲国产另类| 成人国产精品免费观看动漫| 一区二区三区四区在线免费观看| 欧美情侣在线播放| 国产大陆a不卡| 亚洲一区在线观看免费观看电影高清| 欧美精品日韩精品| 国产a久久麻豆| 亚洲成人在线观看视频| 久久久久国产免费免费 | 亚洲成a人片在线观看中文| 精品伦理精品一区| 色94色欧美sute亚洲线路一久| 免费在线观看一区二区三区| 国产精品不卡一区| 日韩精品一区二区三区老鸭窝| 91最新地址在线播放| 久久精品国产亚洲高清剧情介绍| 国产精品视频一二三区| 日韩一级免费观看| 在线一区二区三区四区五区| 风间由美中文字幕在线看视频国产欧美 | 成人网页在线观看| 久久国产福利国产秒拍| 亚洲综合男人的天堂| 中文字幕欧美日韩一区| 日韩欧美视频一区| 欧美午夜精品免费| 色综合天天综合在线视频| 琪琪一区二区三区| 日韩美女啊v在线免费观看| 精品欧美久久久| 欧美久久高跟鞋激| 欧美羞羞免费网站| www.欧美精品一二区| 成人午夜免费av| 国产精品影视在线观看| 九一久久久久久| 奇米色一区二区| 天堂va蜜桃一区二区三区| 一区二区三区在线免费观看| 中文字幕一区日韩精品欧美| 国产婷婷色一区二区三区| 久久综合九色综合97婷婷女人 | 国产乱一区二区| 精品无人码麻豆乱码1区2区| 麻豆精品国产传媒mv男同 | 美日韩一区二区三区| 日韩av电影天堂| 六月丁香婷婷久久| 国产自产2019最新不卡| 国产精品资源在线观看| 丁香婷婷综合激情五月色| 成人一道本在线| 91影院在线观看| 欧美亚洲国产一区在线观看网站| 色综合久久综合网| 在线观看日韩毛片| 欧美精品日韩一区| 精品第一国产综合精品aⅴ| 精品美女一区二区三区| 欧美极品xxx| 综合色中文字幕| 亚洲综合自拍偷拍| 日本成人在线电影网| 九九在线精品视频| www.日韩在线| 欧美人动与zoxxxx乱| 精品乱人伦一区二区三区| 国产清纯美女被跳蛋高潮一区二区久久w| 国产亚洲欧美色| 亚洲精品国产品国语在线app| 久久精品国产网站| 国产高清在线精品| 一本色道久久加勒比精品| 337p亚洲精品色噜噜噜| 欧美精品一区二区在线播放| 日本一区二区久久| 视频在线观看一区二区三区| 国产美女娇喘av呻吟久久| 色一情一伦一子一伦一区| 欧美精品九九99久久| 久久久蜜臀国产一区二区| 亚洲免费视频成人| 久草在线在线精品观看| 99精品欧美一区二区三区综合在线| 欧美色欧美亚洲另类二区| 精品国产乱子伦一区| 亚洲另类中文字| 国产一区二区0| 一本久久精品一区二区| 在线综合亚洲欧美在线视频| 中文字幕第一区二区| 日韩国产精品大片| 成人av影视在线观看| 日韩免费在线观看| 亚洲一区二区在线观看视频| 国产99久久久国产精品潘金| 3d动漫精品啪啪|