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

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

?? dsninfo.pas

?? 主要介紹超市管理系統的后臺系統,后臺程序是系統初始化和系統維護最常使用的一部分程序,主要任務是建產基本數據,進出貨盤點和打印報表.后臺程序主要負責的都是管理上的功能,當后臺建立完整的數據后,前臺才能順
?? PAS
字號:
unit DsnInfo;

// Runtime Design System Version 2.x   June/08/1998
// Copyright(c) 1998 Kazuhiro Sasaki.

interface

uses
  Windows, Messages, SysUtils, Classes, Forms, Controls, Dialogs,
  TypInfo;

type

  TMyPropInfo = record
    Name:String;
    Value:String;
    Kind: TTypeKind;
  end;

  TObjInfo = class
  private
    FInstance:TObject;
    FName: String;
    FCount:Integer;
    FPropList: PPropList;
    HaveInstance:Boolean;
    procedure ListUpProps(Instance:TObject);
    function GetItems(Index:Integer):TMyPropInfo;
  public
    constructor Create(Instance: TObject);
    destructor Destroy; override;
    function IndexOfProp(const S:String):Integer;
    property Name:String read FName;
    property Items[Index:Integer]: TMyPropInfo read GetItems; default;
    property PropCount: Integer read FCount;
  end;

  function PropValueToStr(Instance: TPersistent;
                        PropInfo: PPropInfo):string;

implementation

type
  TIntegerSet = set of 0..SizeOf(Integer) * 8 - 1;

function PropValueToStr(Instance: TPersistent;
                        PropInfo: PPropInfo):string;
var
  PropType: PTypeInfo;

  function SetPropToStr(Value: Cardinal):string;
  var
    I: Integer;
    BaseType: PTypeInfo;
  begin
    BaseType := GetTypeData(PropType)^.CompType^;
    Result := '[';
    for I := 0 to 15 do
      if I in TIntegerSet(Value) then begin
        if Result <> '[' then
          Result := Result + ',';
        Result := Result + GetEnumName(BaseType, I);
      end;
    Result := Result + ']';
  end;

  function OrdPropToStr:string;
  var
    Value: Longint;
  begin
    Value := GetOrdProp(Instance, PropInfo);
    case PropType^.Kind of
        tkInteger:
          Result := IntToStr(Value);
        tkChar:
          Result := Chr(Value);
        tkSet:
          Result := SetPropToStr(Value);
        tkEnumeration:
          Result := GetEnumName(PropType, Value);
    end;
  end;

  function FloatPropToStr:string;
  var
    Value: Extended;
  begin
    Value := GetFloatProp(Instance, PropInfo);
    Result := FloatToStr(Value);
  end;

  function StrPropToStr:string;
  begin
    Result := GetStrProp(Instance, PropInfo);
  end;

  function ClassPropToStr:string;
  var
    Component: TComponent;
  begin
    if GetTypeData(PropInfo^.PropType^)^.ClassType.InheritsFrom(TComponent)
    then begin
      Component := TComponent(GetOrdProp(Instance, PropInfo));
      if Component = nil then
        Result := ''
      else
        Result := Component.Name;
    end else begin
      FmtStr(Result, '(%s)', [PropInfo^.PropType^.Name]);
    end;
  end;

  function MethodPropToStr: string;
  var
    Value: TMethod;
    Root: TComponent;
  begin
    Value := GetMethodProp(Instance, PropInfo);
    if Value.Code <> nil then
    begin
      if Instance is TForm then
        Root := TComponent(Instance)
      else
        Root := TComponent(Instance).Owner;
      Result := Root.MethodName(Value.Code);
    end else begin
      Result := '';
    end;
  end;

begin
  begin
    PropType := PropInfo^.PropType^;
    case PropType^.Kind of
      tkInteger, tkChar, tkEnumeration, tkSet:
        Result := OrdPropToStr;
      tkFloat:
        Result := FloatPropToStr;
      tkString,tkLString:
        Result := StrPropToStr;
      tkClass:
        Result := ClassPropToStr;
      tkMethod:
        Result := MethodPropToStr;
     else
        Result := 'Unknown';
    end;
  end;
end;

