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

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

?? skinread.pas

?? delphi控件
?? PAS
字號:
unit SkinRead;

{$WARNINGS OFF}
{$HINTS OFF}

interface

{$define skinfile2}

uses Windows, Messages, SysUtils, Classes, Graphics, Controls,Forms,
     FileCtrl,Winconvert,Dialogs;

type
  TSkinHeader = record
     Version:integer;
     DirLen :integer;
     U1     :integer;
     U2     :integer;
  end;

   TSkinReader = class(Tobject)
   private
   protected
   public
      Dir:Tstringlist;
      dirlen,Num:integer;
      sizes:Array[0..1000] of integer;
      ms : Tmemorystream;
      header:TSkinHeader;
      header2:TSkinHeader;
      constructor Create;
      destructor Destroy; override;
      function loadfromfile(const aname:string):boolean;
      procedure readfile( aname:string;m:TmemoryStream);
      procedure readIni(const aname:string;m:TmemoryStream;var fname:string);
      procedure Decompress(source,Dest:TStream);
      function Loadfromstream(r2:Tmemorystream):boolean;
   end;

implementation

constructor TSkinReader.Create;
begin
   dir:=Tstringlist.create;
   ms:=Tmemorystream.create;
end;

destructor TSkinReader.Destroy;
begin
   dir.free;
   ms.free;
end;

function TSkinReader.loadfromfile(const aname:string):boolean;
var r,r2:Tmemorystream;
    s,s1,s2:string;
    i:integer;
    b:boolean;
begin
    b:=false;
    result:=b;
    if not fileexists(aname) then exit;
    s1:= Extractfilepath(aname);
    r:=Tmemorystream.create;
    r2:=Tmemorystream.create;
    try
    r2.loadfromfile(aname);
    Decompress(r2,r);
