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

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

?? inffiles.~pas

?? U盤autorun病毒通測與查殺工具安裝SUI控件
?? ~PAS
?? 第 1 頁 / 共 2 頁
字號:
var
  P: PHashItem;
begin
  P := Find(Key)^;
  if P <> nil then
    Result := P^.Value else
    Result := -1;
end;

{ THashedStringList }

procedure THashedStringList.Changed;
begin
  inherited;
  FValueHashValid := False;
  FNameHashValid := False;
end;

destructor THashedStringList.Destroy;
begin
  FValueHash.Free;
  FNameHash.Free;
  inherited;
end;

function THashedStringList.IndexOf(const S: string): Integer;
begin
  UpdateValueHash;
  if not CaseSensitive then
    Result :=  FValueHash.ValueOf(AnsiUpperCase(S))
  else
    Result :=  FValueHash.ValueOf(S);
end;

function THashedStringList.IndexOfName(const Name: string): Integer;
begin
  UpdateNameHash;
  if not CaseSensitive then
    Result := FNameHash.ValueOf(AnsiUpperCase(Name))
  else
    Result := FNameHash.ValueOf(Name);
end;

procedure THashedStringList.UpdateNameHash;
var
  I: Integer;
  P: Integer;
  Key: string;
begin
  if FNameHashValid then Exit;
  if FNameHash = nil then
    FNameHash := TStringHash.Create
  else
    FNameHash.Clear;
  for I := 0 to Count - 1 do
  begin
    Key := Get(I);
    P := AnsiPos('=', Key);
    if P <> 0 then
    begin
      if not CaseSensitive then
        Key := AnsiUpperCase(Copy(Key, 1, P - 1))
      else
        Key := Copy(Key, 1, P - 1);
      FNameHash.Add(Key, I);
    end;
  end;
  FNameHashValid := True;
end;

procedure THashedStringList.UpdateValueHash;
var
  I: Integer;
begin
  if FValueHashValid then Exit;
  if FValueHash = nil then
    FValueHash := TStringHash.Create
  else
    FValueHash.Clear;
  for I := 0 to Count - 1 do
    if not CaseSensitive then
      FValueHash.Add(AnsiUpperCase(Self[I]), I)
    else
      FValueHash.Add(Self[I], I);
  FValueHashValid := True;
end;

{ TMemIniFile }

constructor TMemIniFile.Create(const FileName: string);
begin
  inherited Create(FileName);
  FSections := THashedStringList.Create;
{$IFDEF LINUX}
  FSections.CaseSensitive := True;
{$ENDIF}
  LoadValues;
end;

destructor TMemIniFile.Destroy;
begin
  if FSections <> nil then Clear;
  FSections.Free;
  inherited;
end;

function TMemIniFile.AddSection(const Section: string): TStrings;
begin
  Result := THashedStringList.Create;
  try
    THashedStringList(Result).CaseSensitive := CaseSensitive;
    FSections.AddObject(Section, Result);
  except
    Result.Free;
    raise;
  end;
end;

procedure TMemIniFile.Clear;
var
  I: Integer;
begin
  for I := 0 to FSections.Count - 1 do
    TObject(FSections.Objects[I]).Free;
  FSections.Clear;
end;

procedure TMemIniFile.DeleteKey(const Section, Ident: String);
var
  I, J: Integer;
  Strings: TStrings;
begin
  I := FSections.IndexOf(Section);
  if I >= 0 then
  begin
    Strings := TStrings(FSections.Objects[I]);
    J := Strings.IndexOfName(Ident);
    if J >= 0 then Strings.Delete(J);
  end;
end;

procedure TMemIniFile.EraseSection(const Section: string);
var
  I: Integer;
begin
  I := FSections.IndexOf(Section);
  if I >= 0 then
  begin
    TStrings(FSections.Objects[I]).Free;
    FSections.Delete(I);
  end;
end;

function TMemIniFile.GetCaseSensitive: Boolean;
begin
  Result := FSections.CaseSensitive;
end;

procedure TMemIniFile.GetStrings(List: TStrings);
var
  I, J: Integer;
  Strings: TStrings;
begin
  List.BeginUpdate;
  try
    for I := 0 to FSections.Count - 1 do
    begin
      List.Add('[' + FSections[I] + ']');
      Strings := TStrings(FSections.Objects[I]);
      for J := 0 to Strings.Count - 1 do List.Add(Strings[J]);
      List.Add('');
    end;
  finally
    List.EndUpdate;
  end;
end;

procedure TMemIniFile.LoadValues;
var
  List: TStringList;
