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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tntclasses.pas

?? Delphi知道現(xiàn)在也沒有提供Unicode支持
?? PAS
?? 第 1 頁 / 共 4 頁
字號:
      Result :=  (Default <> LongInt($80000000)) and (Value = Default);
    end;
  end;
end;

procedure TTntWideCharPropertyFiler.GetLookupInfo(var Ancestor: TPersistent;
  var Root, LookupRoot, RootAncestor: TComponent);
begin
  Ancestor := FWriter.Ancestor;
  Root := FWriter.Root;
  LookupRoot := FWriter.LookupRoot;
  RootAncestor := FWriter.RootAncestor;
end;
{$ENDIF}

function TTntWideCharPropertyFiler.ReadChar(Reader: TReader): WideChar;
var
  Temp: WideString;
begin
  case Reader.NextValue of
    vaWString:
      Temp := Reader.ReadWideString;
    vaString:
      Temp := Reader.ReadString;
    else
      raise EReadError.Create(SInvalidPropertyValue);
  end;

  if Length(Temp) > 1 then
    raise EReadError.Create(SInvalidPropertyValue);
  Result := Temp[1];
end;

procedure TTntWideCharPropertyFiler.ReadData_W(Reader: TReader);
begin
  SetOrdProp(FInstance, FPropInfo, Ord(ReadChar(Reader)));
end;

procedure TTntWideCharPropertyFiler.ReadDataUTF7(Reader: TReader);
var
  S: WideString;
begin
  S := UTF7ToWideString(Reader.ReadString);
  if S = '' then
    SetOrdProp(FInstance, FPropInfo, 0)
  else
    SetOrdProp(FInstance, FPropInfo, Ord(S[1]))
end;

type TAccessWriter = class(TWriter);

procedure TTntWideCharPropertyFiler.WriteData_W(Writer: TWriter);
var
  L: Integer;
  Temp: WideString;
begin
  Temp := WideChar(GetOrdProp(FInstance, FPropInfo));

  TAccessWriter(Writer).WriteValue(vaWString);
  L := Length(Temp);
  Writer.Write(L, SizeOf(Integer));
  Writer.Write(Pointer(@Temp[1])^, L * 2);
end;

procedure TTntWideCharPropertyFiler.DefineProperties(Filer: TFiler;
  Instance: TPersistent; PropName: AnsiString);

  {$IFNDEF COMPILER_9_UP}
  function HasData: Boolean;
  var
    CurrPropValue: Integer;
  begin
    // must be stored
    Result := IsStoredProp(Instance, FPropInfo);
    if Result and (Filer.Ancestor <> nil) and
      (GetPropInfo(Filer.Ancestor, PropName, [tkWChar]) <> nil) then
    begin
      // must be different than ancestor
      CurrPropValue := GetOrdProp(Instance, FPropInfo);
      Result := CurrPropValue <> GetOrdProp(Filer.Ancestor, GetPropInfo(Filer.Ancestor, PropName));
    end;
    if Result and (Filer is TWriter) then
    begin
      FWriter := TWriter(Filer);
      Result := not IsDefaultOrdPropertyValue(Instance, FPropInfo, GetLookupInfo);
    end;
  end;
  {$ENDIF}

begin
  FInstance := Instance;
  FPropInfo := GetPropInfo(Instance, PropName, [tkWChar]);
  if FPropInfo <> nil then
  begin
    // must be published (and of type WideChar)
    {$IFDEF COMPILER_9_UP}
    Filer.DefineProperty(PropName + 'W', ReadData_W, WriteData_W, False);
    {$ELSE}
    Filer.DefineProperty(PropName + 'W', ReadData_W, WriteData_W, HasData);
    {$ENDIF}
    Filer.DefineProperty(PropName + '_UTF7', ReadDataUTF7, nil, False);
  end;
  FInstance := nil;
  FPropInfo := nil;
end;

procedure TntPersistent_AfterInherited_DefineProperties(Filer: TFiler; Instance: TPersistent);
var
  I, Count: Integer;
  PropInfo: PPropInfo;
  PropList: PPropList;
  WideStringFiler: TTntWideStringPropertyFiler;
  WideCharFiler: TTntWideCharPropertyFiler;
