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

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

?? vclzip.pas

?? delphi 的壓縮工具代碼
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
  { Either ZipName or ArchiveStream should be set }
  if ((Trim(ZipName)='') and (ArchiveStream = nil)) then { 09/07/99 2.18+ }
     exit;
  FBusy := True;
  FinishedOK := False;
  CurrentDisk := 0;
  SaveSortedFiles := sortfiles;
  SaveSortMode := SortMode;
  SaveKeepZipOpen := KeepZipOpen;
  KeepZipOpen := True;
  sortfiles := files;
  SortMode := ByNone;

  If Dispose then
     DisposeFiles := TStringList.Create;
  If (not Deleting) and (not StreamZipping) and (not MemZipping) and (FilesList.Count > 0) then
     ExpandForWildCards;

  {  Guesstimate space needed for the Zip Configuration File that will go on first disk of
     a spanned zip file if SaveZipInfoOnFirstDisk is True }
  If (MultiZipInfo.MultiMode <> mmNone) and (MultiZipInfo.SaveZipInfoOnFirstDisk) then
   begin
     If StorePaths then
        tIncludePaths := 25 { Change this number to assume different average path length }
     Else
        tIncludePaths := 0;
     { We'll pad a little extra because comments aren't figured in and we want to make sure
       we allow for sector's being allocated on disk }
        MultiZipInfo.SaveOnFirstDisk :=
           MultiZipInfo.SaveOnFirstDisk +
           (FilesList.Count * (SizeOf(central_file_header)+12+tIncludePaths) ) +
           SizeOf(end_of_central) + ecrec.zip_comment_length + 2048; { + 2048 for some padding }
   end;

  If MultiZipInfo.MultiMode = mmSpan then
     AmountToWrite := DiskRoom - MultiZipInfo.SaveOnFirstDisk
  Else If MultiZipInfo.MultiMode = mmBlocks then
     AmountToWrite := MultiZipInfo.FirstBlockSize;

  try  { Moved up to here 4/12/98  2.11 }
  If ((ArchiveIsStream) and (Count > 0))
        or ((File_Exists(ZipName)) and (MultiZipInfo.MultiMode = mmNone)) then
   begin                          { Added Multimode check 06/11/00  2.21b3+ }
     AllocateZipArrays;
     { create new file in temporary directory }
     UsingTempFile := True;
     If not ArchiveIsStream then
      begin
        {PathSize := GetTempPath( SizeOf(tempPathPStr), @tempPathPStr[0] );}
        { Changed to TempFilename  5/5/98  2.12 }
        tmpZipName := TempFilename(TemporaryPath);
        {tmpZipName := StrPas(tempPathPStr) + ExtractFileName( ZipName );}
      end;
     CreateTempZip;
     OpenZip; { open existing zip so we can move existing files }
     MoveExistingFiles;  {Move those existing files}
   end
  Else
   begin
     AllocateZipArrays;
     If not ArchiveIsStream then
        tmpZipName := ZipName;
     UsingTempFile := False;
     CreateTempZip;
   end;

  If (not Deleting) and (FilesList.Count > 0) then
   begin
     StopNow := False;
     If Assigned(FOnStartZipInfo) then
        FOnStartZipInfo( Self, FilesList.Count, TotalUncompressedSize, tmpecrec, StopNow );
     If StopNow then
        {$IFDEF NO_RES}
         raise EUserCanceled.Create('User canceled Zip operation.');
        {$ELSE}
         raise EUserCanceled.Create(LoadStr(IDS_CANCELZIPOPERATION));
        {$ENDIF}
   end;

  If MultiZipInfo.MultiMode <> mmNone then
     TotalUncompressedSize := TotalUnCompressedSize * 2;

  { For each file in the FilesList AddFileToZip }
  If (not Deleting) and (FilesList.Count > 0) then
   begin
     For i := 0 to FilesList.Count-1 do
      begin
        tmpfile_info := TZipHeaderInfo.Create;
        try
           If AddFileToZip(FilesList[i]) then
              AddTheNewFile(i)
           Else
            begin
              tmpfile_info.Free;
              tmpfile_info := nil;
            end;
        except
           tmpfile_info.Free;
           tmpfile_info := nil;
           raise;
        end;
      end;
   end;  { If not Deleting }
  tmpecrec.offset_central := zfile.Position;
  tmpecrec.start_central_disk := CurrentDisk;
  totalCentralSize := 0;
  saveCentralPos := tmpecrec.offset_central;
  For i := 0 to tmpfiles2.Count-1 do
   begin
     tmpfile_info := tmpfiles2.Items[i] as TZipHeaderInfo;
     If (MultiZipInfo.MultiMode <> mmNone) and (RoomLeft < tmpfile_info.CentralSize) then
      begin
        Inc(TotalCentralSize,zfile.Position - saveCentralPos);
        saveCentralPos := 0;
        NextPart;
        If i = 0 then
         begin
           tmpecrec.offset_central := 0;
           tmpecrec.start_central_disk := CurrentDisk;
         end;
      end;
     tmpfile_info.SaveCentralToStream( zfile );
   end;
  Inc(TotalCentralSize,zfile.Position - saveCentralPos);
  tmpecrec.size_central := TotalCentralSize;
  If (MultiZipInfo.MultiMode <> mmNone) and (RoomLeft < tmpecrec.EndCentralSize) then
     NextPart;
  tmpecrec.this_disk := CurrentDisk;
  tmpecrec.SaveToStream(zfile);
  If MultiZipInfo.MultiMode = mmSpan then
     LabelDisk;
  FinishedOK := True;
  finally
   DeAllocateZipArrays;
   If (not ArchiveIsStream) then
    begin
     zfile.Free;   { close the temp zip file }
     zfile := nil;
    end;
   If FinishedOK then
    begin
     If (not ArchiveIsStream) and (not CreatingSFX) then
        SaveZipName := ZipName;
     If (not CreatingSFX) and ((not ArchiveIsStream) and (UsingTempFile)) then
        ClearZip;
     If (MultiZipInfo.MultiMode = mmBlocks) then
      begin
        If (CurrentDisk > 0) then
           ZipName := ChangeFileExt(SaveZipName,'.'+Format('%3.3d',[CurrentDisk+1]))
        Else
         begin  { No need for the multi file extention so change back to .zip }
           ZipName := SaveZipName;
           SaveZipName := ChangeFileExt(SaveZipName,'.'+Format('%3.3d',[CurrentDisk+1]));
           RenameFile(SaveZipName, ZipName);
         end;
      end
     Else If (not ArchiveIsStream) and (not CreatingSFX) then
        ZipName := SaveZipName;
     If (UsingTempFile) then
        MoveTempFile
     Else If ArchiveIsStream then
        zfile := nil;  {2/11/98}
     If (Dispose) then
        DisposeOfFiles;

     If not CreatingSFX then
      begin    { We'll point everyting to the newly created information }
        ecrec.Assign( tmpecrec );
        files := tmpfiles2;
        sortfiles := files;
        SortMode := ByNone;
      end
     Else  { We're going back to the same zip file }
      begin
        tmpfiles2.Free;
        tmpfiles2 := nil;
        sortfiles := SaveSortedFiles;
      end;

     If (not ArchiveIsStream) and (not CreatingSFX) then
        filesDate := FileDate( ZipName );
     If (SaveSortMode <> ByName) and (not CreatingSFX) then
        Sort(SaveSortMode)
     Else If (not CreatingSFX) then
      begin
        sortfiles := tmpfiles;  { already sorted by name }
        tmpfiles := nil;
      end;
     WriteNumDisks( CurrentDisk+1 );

     If (MultiZipInfo.MultiMode <> mmNone) and (Assigned(FOnTotalPercentDone)) then
        OnTotalPercentDone(self, 100);   { To be sure. 5/23/99 2.18+}

     If (MultiZipInfo.MultiMode <> mmNone) and (MultiZipInfo.SaveZipInfoOnFirstDisk)
        and (ecrec.this_disk > 0) then
     begin
        If MultiZipInfo.MultiMode = mmSpan then
        begin
           AskForNewDisk(1);  { Ask for 1st disk }
           {$IFNDEF KPSMALL}
           Screen.Cursor := crHourGlass;
           {$ENDIF}
        end;
        SaveZipInfoToFile(ChangeFileExt(ZipName,'.zfc'));
        {$IFNDEF KPSMALL}
        If MultiZipInfo.MultiMode = mmSpan then
        Screen.Cursor := crDefault;
        {$ENDIF}
     end;

   end
   Else
    begin
     tmpfiles2.Free;
     tmpfiles2 := nil;
     SysUtils.DeleteFile( tmpZipName );
    end;

   SortMode := SaveSortMode;
   KeepZipOpen := SaveKeepZipOpen;
   tmpfiles.Free;
   tmpfiles := nil;
   tmpecrec.Free;
   tmpecrec := nil;
   CloseZip;
   If ArchiveIsStream then
     GetFileInfo(theZipFile);

   FBusy := False;
   FilesList.Clear;  { 6/27/99 2.18+ }
  end;
end;

procedure TVCLZip.CreateTempZip;
begin
  If MultiZipInfo.MultiMode = mmBlocks then
     tmpZipName := ChangeFileExt(tmpZipName,'.'+Format('%3.3d',[CurrentDisk+1]));
  If not ArchiveIsStream then
     zfile := TLFNFileStream.CreateFile( tmpZipName, fmCreate, FFlushFilesOnClose, BufferedStreamSize )
  Else
   begin
     If UsingTempFile then
        zfile := TMemoryStream.Create
     Else
        zfile := theZipFile;   {2/11/98}
   end;
  If CreatingSFX then
     zfile.CopyFrom( SFXStubFile, SFXStubFile.Size );
  tmpfiles := TSortedZip.Create( DupError );
  tmpfiles.SortMode := ByName;
  tmpfiles.DestroyObjects := False;
  tmpfiles2 := TSortedZip.Create( DupError );
  tmpfiles2.SortMode := ByNone;
  tmpecrec := TEndCentral.Create;
  If (UsingTempFile) or (ecrec.Modified) then
   begin
     tmpecrec.Assign( ecrec );
     If (tmpecrec.zip_comment_length > 0) and (tmpecrec.ZipComment = nil) then
        tmpecrec.ZipComment := StrToPChar(ZipComment);
     tmpecrec.num_entries := 0;
     tmpecrec.num_entries_this_disk := 0;
     tmpecrec.Modified := False;
   end;
end;

function TVCLZip.DiskRoom: BIGINT;
  var
     Disk: Byte;
  begin
     If ZipName[2] <> ':' then
        Disk := 0
     Else
      begin
        Disk := Ord(ZipName[1])-64;
        If Disk > 32 then
           Dec(Disk,32);
      end;
     Result := DiskFree(Disk);
  end;

function TVCLZip.RoomLeft: BIGINT;
begin
  Result := AmountToWrite - zfile.Size;
end;

procedure TVCLZip.LabelDisk;
var
  Disk: String;
  NewLabel: String;
  {Rslt: LongBool;}
begin
  If (MultiZipInfo.MultiMode = mmSpan) and  (MultiZipInfo.WriteDiskLabels) then
   begin
     Disk := ZipName[1];
     Disk := UpperCase(Disk);
     If (Disk = 'A') or (Disk = 'B') then  { Only label floppies }
      begin
        Disk := Disk + ':\';
        NewLabel := 'PKBACK# ' + Format('%3.3d',[CurrentDisk+1]);
   {Rslt :=} SetVolLabel(Disk, NewLabel);
      end;
   end;
end;

procedure TVCLZip.NextPart;
begin
 If MultiZipInfo.MultiMode <> mmNone then
 begin
  If MultiZipInfo.MultiMode = mmSpan then
   begin
     If Assigned(FOnGetNextDisk) then
      begin
        zfile.Free;
        zfile := nil;
        LabelDisk; { Label disk before they change it }
        OnGetNextDisk(Self, CurrentDisk+2, tmpZipName);
        If tmpZipName = '' then
           {$IFDEF NO_RES}
            raise EUserCanceled.Create('User canceled Zip operation.');
           {$ELSE}
            raise EUserCanceled.Create(LoadStr(IDS_CANCELZIPOPERATION));
           {$ENDIF}
        Inc(CurrentDisk);
        if FileExists(tmpZipName) then
           SysUtils.DeleteFile(tmpZipName);  { 10/19/99  2.20b3+ }
        if Assigned(FOnPrepareNextDisk) then
           FOnPrepareNextDisk( self, CurrentDisk+1 );
        AmountToWrite := DiskRoom;
      end
   end
  Else
   begin
     zfile.Free;
     zfile := nil;
     Inc(CurrentDisk);
     tmpZipName := ChangeFileExt(tmpZipName, '.'+Format('%3.3d',[CurrentDisk+1]));
     AmountToWrite := MultiZipInfo.BlockSize;
   end;
  zfile := TLFNFileStream.CreateFile( tmpZipName, fmCreate, FFlushFilesOnClose, BufferedStreamSize );
  AmountWritten := 0;
  tmpecrec.num_entries_this_disk := 0;
 end;
end;

function TVCLZip.AddFileToZip( FName: String ): Boolean;
var
  SavePos: LongInt;
  tmpDir: String;
  Idx: Integer;
  Skip: Boolean;
  {tempPathPStr: array [0..PATH_LEN] of char;}
  {PathSize: LongInt;}

  procedure CalcFileCRC;
  { Modified to use a PChar for cbuffer 4/12/98  2.11 }
  const
      {BLKSIZ = OUTBUFSIZ;}
      BLKSIZ = DEF_BUFSTREAMSIZE;
  var
     cbuffer: PChar;
     AmountRead: LongInt;
     AmtLeft: LongInt;
  begin
     AmtLeft := 0;
     cbuffer := nil;

     If (not MemZipping) then
      GetMem(cbuffer,BLKSIZ);
     try
        Crc32Val := $FFFFFFFF;
        If (MemZipping) then
         begin
           cbuffer := MemBuffer;
           AmountRead := kpmin(MemLen,BLKSIZ);
           AmtLeft := MemLen - AmountRead;
         end
        Else
        AmountRead := IFile.Read(cbuffer^, BLKSIZ);
        While AmountRead <> 0 do
         begin
           Update_CRC_buff(BytePtr(cbuffer), AmountRead);
           If (MemZipping) then

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费欧美在线视频| 欧美四级电影在线观看| 在线一区二区三区| 精品国产91九色蝌蚪| 伊人开心综合网| 国产成人精品网址| 欧美精品久久99久久在免费线| 国产午夜精品久久| 日韩成人av影视| 一本到高清视频免费精品| 久久久噜噜噜久久中文字幕色伊伊| 18成人在线观看| 国产电影一区二区三区| 日韩视频在线永久播放| 亚洲国产裸拍裸体视频在线观看乱了 | 久久久久一区二区三区四区| 一区二区久久久久久| 成熟亚洲日本毛茸茸凸凹| 日韩免费在线观看| 青娱乐精品视频| 欧美肥妇bbw| 亚洲成人精品一区二区| 在线国产电影不卡| 亚洲色图视频免费播放| av中文字幕在线不卡| 久久久噜噜噜久久中文字幕色伊伊| 热久久一区二区| 91精品国产综合久久精品图片| 亚洲色图20p| 一本一道综合狠狠老| 国产精品久久久久久久久久免费看| 精品制服美女丁香| 精品国产髙清在线看国产毛片 | 免费观看成人av| 日韩一区二区三区免费观看 | 亚洲欧美电影院| 色素色在线综合| 亚洲综合视频在线观看| 91视频国产资源| 一区二区三区四区不卡在线| 91色在线porny| 一区二区三区蜜桃| 欧美日韩亚洲国产综合| 日日摸夜夜添夜夜添精品视频| 欧美高清dvd| 久久爱另类一区二区小说| 日韩精品在线看片z| 国产精品一线二线三线| 国产精品网曝门| 99在线热播精品免费| 亚洲精品综合在线| 91麻豆精品国产无毒不卡在线观看| 日韩不卡手机在线v区| 日韩你懂的在线播放| 国产自产高清不卡| 国产精品国产a| 欧美亚洲综合在线| 美女一区二区视频| 国产欧美1区2区3区| 91在线观看地址| 三级在线观看一区二区| 久久综合视频网| 色综合久久久久综合体| 日韩在线一区二区三区| 久久久777精品电影网影网| proumb性欧美在线观看| 午夜精品成人在线视频| 精品国产sm最大网站免费看| a4yy欧美一区二区三区| 日韩中文字幕麻豆| 国产欧美一区二区在线| 欧美精品xxxxbbbb| 风间由美性色一区二区三区| 亚洲高清久久久| 欧美极品少妇xxxxⅹ高跟鞋| 欧美日韩一二三| eeuss鲁片一区二区三区| 午夜av区久久| 国产精品久久久久永久免费观看 | 欧美亚洲尤物久久| 国产制服丝袜一区| 一区二区三区在线不卡| 久久嫩草精品久久久久| 欧美精品亚洲二区| 色综合一个色综合亚洲| 国产精品99精品久久免费| 日韩综合小视频| 亚洲男人都懂的| 久久这里只有精品首页| 欧美日韩视频在线一区二区| 成人av网站在线观看免费| 另类小说综合欧美亚洲| 一区二区三区国产精品| 26uuu另类欧美亚洲曰本| 欧美日韩中文精品| 91美女福利视频| 国产精品一级片| 久久av资源站| 五月婷婷色综合| 亚洲综合激情另类小说区| 国产精品乱人伦中文| 久久久久久99久久久精品网站| 日韩一级免费一区| 精品视频一区二区三区免费| 99在线热播精品免费| av在线不卡免费看| 99久免费精品视频在线观看| 国产成人亚洲综合a∨婷婷| 久久成人18免费观看| 久久91精品久久久久久秒播| 日本不卡在线视频| 青草国产精品久久久久久| 午夜精品一区二区三区电影天堂| 亚洲综合一区在线| 亚洲精品国产成人久久av盗摄| 亚洲人亚洲人成电影网站色| 中文字幕av不卡| 国产精品久久久久久久裸模| 国产精品视频免费| 国产精品家庭影院| 亚洲欧美一区二区三区极速播放| 最新中文字幕一区二区三区| 国产精品欧美一级免费| 国产精品久久久久影视| 欧美激情自拍偷拍| 亚洲天堂福利av| 亚洲线精品一区二区三区| 亚洲电影欧美电影有声小说| 亚洲国产视频a| 男女视频一区二区| 狠狠色丁香婷综合久久| 粉嫩欧美一区二区三区高清影视| 不卡欧美aaaaa| 色综合久久六月婷婷中文字幕| 欧美少妇一区二区| 日韩午夜在线播放| 欧美国产日韩在线观看| 一区二区三区在线免费| 美女诱惑一区二区| 99久久免费精品| 欧美日韩在线电影| 精品久久人人做人人爰| 这里只有精品视频在线观看| 欧美成人午夜电影| 国产精品国模大尺度视频| 香港成人在线视频| 国产传媒日韩欧美成人| 色噜噜狠狠色综合欧洲selulu| 在线成人午夜影院| 国产亚洲综合色| 一区二区三区在线影院| 韩日av一区二区| 色综合天天综合给合国产| 91精品国产全国免费观看 | 欧美精品黑人性xxxx| 欧美精品一区二区三区蜜臀| 最新不卡av在线| 极品少妇xxxx精品少妇| 91麻豆免费观看| 精品国产一区二区三区av性色| 国产精品毛片a∨一区二区三区| 亚洲一区二区三区在线播放| 精品中文字幕一区二区| 91蝌蚪porny成人天涯| 久久午夜老司机| 性做久久久久久免费观看欧美| 国产经典欧美精品| 777午夜精品视频在线播放| 国产精品不卡视频| 极品少妇xxxx精品少妇| 欧美男人的天堂一二区| 国产精品国产三级国产普通话蜜臀| 蜜臀91精品一区二区三区 | 成人丝袜18视频在线观看| 欧美猛男男办公室激情| 亚洲视频一区二区在线观看| 激情图片小说一区| 在线成人免费视频| 亚洲精品免费在线| av日韩在线网站| 国产亲近乱来精品视频| 久草精品在线观看| 精品视频免费看| 亚洲色图一区二区| 成人91在线观看| 中文字幕精品—区二区四季| 精品一区二区免费视频| 欧美一区二区三区白人| 性做久久久久久免费观看欧美| 色综合咪咪久久| 亚洲天堂精品在线观看| 99久久久国产精品| 中文乱码免费一区二区| 国产黄色精品网站| 国产女同互慰高潮91漫画| 国产精品资源在线| 国产色爱av资源综合区| 国产毛片精品视频| 国产精品视频一二| 色婷婷一区二区三区四区|