begin
  if (FileName <> '') and FileExists(FileName) then
  begin
    List := TStringList.Create;
    try
      List.LoadFromFile(FileName);
      SetStrings(List);
    finally
      List.Free;
    end;
  end else Clear;
end;

procedure TMemIniFile.ReadSection(const Section: string;
  Strings: TStrings);
var
  I, J: Integer;
  SectionStrings: TStrings;
begin
  Strings.BeginUpdate;
  try
    Strings.Clear;
    I := FSections.IndexOf(Section);
    if I >= 0 then
    begin
      SectionStrings := TStrings(FSections.Objects[I]);
      for J := 0 to SectionStrings.Count - 1 do
        Strings.Add(SectionStrings.Names[J]);
    end;
  finally
    Strings.EndUpdate;
  end;
end;

procedure TMemIniFile.ReadSections(Strings: TStrings);
begin
  Strings.Assign(FSections);
end;

procedure TMemIniFile.ReadSectionValues(const Section: string;
  Strings: TStrings);
var
  I: Integer;
begin
  Strings.BeginUpdate;
  try
    Strings.Clear;
    I := FSections.IndexOf(Section);
    if I >= 0 then Strings.Assign(TStrings(FSections.Objects[I]));
  finally
    Strings.EndUpdate;
  end;
end;

function TMemIniFile.ReadString(const Section, Ident,
  Default: string): string;
var
  I: Integer;
  Strings: TStrings;
begin
  I := FSections.IndexOf(Section);
  if I >= 0 then
  begin
    Strings := TStrings(FSections.Objects[I]);
    I := Strings.IndexOfName(Ident);
    if I >= 0 then
    begin
      Result := Copy(Strings[I], Length(Ident) + 2, Maxint);
      Exit;
    end;
  end;
  Result := Default;
end;

procedure TMemIniFile.Rename(const FileName: string; Reload: Boolean);
begin
  FFileName := FileName;
  if Reload then LoadValues;
end;

procedure TMemIniFile.SetCaseSensitive(Value: Boolean);
begin
  FSections.CaseSensitive := Value;
end;

procedure TMemIniFile.SetStrings(List: TStrings);
var
  I, J: Integer;
  S: string;
  Strings: TStrings;
begin
  Clear;
  Strings := nil;
  for I := 0 to List.Count - 1 do
  begin
    S := Trim(List[I]);
    if (S <> '') and (S[1] <> ';') then
      if (S[1] = '[') and (S[Length(S)] = ']') then
      begin
        Delete(S, 1, 1);
        SetLength(S, Length(S)-1);
        Strings := AddSection(Trim(S));
      end
      else
        if Strings <> nil then
        begin
          J := Pos('=', S);
          if J > 0 then // remove spaces before and after '='
            Strings.Add(Trim(Copy(S, 1, J-1)) + '=' + Trim(Copy(S, J+1, MaxInt)) )
          else
            Strings.Add(S);
        end;
  end;
end;

procedure TMemIniFile.UpdateFile;
var
  List: TStringList;
begin
  List := TStringList.Create;
  try
    GetStrings(List);
    List.SaveToFile(FFileName);
  finally
    List.Free;
  end;
end;

procedure TMemIniFile.WriteString(const Section, Ident, Value: String);
var
  I: Integer;
  S: string;
  Strings: TStrings;
begin
  I := FSections.IndexOf(Section);
  if I >= 0 then
    Strings := TStrings(FSections.Objects[I]) else
    Strings := AddSection(Section);
  S := Ident + '=' + Value;
  I := Strings.IndexOfName(Ident);
  if I >= 0 then Strings[I] := S else Strings.Add(S);
end;

{$IFDEF MSWINDOWS}
{ TIniFile }

destructor TIniFile.Destroy;
begin
  UpdateFile;         // flush changes to disk
  inherited Destroy;
end;

function TIniFile.ReadString(const Section, Ident, Default: string): string;
var
  Buffer: array[0..2047] of Char;
begin
  SetString(Result, Buffer, GetPrivateProfileString(PChar(Section),
    PChar(Ident), PChar(Default), Buffer, SizeOf(Buffer), PChar(FFileName)));
end;

procedure TIniFile.WriteString(const Section, Ident, Value: string);
begin
  if not WritePrivateProfileString(PChar(Section), PChar(Ident),
    PChar(Value), PChar(FFileName)) then
    raise EIniFileException.CreateResFmt(@SIniFileWriteError, [FileName]);
end;

procedure TIniFile.ReadSections(Strings: TStrings);
const
  BufSize = 16384;
var
  Buffer, P: PChar;