//    r.loadfromfile(aname);
    r.Seek(0,soFromBeginning);
    r.read(header,sizeof(Tskinheader));
    if header.version=20000 then  begin
       setlength(s,header.dirlen);
       r.read(s[1],header.dirlen);
       dir.text:=lowercase(s);
       Num:=dir.count;
       r.read(sizes[0],num*sizeof(integer));
       i:=(num)*sizeof(integer)+header.dirlen+sizeof(Tskinheader);
       ms.Seek(0,soFromBeginning);
       ms.write(Pointer(Longint(r.Memory)+i)^,r.size-i);
       b:=true;
    end else if header.version=30000 then begin
       setlength(s,$100);
       r.Read(s[1],$100);
       setlength(s,header.dirlen);
       r.read(s[1],header.dirlen);
       dir.text:=lowercase(s);
       Num:=dir.count;
       r.read(sizes[0],num*sizeof(integer));
       i:=(num)*sizeof(integer)+header.dirlen+sizeof(Tskinheader)+$100;
       ms.Seek(0,soFromBeginning);
       ms.write(Pointer(Longint(r.Memory)+i)^,r.size-i);
       b:=true;
    end else if header.version=40000 then begin
       setlength(s,$100);
       r.Read(s[1],$50);
       setlength(s,header.dirlen);
       r.read(s[1],header.dirlen);
       dir.text:=lowercase(s);
       Num:=dir.count;
       r.read(sizes[0],num*sizeof(integer));
       i:=(num)*sizeof(integer)+header.dirlen+sizeof(Tskinheader)+$50;
       ms.Seek(0,soFromBeginning);
       ms.write(Pointer(Longint(r.Memory)+i)^,r.size-i);
       b:=true;
    end else if header.version=50000 then begin
       setlength(s,$100);
       r.Read(s[1],$30);
       setlength(s,header.dirlen);
       r.read(s[1],header.dirlen);
       dir.text:=lowercase(s);
       Num:=dir.count;
       r.read(sizes[0],num*sizeof(integer));
       i:=(num)*sizeof(integer)+header.dirlen+sizeof(Tskinheader)+$30;
       ms.Seek(0,soFromBeginning);
       ms.write(Pointer(Longint(r.Memory)+i)^,r.size-i);
       b:=true;
    end else if header.version=60000 then begin
       setlength(s,$100);
       r.Read(s[1],$75);
       setlength(s,header.dirlen);
       r.read(s[1],header.dirlen);
       dir.text:=lowercase(s);
       Num:=dir.count;
       r.read(sizes[0],num*sizeof(integer));
       i:=(num)*sizeof(integer)+header.dirlen+sizeof(Tskinheader)+$75;
       ms.Seek(0,soFromBeginning);
       ms.write(Pointer(Longint(r.Memory)+i)^,r.size-i);
       b:=true;
    end else if header.version=70000 then begin
       setlength(s,$100);
       r.Read(s[1],$45);
       setlength(s,header.dirlen);
       r.read(s[1],header.dirlen);
       dir.text:=lowercase(s);
       Num:=dir.count;
       r.read(sizes[0],num*sizeof(integer));
       i:=(num)*sizeof(integer)+header.dirlen+sizeof(Tskinheader)+$45;
       ms.Seek(0,soFromBeginning);
       ms.write(Pointer(Longint(r.Memory)+i)^,r.size-i);
       b:=true;
    end else showmessage('This is Older Skin File'#13'Please update to new version !');
    finally
    r.free;
    r2.free;
    end;
    result:=b;
end;

function TSkinReader.loadfromstream(r2:Tmemorystream):boolean;
var r:Tmemorystream;
    s,s1,s2:string;
    i:integer;
    b:boolean;
begin
    r:=Tmemorystream.create;
    b:=false;
    try
    Decompress(r2,r);
    r.Seek(0,soFromBeginning);
    r.read(header,sizeof(Tskinheader));
    if header.version=20000 then begin
       setlength(s,header.dirlen);
       r.read(s[1],header.dirlen);
       dir.text:=lowercase(s);
       Num:=dir.count;
       r.read(sizes[0],num*sizeof(integer));
       i:=(num)*sizeof(integer)+header.dirlen+sizeof(Tskinheader);
       ms.Seek(0,soFromBeginning);
       ms.write(Pointer(Longint(r.Memory)+i)^,r.size-i);
       b:=true;
    end else if header.version=30000 then begin
       setlength(s,$200);
       r.Read(s[1],$100);
       setlength(s,header.dirlen);
       r.read(s[1],header.dirlen);
       dir.text:=lowercase(s);
       Num:=dir.count;
       r.read(sizes[0],num*sizeof(integer));
       i:=(num)*sizeof(integer)+header.dirlen+sizeof(Tskinheader)+$100;
       ms.Seek(0,soFromBeginning);
       ms.write(Pointer(Longint(r.Memory)+i)^,r.size-i);
       b:=true;
    end else if header.version=40000 then begin
       setlength(s,$200);
       r.Read(s[1],$50);
       setlength(s,header.dirlen);
       r.read(s[1],header.dirlen);
       dir.text:=lowercase(s);
       Num:=dir.count;
       r.read(sizes[0],num*sizeof(integer));
       i:=(num)*sizeof(integer)+header.dirlen+sizeof(Tskinheader)+$50;
       ms.Seek(0,soFromBeginning);
       ms.write(Pointer(Longint(r.Memory)+i)^,r.size-i);
       b:=true;
    end else if header.version=50000 then begin
       setlength(s,$100);
       r.Read(s[1],$30);
       setlength(s,header.dirlen);
       r.read(s[1],header.dirlen);
       dir.text:=lowercase(s);
       Num:=dir.count;
       r.read(sizes[0],num*sizeof(integer));
       i:=(num)*sizeof(integer)+header.dirlen+sizeof(Tskinheader)+$30;
       ms.Seek(0,soFromBeginning);
       ms.write(Pointer(Longint(r.Memory)+i)^,r.size-i);
       b:=true;
    end else if header.version=60000 then begin
       setlength(s,$100);
       r.Read(s[1],$75);
       setlength(s,header.dirlen);
       r.read(s[1],header.dirlen);
       dir.text:=lowercase(s);
       Num:=dir.count;
       r.read(sizes[0],num*sizeof(integer));
       i:=(num)*sizeof(integer)+header.dirlen+sizeof(Tskinheader)+$75;
       ms.Seek(0,soFromBeginning);
       ms.write(Pointer(Longint(r.Memory)+i)^,r.size-i);
       b:=true;
    end else if header.version=70000 then begin
       setlength(s,$100);
       r.Read(s[1],$45);
       setlength(s,header.dirlen);
       r.read(s[1],header.dirlen);
       dir.text:=lowercase(s);
       Num:=dir.count;
       r.read(sizes[0],num*sizeof(integer));
       i:=(num)*sizeof(integer)+header.dirlen+sizeof(Tskinheader)+$45;
       ms.Seek(0,soFromBeginning);
       ms.write(Pointer(Longint(r.Memory)+i)^,r.size-i);
       b:=true;
    end else showmessage('This is Older Skin File'#13'Please update to new version !');
    finally
    r.free;
    end;
    result:=b;
end;

{$IFDEF skinfile1}
function TSkinReader.loadfromfile(const aname:string):boolean;
var r,r2:Tmemorystream;
    s,s1:string;
    i:integer;
    b:boolean;
begin
    b:=false;
    if not fileexists(aname) then exit;
    s1:= Extractfilepath(aname);
    r:=Tmemorystream.create;
    r2:=Tmemorystream.create;
    try
    r2.loadfromfile(aname);
    Decompress(r2,r);
    r.Seek(0,soFromBeginning);
    r.read(dirlen,sizeof(integer));
    if dirlen>0 then  begin
       setlength(s,dirlen);
       r.read(s[1],dirlen);
       dir.text:=lowercase(s);
       Num:=dir.count;
       r.read(sizes[0],num*sizeof(integer));
       i:=(num+1)*sizeof(integer)+dirlen;
       ms.Seek(0,soFromBeginning);
       ms.write(Pointer(Longint(r.Memory)+i)^,r.size-i);
       b:=true;
    end;
    finally
    r.free;
    r2.free;
    end;
    result:=b;
end;

function TSkinReader.loadfromstream(r2:Tmemorystream):boolean;
var r:Tmemorystream;
    s,s1:string;
    i:integer;
    b:boolean;
begin
    r:=Tmemorystream.create;
    b:=false;
    try
    Decompress(r2,r);
    r.Seek(0,soFromBeginning);
    r.read(dirlen,sizeof(integer));
    if dirlen>0 then begin
       setlength(s,dirlen);
       r.read(s[1],dirlen);
       dir.text:=lowercase(s);
       Num:=dir.count;
       r.read(sizes[0],num*sizeof(integer));
       i:=(num+1)*sizeof(integer)+dirlen;
       ms.Seek(0,soFromBeginning);
       ms.write(Pointer(Longint(r.Memory)+i)^,r.size-i);
       b:=true;
    end;
    finally
    r.free;
    end;
    result:=b;
end;
{$ENDIF}

procedure TSkinReader.Decompress(source,Dest:TStream);
var
   LZH: TLZH;
   Size, Bytes: Longint;
begin
    // Decompress in memory blob.
    LZH := TLZH.Create;
    try
       LZH.StreamIn:= source;
       LZH.StreamOut:=dest;
       LZH.StreamIn.Position := 0;
       LZH.StreamOut.Position := 0;

       // Uncompressed file size
       LZH.StreamIn.Read(size, sizeof(Longint));
       Bytes := Size;

       // Decompress rest of stream.
       LZH.LZHUnpack(Bytes, LZH.GetBlockStream, LZH.PutBlockStream);
    finally
       LZH.Free;
    end;
end;

procedure TSkinReader.readfile( aname:string;m:TmemoryStream);
var i,j:integer;
begin
  m.clear;
  ms.Seek(0,soFromBeginning);
  j:=0;
  aname:=lowercase(aname);
  for i:= 0 to num-1 do begin
    if dir[i]=aname then begin
      m.write(Pointer(Longint(ms.Memory)+j)^,sizes[i]);
      m.Seek(0,soFromBeginning);
      break;
    end;
    inc(j,sizes[i]);
  end;
end;

procedure TSkinReader.readIni(const aname:string;m:TmemoryStream;var fname:string);
var i,j:integer;
begin
  m.clear;
  ms.Seek(0,soFromBeginning);
  j:=0;
  for i:= 0 to num-1 do begin
    if pos(aname,dir[i])>0 then begin
      m.write(Pointer(Longint(ms.Memory)+j)^,sizes[i]);
      m.Seek(0,soFromBeginning);
      fname:=dir[i];
      break;
    end;
    inc(j,sizes[i]);
  end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品一区二区三区99| 亚洲一区二区欧美激情| 日韩女优av电影| 欧美一级在线观看| 欧美一级理论片| 欧美一卡在线观看| 欧美大片在线观看| 久久久不卡网国产精品二区| 欧美精品一区二区久久久 | 国产日产欧美一区| xf在线a精品一区二区视频网站| 精品欧美一区二区在线观看| 精品对白一区国产伦| 精品国产髙清在线看国产毛片| 欧美成人r级一区二区三区| 精品美女一区二区| 欧美国产禁国产网站cc| 中文在线一区二区| 中文字幕视频一区二区三区久| 中文字幕亚洲精品在线观看| 一区二区三区精品在线观看| 丝袜美腿亚洲色图| 久久精品国产秦先生| 国产馆精品极品| 91亚洲精品乱码久久久久久蜜桃 | 精品黑人一区二区三区久久| 久久久精品蜜桃| 中文字幕一区二区三| 一区二区在线电影| 日韩专区欧美专区| 国产精品夜夜嗨| 日本黄色一区二区| 日韩欧美久久久| 日本一区二区三级电影在线观看| 亚洲人成7777| 免费久久99精品国产| 成人性生交大片免费看在线播放| 欧美中文字幕一区二区三区亚洲| 欧美一区二区三区四区视频| 亚洲国产成人一区二区三区| 亚洲老妇xxxxxx| 久久精工是国产品牌吗| 不卡高清视频专区| 日韩一区二区精品在线观看| 欧美韩国一区二区| 亚洲不卡一区二区三区| 国产精品正在播放| 欧美三级资源在线| 久久久久久久久久久久久夜| 一区二区三区**美女毛片| 免费的国产精品| 91网上在线视频| 精品成人一区二区| 亚洲综合免费观看高清在线观看| 久久99久久久欧美国产| 色综合久久99| 日韩欧美的一区| 亚洲一区二区不卡免费| 狠狠色丁香久久婷婷综| 欧美性猛交xxxx乱大交退制版 | 天堂一区二区在线| 国产精品一区二区三区网站| 欧美日韩一区不卡| 国产午夜精品理论片a级大结局| 一区二区免费看| 国产电影精品久久禁18| 91精品国产综合久久小美女| 国产丝袜美腿一区二区三区| 青青草视频一区| 欧洲av一区二区嗯嗯嗯啊| 欧美激情中文字幕一区二区| 日韩av午夜在线观看| 色成人在线视频| 中文字幕免费一区| 精品一区二区三区久久| 欧美中文字幕久久| 亚洲男人的天堂网| 不卡一区在线观看| 精品国产乱码久久久久久牛牛| 午夜av电影一区| 欧洲色大大久久| 综合久久久久久久| 成人污视频在线观看| 欧美精品一区视频| 久久精品二区亚洲w码| 欧美日韩一本到| 一区二区三区四区不卡视频| 99久久综合国产精品| 日本一区二区三级电影在线观看| 久草精品在线观看| 欧美一二三在线| 亚洲制服丝袜一区| 91浏览器打开| 亚洲视频综合在线| 成人av综合在线| 国产三级精品视频| 国产精品456| 中文无字幕一区二区三区| 91精品国产日韩91久久久久久| 亚洲午夜av在线| 在线观看亚洲精品视频| 亚洲视频在线观看一区| 99久久精品国产毛片| 亚洲欧美综合另类在线卡通| av激情综合网| 日韩伦理av电影| av不卡免费电影| 亚洲另类在线视频| 欧美优质美女网站| 亚洲国产中文字幕| 欧美肥大bbwbbw高潮| 婷婷亚洲久悠悠色悠在线播放| 欧美另类videos死尸| 日韩不卡免费视频| 欧美岛国在线观看| 国产精品一区专区| 国产精品久久久久四虎| 色综合久久六月婷婷中文字幕| 一区二区三区免费| 欧美精品久久久久久久久老牛影院| 三级一区在线视频先锋| 日韩一级视频免费观看在线| 狠狠色综合日日| 国产农村妇女精品| www.66久久| 亚洲激情中文1区| 欧美日韩亚洲综合在线| 蜜桃91丨九色丨蝌蚪91桃色| 国产亚洲欧洲997久久综合 | 欧美浪妇xxxx高跟鞋交| 欧美aⅴ一区二区三区视频| 久久亚洲欧美国产精品乐播| 成人美女视频在线看| 亚洲一区成人在线| 日韩免费视频一区| 99热这里都是精品| 午夜激情一区二区| 久久精品一区二区三区四区| 色综合一个色综合亚洲| 日本美女一区二区| 国产精品热久久久久夜色精品三区| 在线观看日产精品| 韩国视频一区二区| 亚洲激情av在线| 欧美mv日韩mv国产网站| eeuss鲁片一区二区三区在线看| 亚洲国产精品人人做人人爽| 精品国产免费一区二区三区四区| 国产精品99久久不卡二区| 亚洲在线中文字幕| 久久久777精品电影网影网| 日本道色综合久久| 激情丁香综合五月| 一区二区三区色| 久久精品一区蜜桃臀影院| 欧美午夜寂寞影院| 成人午夜视频在线观看| 香蕉影视欧美成人| 中文字幕日韩一区二区| 欧美一区二区三区人| 国产精品久久久久四虎| 4438成人网| av电影天堂一区二区在线| 青青草国产精品97视觉盛宴| 中文字幕一区二区在线播放| 欧美一级久久久久久久大片| 色欧美片视频在线观看在线视频| 美女任你摸久久| 夜夜精品视频一区二区| 久久久精品黄色| 日韩欧美一级特黄在线播放| 91精品1区2区| 成人高清免费观看| 韩国中文字幕2020精品| 日韩和的一区二区| 一区二区三区加勒比av| 中文久久乱码一区二区| 精品久久久久久无| 3atv在线一区二区三区| 91色视频在线| 成人午夜电影小说| 国产一区二区三区久久久| 丝袜美腿亚洲色图| 亚洲一区电影777| 亚洲嫩草精品久久| 国产精品国产三级国产普通话三级 | 日韩欧美一级二级| 欧美日韩综合在线免费观看| 色婷婷av一区| 99国产精品久| 成人精品免费看| 国产一区高清在线| 精品一区二区免费视频| 美女任你摸久久| 免费高清在线一区| 免费在线观看一区二区三区| 欧美国产1区2区| 在线亚洲高清视频| 日韩理论电影院| 欧美一区二区三区免费在线看 |