{TObjInfo}
constructor TObjInfo.Create(Instance: TObject);
begin
  HaveInstance:= False;
  if Assigned(Instance) then
  begin
    FInstance:= Instance;
    FName:= Instance.ClassName;
    ListUpProps(Instance);
  end;
end;

destructor TObjInfo.Destroy;
begin
  if HaveInstance then
    FreeMem(FPropList, PropCount * SizeOf(Pointer));

  inherited Destroy;
end;

function TObjInfo.GetItems(Index:Integer):TMyPropInfo;
var
  PropInfo: PPropInfo;
  PropType: PTypeInfo;
  PropName, PropValue: string;
begin
  PropInfo := FPropList^[Index];
  if PropInfo = nil then
  begin
    Raise Exception.Create('Invalid Index');
    Exit;
  end;
  PropName := PropInfo^.Name;
  Result.Name:= PropName;
  PropValue := PropValueToStr(TPersistent(FInstance),PropInfo);
  Result.Value:= PropValue;
  PropType := PropInfo^.PropType^;
  Result.Kind:= PropType^.Kind;
end;

function TObjInfo.IndexOfProp(const S:String):Integer;
var
  i:integer;
  St:TStringList;
begin
  St:=TStringList.Create;
  for i:= 0 to FCount -1 do
    St.Add(Self[i].Name);

  Result:= St.IndexOf(S);
  St.Free;
end;

procedure TObjInfo.ListUpProps(Instance:TObject);
begin
  FCount := GetTypeData(Instance.ClassInfo)^.PropCount;
  if FCount > 0 then
  begin
    GetMem(FPropList, FCount * SizeOf(Pointer));
    HaveInstance:= True;
    try
      GetPropInfos(Instance.ClassInfo, FPropList);
    except
    end;
  end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