begin
  GetMem(Buffer, BufSize);
  try
    Strings.BeginUpdate;
    try
      Strings.Clear;
      if GetPrivateProfileString(nil, nil, nil, Buffer, BufSize,
        PChar(FFileName)) <> 0 then
      begin
        P := Buffer;
        while P^ <> #0 do
        begin
          Strings.Add(P);
          Inc(P, StrLen(P) + 1);
        end;
      end;
    finally
      Strings.EndUpdate;
    end;
  finally
    FreeMem(Buffer, BufSize);
  end;
end;

procedure TIniFile.ReadSection(const Section: string; Strings: TStrings);
const
  BufSize = 16384;
var
  Buffer, P: PChar;
begin
  GetMem(Buffer, BufSize);
  try
    Strings.BeginUpdate;
    try
      Strings.Clear;
      if GetPrivateProfileString(PChar(Section), nil, nil, Buffer, BufSize,
        PChar(FFileName)) <> 0 then
      begin
        P := Buffer;
        while P^ <> #0 do
        begin
          Strings.Add(P);
          Inc(P, StrLen(P) + 1);
        end;
      end;
    finally
      Strings.EndUpdate;
    end;
  finally
    FreeMem(Buffer, BufSize);
  end;
end;

procedure TIniFile.ReadSectionValues(const Section: string; Strings: TStrings);
var
  KeyList: TStringList;
  I: Integer;
begin
  KeyList := TStringList.Create;
  try
    ReadSection(Section, KeyList);
    Strings.BeginUpdate;
    try
      Strings.Clear;
      for I := 0 to KeyList.Count - 1 do
        Strings.Add(KeyList[I] + '=' + ReadString(Section, KeyList[I], ''))
    finally
      Strings.EndUpdate;
    end;
  finally
    KeyList.Free;
  end;
end;

procedure TIniFile.EraseSection(const Section: string);
begin
  if not WritePrivateProfileString(PChar(Section), nil, nil,
    PChar(FFileName)) then
    raise EIniFileException.CreateResFmt(@SIniFileWriteError, [FileName]);
end;

procedure TIniFile.DeleteKey(const Section, Ident: String);
begin
  WritePrivateProfileString(PChar(Section), PChar(Ident), nil,
     PChar(FFileName));
end;

procedure TIniFile.UpdateFile;
begin
  WritePrivateProfileString(nil, nil, nil, PChar(FFileName));
