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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? sample1.pas

?? 通用數(shù)據(jù)庫(kù)管理的VC程序
?? PAS
字號(hào):
unit Sample1;

{$I mwEdit.inc}

interface

uses
  SysUtils, Windows, Messages, Classes, Controls, Graphics, Registry,
  mwHighlighter, mwExport, mwLocalStr;

Type
  TtkTokenKind = (
    tkComment,
    tkIdentifier,
    tkKey,
    tkNull,
    tkSpace,
    tkUnknown);

  TRangeState = (rsUnknown);

  TProcTableProc = procedure of Object;

  PIdentFuncTableFunc = ^TIdentFuncTableFunc;
  TIdentFuncTableFunc = function: TtkTokenKind of Object;

type
  TmwSampleSyn = class(TmwCustomHighLighter)
  private
    fRange: TRangeState;
    fLine: PChar;
    fLineNumber: Integer;
    fExporter: TmwCustomExport;
    fProcTable: array[#0..#255] of TProcTableProc;
    Run: LongInt;
    fStringLen: Integer;
    fToIdent: PChar;
    fTokenPos: Integer;
    FTokenID: TtkTokenKind;
    fIdentFuncTable: array[0..74] of TIdentFuncTableFunc;
    fCommentAttri: TmwHighLightAttributes;
    fIdentifierAttri: TmwHighLightAttributes;
    fKeyAttri: TmwHighLightAttributes;
    fSpaceAttri: TmwHighLightAttributes;
    function KeyHash(ToHash: PChar): Integer;
    function KeyComp(const aKey: String): Boolean;
    function Func74: TtkTokenKind;
    procedure IdentProc;
    procedure NullProc;
    procedure SlashProc;
    procedure SpaceProc;
    procedure UnknownProc;
    function AltFunc: TtkTokenKind;
    procedure InitIdent;
    function IdentKind(MayBe: PChar): TtkTokenKind;
    procedure MakeMethodTables;
  protected
    function GetIdentChars: TIdentChars; override;
    function GetLanguageName: string; override;
    function GetCapability: THighlighterCapability; override;
  public
    constructor Create(AOwner: TComponent); override;
    function GetEOL: Boolean; override;
    function GetRange: Pointer; override;
    function GetTokenID: TtkTokenKind;
    procedure SetLine(NewValue: String; LineNumber: Integer); override;
    procedure ExportNext; override;
    procedure SetLineForExport(NewValue: String); override;
    function GetToken: String; override;
    function GetTokenAttribute: TmwHighLightAttributes; override;
    function GetTokenKind: integer; override;
    function GetTokenPos: Integer; override;
    procedure Next; override;
    procedure SetRange(Value: Pointer); override;
    procedure ReSetRange; override;
    property IdentChars;
  published
    property CommentAttri: TmwHighLightAttributes read fCommentAttri write fCommentAttri;
    property IdentifierAttri: TmwHighLightAttributes read fIdentifierAttri write fIdentifierAttri;
    property KeyAttri: TmwHighLightAttributes read fKeyAttri write fKeyAttri;
    property SpaceAttri: TmwHighLightAttributes read fSpaceAttri write fSpaceAttri;
    property Exporter:TmwCustomExport read FExporter write FExporter;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents(MWS_HighlightersPage, [TmwSampleSyn]);
end;

var
  Identifiers: array[#0..#255] of ByteBool;
  mHashTable: array[#0..#255] of Integer;

procedure MakeIdentTable;
var
  I, J: Char;
begin
  for I := #0 to #255 do
  begin
    Case I of
      '_', '0'..'9', 'a'..'z', 'A'..'Z': Identifiers[I] := True;
      else Identifiers[I] := False;
    end;
    J := UpCase(I);
    Case I in ['_', 'A'..'Z', 'a'..'z'] of
      True: mHashTable[I] := Ord(J) - 64
      else mHashTable[I] := 0;
    end;
  end;
end;

procedure TmwSampleSyn.InitIdent;
var
  I: Integer;
  pF: PIdentFuncTableFunc;
begin
  pF := PIdentFuncTableFunc(@fIdentFuncTable);
  for I := Low(fIdentFuncTable) to High(fIdentFuncTable) do begin
    pF^ := AltFunc;
    Inc(pF);
  end;
  fIdentFuncTable[74] := Func74;
end;

function TmwSampleSyn.KeyHash(ToHash: PChar): Integer;
begin
  Result := 0;
  while ToHash^ in ['_', '0'..'9', 'a'..'z', 'A'..'Z'] do
  begin
    inc(Result, mHashTable[ToHash^]);
    inc(ToHash);
  end;
  fStringLen := ToHash - fToIdent;
end;

function TmwSampleSyn.KeyComp(const aKey: String): Boolean;
var
  I: Integer;
  Temp: PChar;
begin
  Temp := fToIdent;
  if Length(aKey) = fStringLen then
  begin
    Result := True;
    for i := 1 to fStringLen do
    begin
      if mHashTable[Temp^] <> mHashTable[aKey[i]] then
      begin
        Result := False;
        break;
      end;
      inc(Temp);
    end;
  end else Result := False;
end;

function TmwSampleSyn.Func74: TtkTokenKind;
begin
  if KeyComp('mwEdit') then Result := tkKey else Result := tkIdentifier;
end;

function TmwSampleSyn.AltFunc: TtkTokenKind;
begin
  Result := tkIdentifier;
end;

function TmwSampleSyn.IdentKind(MayBe: PChar): TtkTokenKind;
var
  HashKey: Integer;
begin
  fToIdent := MayBe;
  HashKey := KeyHash(MayBe);
  if HashKey < 75 then Result := fIdentFuncTable[HashKey] else Result := tkIdentifier;
end;

procedure TmwSampleSyn.MakeMethodTables;
var
  I: Char;
begin
  for I := #0 to #255 do
    case I of
      'A'..'Z', 'a'..'z', '_': fProcTable[I] := IdentProc;
      #0: fProcTable[I] := NullProc;
      '/': fProcTable[I] := SlashProc;
      #1..#32: fProcTable[I] := SpaceProc;
      else fProcTable[I] := UnknownProc;
    end;
end;

constructor TmwSampleSyn.Create(AOwner: TComponent);
begin
  fCommentAttri := TmwHighLightAttributes.Create(MWS_AttrComment);
  fIdentifierAttri := TmwHighLightAttributes.Create(MWS_AttrIdentifier);
  fKeyAttri := TmwHighLightAttributes.Create(MWS_AttrReservedWord);
  fSpaceAttri := TmwHighLightAttributes.Create(MWS_AttrSpace);
  inherited Create(AOwner);
  AddAttribute(fCommentAttri);
  AddAttribute(fIdentifierAttri);
  AddAttribute(fKeyAttri);
  AddAttribute(fSpaceAttri);
  SetAttributesOnChange(DefHighlightChange);
  InitIdent;
  MakeMethodTables;
  fDefaultFilter := 'All files (*.*)|*.*';
  fRange := rsUnknown;
end;

procedure TmwSampleSyn.SetLine(NewValue: String; LineNumber: Integer);
begin
  fLine := PChar(NewValue);
  Run := 0;
  fLineNumber := LineNumber;
  Next;
end;

procedure TmwSampleSyn.IdentProc;
begin
  fTokenID := IdentKind((fLine + Run));
  inc(Run, fStringLen);
  while Identifiers[fLine[Run]] do inc(Run);
end;

procedure TmwSampleSyn.NullProc;
begin
  fTokenID := tkNull;
end;

procedure TmwSampleSyn.SlashProc;
begin
  Inc(Run);
  if fLine[Run] = '/' then
  begin
    fTokenID := tkComment;
    repeat
      Inc(Run);
    until fLine[Run] in [#0, #10, #13];
  end else
    fTokenID := tkUnknown;
end;

procedure TmwSampleSyn.SpaceProc;
begin
  fTokenID := tkSpace;
  repeat
    inc(Run);
  until not (fLine[Run] in [#1..#32]);
end;

procedure TmwSampleSyn.UnknownProc;
begin
  inc(Run);
  fTokenID := tkUnknown;
end;

procedure TmwSampleSyn.Next;
begin
  fTokenPos := Run;
  fProcTable[fLine[Run]];
end;

function TmwSampleSyn.GetEOL: Boolean;
begin
  Result := fTokenID = tkNull;
end;

function TmwSampleSyn.GetRange: Pointer;
begin
  Result := Pointer(fRange);
end;

function TmwSampleSyn.GetToken: String;
var
  Len: LongInt;
begin
  Len := Run - fTokenPos;
  SetString(Result, (FLine + fTokenPos), Len);
end;

function TmwSampleSyn.GetTokenID: TtkTokenKind;
begin
  Result := fTokenId;
end;

function TmwSampleSyn.GetTokenAttribute: TmwHighLightAttributes;
begin
  case GetTokenID of
    tkComment: Result := fCommentAttri;
    tkIdentifier: Result := fIdentifierAttri;
    tkKey: Result := fKeyAttri;
    tkSpace: Result := fSpaceAttri;
    tkUnknown: Result := fIdentifierAttri;
    else Result := nil;
  end;
end;

function TmwSampleSyn.GetTokenKind: integer;
begin
  Result := Ord(fTokenId);
end;

function TmwSampleSyn.GetTokenPos: Integer;
begin
  Result := fTokenPos;
end;

procedure TmwSampleSyn.ReSetRange;
begin
  fRange := rsUnknown;
end;

procedure TmwSampleSyn.SetRange(Value: Pointer);
begin
  fRange := TRangeState(Value);
end;

function TmwSampleSyn.GetIdentChars: TIdentChars;
begin
  Result := ['_', '0'..'9', 'a'..'z', 'A'..'Z'];
end;

function TmwSampleSyn.GetLanguageName: string;
begin
  Result := 'Sample';
end;

function TmwSampleSyn.GetCapability: THighlighterCapability;
begin
  Result := inherited GetCapability + [hcUserSettings, hcExportable];
end;

procedure TmwSampleSyn.SetLineForExport(NewValue: String);
begin
  fLine := PChar(NewValue);
  Run := 0;
  ExportNext;
end;

procedure TmwSampleSyn.ExportNext;
begin
  fTokenPos := Run;
  fProcTable[fLine[Run]];
  if Assigned(Exporter) then
    Case GetTokenID of
      tkComment: TmwCustomExport(Exporter).FormatToken(GetToken, fCommentAttri, True, False);
      tkIdentifier: TmwCustomExport(Exporter).FormatToken(GetToken, fIdentifierAttri, False, False);
      tkKey: TmwCustomExport(Exporter).FormatToken(GetToken, fKeyAttri, False, False);
      tkSpace: TmwCustomExport(Exporter).FormatToken(GetToken, fSpaceAttri, False, True);
    end;
end;

Initialization
  MakeIdentTable;
end.

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲卡通动漫在线| 日韩亚洲电影在线| 亚洲综合精品自拍| 欧美性高清videossexo| 天涯成人国产亚洲精品一区av| 欧美色图激情小说| 日韩精品一二区| 精品欧美一区二区在线观看| 国产成人在线观看免费网站| 国产精品区一区二区三区 | 日韩成人免费在线| 欧美一区二区大片| 国产成人精品亚洲777人妖| 国产精品福利一区| 欧美二区三区91| 狠狠色综合日日| 亚洲裸体xxx| 欧美一级欧美三级| 成人黄色网址在线观看| 亚洲一区在线观看免费| 日韩视频免费观看高清完整版| 久草这里只有精品视频| 国产精品久久久久久户外露出| 色爱区综合激月婷婷| 日产欧产美韩系列久久99| 久久久www免费人成精品| 91在线精品一区二区| 秋霞国产午夜精品免费视频| 欧美国产亚洲另类动漫| 91麻豆精品国产自产在线观看一区 | 在线免费视频一区二区| 精品一区二区三区香蕉蜜桃 | 91视视频在线观看入口直接观看www | 6080国产精品一区二区| 国产福利91精品一区二区三区| 亚洲另类春色国产| 久久综合中文字幕| 欧美日韩一区在线| 成人小视频在线| 久久精品国产第一区二区三区| 自拍偷拍欧美激情| 久久综合狠狠综合久久激情 | 精品在线播放免费| 依依成人精品视频| 久久久精品中文字幕麻豆发布| 欧美日韩精品一区二区天天拍小说| 懂色av中文字幕一区二区三区| 日韩国产在线观看一区| 最新中文字幕一区二区三区 | 不卡的av在线播放| 久久99精品久久只有精品| 亚洲精品高清视频在线观看| 国产欧美日韩中文久久| 26uuu欧美| 欧美一区二视频| 欧美日韩中文一区| 91网上在线视频| 国产盗摄精品一区二区三区在线| 视频一区二区三区中文字幕| 亚洲自拍偷拍麻豆| 亚洲欧美自拍偷拍色图| 久久精品视频网| 欧美精品一区二区三区高清aⅴ| 欧美日韩中文字幕精品| 色国产精品一区在线观看| 成人短视频下载| 国产精品一区二区x88av| 久热成人在线视频| 美腿丝袜亚洲三区| 日韩在线卡一卡二| 午夜精品在线看| 亚洲一区二区三区四区的| 亚洲欧美日韩国产一区二区三区| 中文av一区二区| 国产精品进线69影院| 国产精品伦一区二区三级视频| 欧美韩日一区二区三区四区| 久久精品男人天堂av| 国产亲近乱来精品视频| 国产日韩亚洲欧美综合| 国产精品美女久久久久高潮| 亚洲国产精品黑人久久久| 国产欧美一区二区在线| 久久精品一区蜜桃臀影院| 国产欧美日韩在线| 国产精品久久久久毛片软件| 自拍偷拍欧美激情| 亚洲国产日产av| 秋霞午夜鲁丝一区二区老狼| 久久av资源网| 成人午夜av在线| 91视频一区二区三区| 欧美日韩国产高清一区| 欧美一区二区三区免费| 久久精品综合网| 中文字幕一区二区三区在线观看| 亚洲免费观看高清在线观看| 亚洲影院理伦片| 日本不卡视频在线观看| 国产精品 欧美精品| 本田岬高潮一区二区三区| 欧美亚洲一区二区在线观看| 777午夜精品视频在线播放| 精品国内二区三区| 成人免费视频在线观看| 日本伊人精品一区二区三区观看方式| 麻豆成人综合网| 成人福利视频在线| 91精品一区二区三区久久久久久| 日韩欧美一区在线| 中文字幕 久热精品 视频在线| 亚洲精品日韩综合观看成人91| 免费欧美日韩国产三级电影| 国产成人av电影在线播放| 色婷婷av一区二区三区之一色屋| 在线不卡一区二区| 国产精品天美传媒| 亚洲国产日韩精品| 高清视频一区二区| 欧美日产在线观看| 国产精品视频第一区| 天天综合色天天综合| 成人午夜激情视频| 日韩三级免费观看| 亚洲美女视频在线| 国产麻豆欧美日韩一区| 日本韩国欧美一区二区三区| 精品嫩草影院久久| 亚洲黄色片在线观看| 国产精品夜夜嗨| 欧美片在线播放| 亚洲日穴在线视频| 久久99精品国产麻豆不卡| 91久久精品一区二区二区| 久久久一区二区三区捆绑**| 亚洲成人自拍一区| 99久久久久免费精品国产| 久久综合五月天婷婷伊人| 亚洲成人av资源| 91美女视频网站| 国产精品国产三级国产aⅴ无密码| 捆绑紧缚一区二区三区视频| 99久久99精品久久久久久| 欧美mv日韩mv国产网站app| 亚洲444eee在线观看| 成人高清视频在线| 久久久久久久久久看片| 美国毛片一区二区三区| 欧美午夜一区二区| 中文字幕亚洲欧美在线不卡| 国产乱码精品一品二品| 日韩欧美一卡二卡| 日韩电影在线看| 欧美日韩国产综合一区二区三区 | 亚洲欧美另类久久久精品2019| 国产精品自拍三区| 精品久久一区二区三区| 麻豆成人免费电影| 56国语精品自产拍在线观看| 午夜精品一区二区三区三上悠亚| 色一区在线观看| 亚洲美女视频在线| 日本精品一级二级| 亚洲乱码日产精品bd| 99久久精品一区二区| 亚洲视频免费观看| 97se亚洲国产综合自在线观| 最好看的中文字幕久久| av亚洲精华国产精华| 国产精品丝袜久久久久久app| 国产成人av电影在线观看| 久久久久久电影| 国产精品资源站在线| 国产女主播在线一区二区| 丰满亚洲少妇av| 亚洲同性同志一二三专区| 99re这里只有精品视频首页| 亚洲三级免费观看| 欧美伊人久久久久久久久影院| 亚洲成人激情av| 欧美成人a∨高清免费观看| 国产一区二区三区蝌蚪| 日韩精品高清不卡| 欧美在线视频全部完| 性欧美疯狂xxxxbbbb| 日韩女优电影在线观看| 国产乱一区二区| 欧美国产1区2区| 日本二三区不卡| 人人狠狠综合久久亚洲| 久久久.com| 99精品视频在线免费观看| 亚洲大片一区二区三区| 精品国产成人在线影院| 国产宾馆实践打屁股91| 亚洲一区日韩精品中文字幕| 欧美一区二区三区在线看| 懂色av噜噜一区二区三区av| 亚洲精品va在线观看| 91精品午夜视频|