宅男噜噜噜66一区二区66| 91亚洲精品久久久蜜桃网站| 国产精品久久久久影院亚瑟| 在线观看91视频| 成人免费va视频| 日韩av在线播放中文字幕| 亚洲欧洲99久久| 久久影视一区二区| 欧美一级理论性理论a| 97久久人人超碰| 懂色av一区二区三区免费观看| 婷婷一区二区三区| 亚洲精品你懂的| 亚洲欧美成人一区二区三区| 久久欧美一区二区| 欧美xxxxx裸体时装秀| 91精品国产综合久久久久| 欧洲av在线精品| 色视频一区二区| 色婷婷激情一区二区三区| av在线不卡观看免费观看| 成人午夜碰碰视频| 97精品电影院| 一本一道综合狠狠老| 日本电影亚洲天堂一区| 91久久精品一区二区| 欧美丝袜丝交足nylons图片| 欧美性猛片xxxx免费看久爱| 欧美日韩一区高清| 欧美一卡二卡在线| 久久天天做天天爱综合色| 久久久久久黄色| √…a在线天堂一区| 亚洲激情自拍偷拍| 日韩专区中文字幕一区二区| 偷拍与自拍一区| 国产麻豆精品一区二区| 91免费国产在线| 日韩视频在线永久播放| 久久久国产精华| 一区二区三区精品视频| 九九精品视频在线看| 99久久精品免费| 日韩一区二区三区高清免费看看 | 制服.丝袜.亚洲.中文.综合| 精品国产123| 亚洲永久免费av| 国产成人亚洲综合a∨婷婷图片| 色诱亚洲精品久久久久久| 国产精品视频在线看| 国内成人精品2018免费看| 欧美日韩精品一区二区三区四区| 亚洲一区二区精品3399| 欧美视频一区二区三区| 中文字幕欧美区| 3751色影院一区二区三区| 亚洲一区在线视频| 欧美色视频一区| 麻豆国产欧美一区二区三区| 精品欧美一区二区久久| 国产剧情一区二区| 国产精品伦理一区二区| 色婷婷av一区二区| 免费av网站大全久久| 国产亚洲欧美日韩在线一区| 99视频热这里只有精品免费| 亚洲综合一区二区| 亚洲精品一区二区三区影院 | 91亚洲精品久久久蜜桃| 日日摸夜夜添夜夜添精品视频| 欧美变态tickle挠乳网站| 福利一区福利二区| 亚洲午夜国产一区99re久久| 欧美一区二区三区播放老司机 | 在线视频一区二区三| 日本欧美肥老太交大片| 国产精品成人一区二区三区夜夜夜| 91久久一区二区| 国产麻豆精品久久一二三| 一级做a爱片久久| 国产精品日产欧美久久久久| 欧美日韩国产综合一区二区 | 国产欧美一区二区三区网站| 欧美日韩中文一区| 不卡av电影在线播放| 轻轻草成人在线| 亚洲精品午夜久久久| 欧美日韩成人综合| 国产伦精品一区二区三区免费| 亚洲乱码一区二区三区在线观看| 日韩美一区二区三区| 成人影视亚洲图片在线| 午夜精品久久久久| 国产精品国模大尺度视频| 精品粉嫩aⅴ一区二区三区四区| 在线视频一区二区三区| 91免费小视频| 91在线观看污| 99久久99精品久久久久久 | 亚洲电影第三页| 亚洲视频在线观看一区| 中文字幕成人av| 国产精品久久久久久久久图文区 | 成人动漫一区二区| 国产精品资源网| 国产毛片精品视频| 成人美女在线视频| av在线不卡观看免费观看| 91年精品国产| 欧美婷婷六月丁香综合色| 成人亚洲一区二区一| 国产成人精品亚洲日本在线桃色 | 欧美日韩你懂得| 91丝袜美女网| 日本道色综合久久| 欧美综合在线视频| 欧洲精品中文字幕| 欧美日韩日本视频| 日韩一区二区在线观看视频| 欧美精品123区| 日韩视频免费观看高清完整版| 91精品国产综合久久精品图片 | 综合中文字幕亚洲| 自拍偷拍欧美精品| 一二三四社区欧美黄| 亚洲精品日韩专区silk| 视频一区欧美日韩| 美女视频网站黄色亚洲| 美国av一区二区| 国产精品99久久久久久有的能看| 国内精品伊人久久久久av一坑| 国产米奇在线777精品观看| 成人app网站| 欧美日韩国产精选| 久久久久国产一区二区三区四区| 国产欧美一区二区精品秋霞影院| 亚洲欧美综合色| 五月天久久比比资源色| 激情综合色播五月| 91影视在线播放| 日韩一级二级三级精品视频| 欧美国产欧美综合| 久久99精品国产麻豆不卡| 欧美精品第1页| 久久久国产午夜精品| 精一区二区三区| 91.麻豆视频| 天天综合色天天| 欧美怡红院视频| 亚洲美女区一区| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 丁香婷婷深情五月亚洲| 欧美色图一区二区三区| 中文字幕免费不卡在线| 美女看a上一区| 欧美日韩成人在线| 亚洲蜜臀av乱码久久精品蜜桃| 国产成人精品综合在线观看| 欧美一区二区三区免费在线看| 亚洲精品欧美综合四区| 91丨九色丨尤物| 综合色天天鬼久久鬼色| 成人av先锋影音| 国产日韩欧美麻豆| 成人激情开心网| 亚洲午夜在线视频| 制服丝袜亚洲色图| 精品在线一区二区| xfplay精品久久| 国产精品911| 亚洲综合一区二区三区| 色综合激情五月| 亚洲综合色视频| 欧美一区二区精品在线| 日韩国产欧美一区二区三区| 欧美一区二区三区四区在线观看| 亚洲国产色一区| 欧美一区二区免费观在线| 国产在线一区二区| 国产精品色眯眯| 91精品婷婷国产综合久久竹菊| 国产精品综合av一区二区国产馆| 国产精品网曝门| 欧美理论在线播放| 国产成人在线网站| 亚洲综合999| 精品久久久久久无| 色综合天天综合网天天狠天天| 亚洲国产一区视频| 久久久久久久久免费| 91女厕偷拍女厕偷拍高清| 视频在线观看国产精品| 久久精品一级爱片| 日韩欧美不卡在线观看视频| 在线观看亚洲成人| 9人人澡人人爽人人精品| 国产精品综合二区| 精彩视频一区二区三区| 日韩av中文字幕一区二区| 日韩黄色免费网站|