begin
  Count := GetTypeData(Instance.ClassInfo)^.PropCount;
  if Count > 0 then
  begin
    WideStringFiler := TTntWideStringPropertyFiler.Create;
    try
      WideCharFiler := TTntWideCharPropertyFiler.Create;
      try
        GetMem(PropList, Count * SizeOf(Pointer));
        try
          GetPropInfos(Instance.ClassInfo, PropList);
          for I := 0 to Count - 1 do
          begin
            PropInfo := PropList^[I];
            if (PropInfo = nil) then
              break;
            if (PropInfo.PropType^.Kind = tkWString) then
              WideStringFiler.DefineProperties(Filer, Instance, PropInfo.Name)
            else if (PropInfo.PropType^.Kind = tkWChar) then
              WideCharFiler.DefineProperties(Filer, Instance, PropInfo.Name)
          end;
        finally
          FreeMem(PropList, Count * SizeOf(Pointer));
        end;
      finally
        WideCharFiler.Free;
      end;
    finally
      WideStringFiler.Free;
    end;
  end;
end;

{ TTntFileStream }

constructor TTntFileStream.Create(const FileName: WideString; Mode: Word);
var
  CreateHandle: Integer;
  {$IFDEF DELPHI_7_UP}
  ErrorMessage: WideString;
  {$ENDIF}
begin
  if Mode = fmCreate then
  begin
    CreateHandle := WideFileCreate(FileName);
    if CreateHandle < 0 then begin
      {$IFDEF DELPHI_7_UP}
      ErrorMessage := WideSysErrorMessage(GetLastError);
      raise EFCreateError.CreateFmt(SFCreateErrorEx, [WideExpandFileName(FileName), ErrorMessage]);
      {$ELSE}
      raise EFCreateError.CreateFmt(SFCreateError, [WideExpandFileName(FileName)]);
      {$ENDIF}
    end;
  end else
  begin
    CreateHandle := WideFileOpen(FileName, Mode);
    if CreateHandle < 0 then begin
      {$IFDEF DELPHI_7_UP}
      ErrorMessage := WideSysErrorMessage(GetLastError);
      raise EFOpenError.CreateFmt(SFOpenErrorEx, [WideExpandFileName(FileName), ErrorMessage]);
      {$ELSE}
      raise EFOpenError.CreateFmt(SFOpenError, [WideExpandFileName(FileName)]);
      {$ENDIF}
    end;
  end;
  inherited Create(CreateHandle);
end;

destructor TTntFileStream.Destroy;
begin
  if Handle >= 0 then FileClose(Handle);
end;

{ TTntMemoryStream }

procedure TTntMemoryStream.LoadFromFile(const FileName: WideString);
var
  Stream: TStream;
begin
  Stream := TTntFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  try
    LoadFromStream(Stream);
  finally
    Stream.Free;
  end;
end;

procedure TTntMemoryStream.SaveToFile(const FileName: WideString);
var
  Stream: TStream;
begin
  Stream := TTntFileStream.Create(FileName, fmCreate);
  try
    SaveToStream(Stream);
  finally
    Stream.Free;
  end;
end;

{ TTntResourceStream }

constructor TTntResourceStream.Create(Instance: THandle; const ResName: WideString;
  ResType: PWideChar);
begin
  inherited Create;
  Initialize(Instance, PWideChar(ResName), ResType);
end;

constructor TTntResourceStream.CreateFromID(Instance: THandle; ResID: Word;
  ResType: PWideChar);
begin
  inherited Create;
  Initialize(Instance, PWideChar(ResID), ResType);
end;

procedure TTntResourceStream.Initialize(Instance: THandle; Name, ResType: PWideChar);

  procedure Error;
  begin
    raise EResNotFound.CreateFmt(SResNotFound, [Name]);
  end;

begin
  HResInfo := FindResourceW(Instance, Name, ResType);
  if HResInfo = 0 then Error;
  HGlobal := LoadResource(Instance, HResInfo);
  if HGlobal = 0 then Error;
  SetPointer(LockResource(HGlobal), SizeOfResource(Instance, HResInfo));
end;