end;
{$ENDIF}

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区四| 久久久青草青青国产亚洲免观| 在线观看日产精品| 久久综合九色综合97婷婷女人| 亚洲精品国久久99热| 青青草91视频| 欧美视频你懂的| 亚洲欧洲精品成人久久奇米网| 美国十次了思思久久精品导航| 91色婷婷久久久久合中文| 精品av久久707| 亚洲一区在线看| 91小视频免费观看| 亚洲国产精品成人综合色在线婷婷| 日本中文字幕一区二区有限公司| 99精品视频在线观看| 久久久91精品国产一区二区精品| 日韩国产欧美在线播放| 91免费在线视频观看| 国产欧美一区二区在线观看| 日本最新不卡在线| 91精品欧美一区二区三区综合在| 综合电影一区二区三区| 成人午夜精品在线| 国产午夜精品美女毛片视频| 韩国精品久久久| 日韩欧美在线综合网| 日韩中文字幕1| 欧美浪妇xxxx高跟鞋交| 首页综合国产亚洲丝袜| 欧美日韩电影在线播放| 婷婷综合久久一区二区三区| 欧美色区777第一页| 亚洲电影中文字幕在线观看| 欧美在线观看一区二区| 亚洲国产成人porn| 欧美日韩精品一区二区天天拍小说 | 在线精品观看国产| 亚洲人成网站影音先锋播放| 91色porny| 亚洲一区二区三区自拍| 欧美区一区二区三区| 丝袜脚交一区二区| 欧美日韩在线观看一区二区 | 欧美国产97人人爽人人喊| 国产精品77777| 国产精品久久久久久久久快鸭 | 国产视频一区二区三区在线观看| 精品一区二区日韩| 精品国产乱码久久久久久久久| 久久福利资源站| 久久精品亚洲乱码伦伦中文| 国v精品久久久网| 成人免费在线观看入口| 色综合一区二区| 午夜精品久久久| 精品国产91洋老外米糕| 国产91精品在线观看| 亚洲美女电影在线| 在线综合视频播放| 国产成人三级在线观看| 一区二区视频在线看| 欧美日韩国产三级| 久久国产夜色精品鲁鲁99| 欧美国产一区视频在线观看| 色综合久久综合网欧美综合网| 亚洲一区在线免费观看| 日韩欧美一级二级三级久久久| 国产不卡在线一区| 亚洲国产成人精品视频| 久久久久久久久久看片| 91黄视频在线观看| 久久99精品国产.久久久久| 国产精品美女久久久久高潮| 欧美日韩卡一卡二| 国产成人综合亚洲网站| 亚洲成人资源在线| 国产片一区二区三区| 欧美午夜电影在线播放| 国产一区欧美日韩| 性欧美大战久久久久久久久| 久久久国际精品| 欧美日韩国产色站一区二区三区| 成人av免费观看| 毛片av一区二区| 自拍偷拍欧美精品| 久久免费国产精品| 欧美久久久一区| av毛片久久久久**hd| 久久成人免费日本黄色| 亚洲激情五月婷婷| 国产欧美在线观看一区| 欧美一级精品在线| 欧美日韩一区二区电影| 92精品国产成人观看免费| 国产精品亚洲一区二区三区妖精 | 欧美一级电影网站| 欧美日韩美少妇| 欧美伊人久久大香线蕉综合69| 成人午夜av在线| 国产乱人伦偷精品视频不卡| 五月天精品一区二区三区| 亚洲精品免费看| 国产精品免费aⅴ片在线观看| 欧美精品一区二区三区高清aⅴ| 欧美二区三区91| 欧美三级视频在线观看| 一本到不卡免费一区二区| 国产成人午夜精品5599| 国产一区二区三区精品欧美日韩一区二区三区 | 国产精品第13页| 国产欧美日韩亚州综合| 3atv在线一区二区三区| 在线观看视频一区二区欧美日韩| 国产白丝网站精品污在线入口| 六月丁香婷婷色狠狠久久| 日韩激情视频在线观看| 日韩高清不卡一区| 免费在线看成人av| 美日韩一级片在线观看| 久久精品国产一区二区三 | 国产精品中文有码| 国产精品综合在线视频| 国产成人自拍高清视频在线免费播放| 国产一区二区三区免费观看| 国产sm精品调教视频网站| 粉嫩在线一区二区三区视频| 成人午夜电影网站| 91色|porny| 欧美日韩国产123区| 欧美午夜不卡在线观看免费| 91网站黄www| 欧美在线一区二区| 欧美一级艳片视频免费观看| 日韩一本二本av| 国产天堂亚洲国产碰碰| 国产精品入口麻豆原神| 亚洲男人的天堂一区二区| 亚洲图片欧美一区| 麻豆精品在线视频| 成人一区在线看| 日本精品免费观看高清观看| 欧美老年两性高潮| 国产亚洲精品bt天堂精选| 国产精品久久国产精麻豆99网站| 亚洲一区在线观看视频| 美女一区二区视频| www.欧美色图| 337p亚洲精品色噜噜噜| 国产欧美一区二区精品仙草咪| 亚洲天堂a在线| 老司机一区二区| 99久久婷婷国产综合精品| 欧美精品粉嫩高潮一区二区| 久久嫩草精品久久久久| 一区二区三区四区亚洲| 久久超碰97中文字幕| 北岛玲一区二区三区四区| 欧美精品第1页| 国产精品系列在线| 日韩成人免费看| aaa国产一区| 26uuu亚洲综合色欧美| 一区二区三区成人| 国产一区在线观看视频| 欧美午夜视频网站| 国产精品污污网站在线观看| 日韩不卡一二三区| 色先锋aa成人| 国产欧美一区二区精品仙草咪| 日本不卡1234视频| 色欧美88888久久久久久影院| 久久中文字幕电影| 日韩精品亚洲专区| 色婷婷av一区二区三区软件| 国产亚洲一区字幕| 日本不卡在线视频| 欧美视频精品在线| 亚洲精品精品亚洲| 高潮精品一区videoshd| 日韩一区二区视频| 亚洲超碰精品一区二区| 99麻豆久久久国产精品免费优播| 2014亚洲片线观看视频免费| 首页国产欧美日韩丝袜| 欧美丝袜丝交足nylons图片| 亚洲欧美自拍偷拍色图| 国产999精品久久久久久绿帽| 日韩欧美国产系列| 热久久国产精品| 欧美精品第一页| 日韩高清不卡一区| 91精品国产入口在线| 香蕉乱码成人久久天堂爱免费| 色94色欧美sute亚洲线路二| 日韩理论片一区二区| 99精品视频免费在线观看| 国产精品免费视频网站| 成人v精品蜜桃久久一区| 中文字幕av资源一区|