destructor TTntResourceStream.Destroy;
begin
  UnlockResource(HGlobal);
  FreeResource(HGlobal); { Technically this is not necessary (MS KB #193678) }
  inherited Destroy;
end;

function TTntResourceStream.Write(const Buffer; Count: Longint): Longint;
begin
  raise EStreamError.CreateRes(PResStringRec(@SCantWriteResourceStreamError));
end;

procedure TTntResourceStream.SaveToFile(const FileName: WideString);
var
  Stream: TStream;
begin
  Stream := TTntFileStream.Create(FileName, fmCreate);
  try
    SaveToStream(Stream);
  finally
    Stream.Free;
  end;
end;

{ TAnsiStrings }

procedure TAnsiStrings{TNT-ALLOW TAnsiStrings}.LoadFromFile(const FileName: WideString);
var
  Stream: TStream;
begin
  Stream := TTntFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  try
    LoadFromStream(Stream);
  finally
    Stream.Free;
  end;
end;

procedure TAnsiStrings{TNT-ALLOW TAnsiStrings}.SaveToFile(const FileName: WideString);
var
  Stream: TStream;
begin
  Stream := TTntFileStream.Create(FileName, fmCreate);
  try
    SaveToStream(Stream);
  finally
    Stream.Free;
  end;
end;

procedure TAnsiStrings{TNT-ALLOW TAnsiStrings}.LoadFromFileEx(const FileName: WideString; CodePage: Cardinal);
var
  Stream: TStream;
begin
  Stream := TTntFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  try
    LoadFromStreamEx(Stream, CodePage);
  finally
    Stream.Free;
  end;
end;

procedure TAnsiStrings{TNT-ALLOW TAnsiStrings}.SaveToFileEx(const FileName: WideString; CodePage: Cardinal);
var
  Stream: TStream;
begin
  Stream := TTntFileStream.Create(FileName, fmCreate);
  try
    if (CodePage = CP_UTF8) then
      Stream.WriteBuffer(PAnsiChar(UTF8_BOM)^, Length(UTF8_BOM));
    SaveToStreamEx(Stream, CodePage);
  finally
    Stream.Free;
  end;
end;

{ TAnsiStringsForWideStringsAdapter }

constructor TAnsiStringsForWideStringsAdapter.Create(AWideStrings: TTntStrings; _AdapterCodePage: Cardinal);
begin
  inherited Create;
  FWideStrings := AWideStrings;
  FAdapterCodePage := _AdapterCodePage;
end;

function TAnsiStringsForWideStringsAdapter.AdapterCodePage: Cardinal;
begin
  if FAdapterCodePage = 0 then
    Result := TntSystem.DefaultSystemCodePage
  else
    Result := FAdapterCodePage;
end;

procedure TAnsiStringsForWideStringsAdapter.Clear;
begin
  FWideStrings.Clear;
end;

procedure TAnsiStringsForWideStringsAdapter.Delete(Index: Integer);
begin
  FWideStrings.Delete(Index);
end;

function TAnsiStringsForWideStringsAdapter.Get(Index: Integer): AnsiString;
begin
  Result := WideStringToStringEx(FWideStrings.Get(Index), AdapterCodePage);
end;

procedure TAnsiStringsForWideStringsAdapter.Put(Index: Integer; const S: AnsiString);
begin
  FWideStrings.Put(Index, StringToWideStringEx(S, AdapterCodePage));
end;

function TAnsiStringsForWideStringsAdapter.GetCount: Integer;
begin
  Result := FWideStrings.GetCount;
end;

procedure TAnsiStringsForWideStringsAdapter.Insert(Index: Integer; const S: AnsiString);
begin
  FWideStrings.Insert(Index, StringToWideStringEx(S, AdapterCodePage));
end;

function TAnsiStringsForWideStringsAdapter.GetObject(Index: Integer): TObject;
begin
  Result := FWideStrings.GetObject(Index);
end;

procedure TAnsiStringsForWideStringsAdapter.PutObject(Index: Integer; AObject: TObject);
begin
  FWideStrings.PutObject(Index, AObject);
end;

procedure TAnsiStringsForWideStringsAdapter.SetUpdateState(Updating: Boolean);
begin
  FWideStrings.SetUpdateState(Updating);
end;

procedure TAnsiStringsForWideStringsAdapter.LoadFromStreamEx(Stream: TStream; CodePage: Cardinal);
var
  Size: Integer;
  S: AnsiString;
begin
  BeginUpdate;
  try
    Size := Stream.Size - Stream.Position;
    SetString(S, nil, Size);
    Stream.Read(Pointer(S)^, Size);
    FWideStrings.SetTextStr(StringToWideStringEx(S, CodePage));
  finally
    EndUpdate;
  end;
end;

procedure TAnsiStringsForWideStringsAdapter.SaveToStreamEx(Stream: TStream; CodePage: Cardinal);
var
  S: AnsiString;
begin
  S := WideStringToStringEx(FWideStrings.GetTextStr, CodePage);
  Stream.WriteBuffer(Pointer(S)^, Length(S));
end;

{ TTntStrings }

constructor TTntStrings.Create;
begin
  inherited;
  FAnsiStrings := TAnsiStringsForWideStringsAdapter.Create(Self);
  FLastFileCharSet := csUnicode;
end;

destructor TTntStrings.Destroy;
begin
  FreeAndNil(FAnsiStrings);
  inherited;
end;

procedure TTntStrings.SetAnsiStrings(const Value: TAnsiStrings{TNT-ALLOW TAnsiStrings});
begin
  FAnsiStrings.Assign(Value);
end;

procedure TTntStrings.DefineProperties(Filer: TFiler);

  {$IFNDEF COMPILER_7_UP}
  function DoWrite: Boolean;
  begin
    if Filer.Ancestor <> nil then
    begin
      Result := True;
      if Filer.Ancestor is TWideStrings then
        Result := not Equals(TWideStrings(Filer.Ancestor))
    end
    else Result := Count > 0;
  end;

  function DoWriteAsUTF7: Boolean;
  var
    i: integer;
  begin
    Result := False;
    for i := 0 to Count - 1 do begin
      if (Strings[i] <> '') and (WideStringToUTF8(Strings[i]) <> Strings[i]) then begin

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品综合一本久道在线视频| 精品三级在线观看| 免费看黄色91| 国产喂奶挤奶一区二区三区| 一本大道av伊人久久综合| 亚洲电影中文字幕在线观看| 337p粉嫩大胆色噜噜噜噜亚洲 | 韩国av一区二区三区| 欧美国产丝袜视频| 91精品一区二区三区久久久久久| 国产成人免费在线视频| 亚洲高清免费观看高清完整版在线观看| 欧美精品一区二区久久久| 在线视频你懂得一区| 国产一区二区三区四区五区美女| 一区二区三区中文免费| 久久久久国产精品麻豆| 精品处破学生在线二十三| 99麻豆久久久国产精品免费| 捆绑调教一区二区三区| 亚洲综合色区另类av| 国产精品久久一级| 国产制服丝袜一区| 精品日韩一区二区| 日韩国产欧美在线观看| 欧美日韩成人一区二区| 久久精品噜噜噜成人av农村| 国产精品超碰97尤物18| av亚洲精华国产精华| 夜夜夜精品看看| 91精品免费在线| 国产乱理伦片在线观看夜一区| 亚洲精品ww久久久久久p站| 成人动漫精品一区二区| 日韩高清不卡一区二区三区| 欧美一级在线视频| 97久久精品人人爽人人爽蜜臀| 亚洲欧洲国产日韩| 久久精品无码一区二区三区| 欧美一级高清片| 色8久久精品久久久久久蜜| 国产精品888| 全部av―极品视觉盛宴亚洲| 亚洲视频每日更新| 久久久蜜桃精品| 91麻豆精品国产91久久久使用方法| 亚洲一区二区在线观看视频| 久久久久国产精品麻豆| 欧美日韩国产综合草草| 在线精品视频一区二区三四| 99久久er热在这里只有精品66| 国产视频不卡一区| 狂野欧美性猛交blacked| 日本精品免费观看高清观看| 亚洲色图欧美在线| 欧美激情一区二区三区四区| 欧美成人乱码一区二区三区| 一区视频在线播放| 精品在线你懂的| 欧美不卡一区二区| 亚洲天堂av一区| 国产精品一色哟哟哟| 在线成人小视频| 亚洲精品视频一区二区| 成人激情黄色小说| 久久亚洲综合色一区二区三区| 天堂精品中文字幕在线| 日本精品免费观看高清观看| 中文字幕亚洲在| 国产.欧美.日韩| 国产视频不卡一区| 国产在线精品不卡| 日韩一区二区精品葵司在线| 亚洲综合图片区| 欧美午夜影院一区| 国产精品美女久久久久久久久| 中文字幕永久在线不卡| 午夜日韩在线电影| 成人午夜碰碰视频| 欧美日韩一区在线| 国产午夜亚洲精品午夜鲁丝片| 亚洲蜜臀av乱码久久精品| 免费三级欧美电影| 在线观看www91| 中文字幕乱码亚洲精品一区| 蜜臀精品一区二区三区在线观看 | 99久久99久久精品免费看蜜桃| 欧美电影一区二区三区| 最新久久zyz资源站| 精品一区二区三区免费观看| 欧美视频在线一区二区三区| 欧美高清一级片在线观看| 精品在线观看视频| 777亚洲妇女| 亚洲成a人片在线观看中文| 高清beeg欧美| 久久婷婷久久一区二区三区| 免费久久精品视频| 欧美福利视频导航| 三级久久三级久久| 91久久精品一区二区三| 亚洲男同性视频| 91视频在线观看免费| 一区在线观看视频| 97精品国产露脸对白| 最新欧美精品一区二区三区| 9久草视频在线视频精品| 中文无字幕一区二区三区| eeuss鲁片一区二区三区| 综合自拍亚洲综合图不卡区| 色综合久久久久| 亚洲一区二区欧美| 欧美精品久久天天躁| 男男视频亚洲欧美| 日韩欧美一区二区三区在线| 狠狠色狠狠色综合系列| 久久久久久亚洲综合影院红桃 | 国产91综合一区在线观看| 国产精品日韩成人| 色欧美88888久久久久久影院| 亚洲成人av一区二区三区| 日韩欧美视频在线| 福利一区二区在线| 一区二区三区91| 欧美一区二区精品| 久久福利资源站| 国产色产综合色产在线视频| 色综合久久99| 国产在线国偷精品产拍免费yy | 久久国内精品自在自线400部| 亚洲青青青在线视频| 欧美熟乱第一页| 国产一区二区不卡| 亚洲成人先锋电影| 亚洲欧美一区二区视频| 日韩欧美国产午夜精品| 精品视频在线视频| 一本大道av伊人久久综合| 成人国产亚洲欧美成人综合网| 日本成人超碰在线观看| 五月综合激情婷婷六月色窝| 亚洲天天做日日做天天谢日日欢 | 久久亚洲精品国产精品紫薇| 欧美区一区二区三区| 色偷偷一区二区三区| 成人黄色片在线观看| 国产一区二区调教| 久久精品国产77777蜜臀| 亚洲伊人色欲综合网| 亚洲一区二区精品久久av| 一区二区三区在线视频免费 | 最新不卡av在线| 自拍偷拍亚洲激情| 日韩一区在线免费观看| 亚洲欧美自拍偷拍色图| 亚洲欧洲色图综合| 亚洲免费观看高清完整| 亚洲国产乱码最新视频 | 95精品视频在线| 一本一道波多野结衣一区二区| 91免费在线看| 欧美亚洲一区二区在线观看| 日本二三区不卡| 欧美电影在线免费观看| 日韩精品一区二区在线| 久久久欧美精品sm网站| 国产欧美久久久精品影院| 亚洲素人一区二区| 亚洲图片欧美色图| 免费黄网站欧美| 国产91色综合久久免费分享| 91在线免费播放| 6080yy午夜一二三区久久| 26uuu国产电影一区二区| 亚洲日本在线视频观看| 日韩成人dvd| 国产电影精品久久禁18| 欧美色图片你懂的| 欧美精品一区二区三区久久久| 中文字幕亚洲不卡| 午夜电影久久久| 91九色02白丝porn| 欧美精品乱码久久久久久按摩| 欧美极品aⅴ影院| 亚洲mv大片欧洲mv大片精品| 成人激情开心网| 日韩三级免费观看| 亚洲成人免费av| 99国产精品久久久久久久久久| 精品国产91乱码一区二区三区| 亚洲免费视频中文字幕| 国产成人一区二区精品非洲| 欧美精品一二三| 亚洲国产精品综合小说图片区| 成人午夜碰碰视频| 欧美不卡视频一区| 免费日韩伦理电影| 69p69国产精品| 亚洲第一久久影院| 91黄色小视频|