日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Delphi 关键字详解

發(fā)布時間:2025/3/21 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Delphi 关键字详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨角獸企業(yè)重金招聘Python工程師標準>>>

absolute
//它使得你能夠創(chuàng)建一個新變量, 并且該變量的起始地址與另一個變量相同.
var
? Str: string[32];
? StrLen: Byte absolute Str;

//這個聲明指定了變量StrLen起始地址與Str相同.
//由于字符串的第0個位置保存了字符串的長度, 所以StrLen的值即字符串長度.
begin
? Str := 'abc';
? Edit1.Text := IntToStr(StrLen);
end;

abstract
//它允許你創(chuàng)建抽象的方法, 包括有抽象方法的類稱為抽象類.
//Abstract關(guān)鍵字必須與Virtual或Dynamic關(guān)鍵字同時使用, 因為抽象方法必須被覆蓋式實現(xiàn).
//抽象類不能實例化, 抽象方法不能包含方法體.
type
? TDemo = class
??? private
??? protected
????? procedure X; virtual; abstract;
??? public
????? constructor Create;
????? destructor Destroy; override;
??? published
? end;

and
//一、表示邏輯與
if (a>0) and (b>0) then

//二、表示位運算
var
? a,b,c: Integer;
begin
? c := (a and b);
end;

//使用And表示邏輯時, And左右的表達式必須用小括號括起, 以避免以生條件的沖突.
//例如:
if a>0 and b>0 then
//編譯器可能會理解為:
if a>(0 and b)>0 then
//或:
if (a>0) and (b>0) then
//但是實際編譯時, 編譯器會產(chǎn)生一個沖突, 報告錯誤.
//并且第一種可能包含了a>b>c的形式, 這在Delphi中不被支持.
//所以使用And運算符時必須使用括號, 以區(qū)分左右的條件.
//表示位運算時也必須加上括號, 將And以及左右參數(shù)括起.

array
//Array用于表示數(shù)組, 任何的對象都能被聲明成數(shù)組.數(shù)組分為靜態(tài)和動態(tài)的2種.

//靜態(tài)數(shù)組
var
? Arr1: array [1..10] of Integer;

//動態(tài)數(shù)組, 由于聲明時不知其元素個數(shù), 所以必須在后期用SetLength方法設(shè)置數(shù)組的大小
var
? Arr2: array of Integer;

//數(shù)組作為參數(shù)時, 不能傳入數(shù)組的大小, 只能傳入數(shù)組名, 然后用Length方法獲取數(shù)組的元素個數(shù)
function X(A: array of Integer): Integer;
var
i: Integer;
begin
? Result := 0;
? for i := 0 to Length(A)-1 do
? Result := Result + A[i];
end;

as
//As用于將一個對象轉(zhuǎn)換為另一個對象
procedure BtnClick(Sender:TObject);
begin
? (Sender as TButton).Caption := 'Clicked';
end;

//對于對象填充接口的轉(zhuǎn)換, 必須用As進行
(HTTPRIO as IExp).GetConnection;

//As不能用于數(shù)據(jù)類型的轉(zhuǎn)換, 下面的代碼是錯誤的:
var
? i: Integer;
? s: string;
begin
? s := (i as string);
end;
//正確寫法是:
s := string(i);

asm
//Asm關(guān)鍵字用于插入?yún)R編代碼, 使用匯編代碼時, 必須使用asm...end;的結(jié)構(gòu), 而非begin...end;
function IntToHex(Value: Integer; Digits: Integer): string;
asm
? CMP? EDX, 32
? JBE? @A1
? xor? EDX, EDX
? @A1: PUSH ESI
? MOV? ESI, ESP
? SUB? ESP, 32
? PUSH ECX
? MOV? ECX, 16
? CALL CvtInt
? MOV? EDX, ESI
? POP? EAX
? CALL System.@LStrFromPCharLen
? ADD? ESP, 32
? POP? ESI
end;

assembler
//Assembler關(guān)鍵字用于支持早期的匯編, 如80386等.
//它和Asm的區(qū)別:Asm允許使用Win32匯編, 而Assembler只允許80x86匯編, 它不允許Invoke語句的出現(xiàn).
function IntToHex(AValue: Int64): string; assembler;

automated
//Automated訪問區(qū)分符用于描述一個自動類型的成員, 它能夠使程序的版本向下兼容.
//ComObj單元內(nèi)的成員及其實例不能使用Automated訪問區(qū)分符.
type
? TDemo = class
??? automated
????? Str:WideString;
? end;

//在程序的下一個版本中, 將Str做了修改, 變成
type
? TDemo = class
??? automated
????? Str: AnsiString;
? end
//則新版本的Str變量能夠接受舊版本的WideString型數(shù)據(jù), 并自動轉(zhuǎn)換成AnsiString.
//在實際開發(fā)中, 如果沒有特殊的需要, 一般不用automated訪問區(qū)分符.

begin
//begin關(guān)鍵字用于表示一段程序或一個結(jié)構(gòu)的開始, 必須用end關(guān)鍵字來結(jié)束.
procedure X;
begin
? ShowMessage('A Demo');
end;

//一般的結(jié)構(gòu), 如If, For, While等也需要用begin關(guān)鍵字來標出結(jié)構(gòu)起始點
for i:=1 to 100 do
begin
? sum := sum + i;
? if sum > 1000 then Break;
end;

case
//Case語句用于完成條件選擇, Case語句的的被選擇對象必須是有序類型, 包括整型, 枚舉類型, 字符型等.
//Case語句必須由end結(jié)束,如果沒有相符合的選擇項, 可以加入else來作出通用選擇.
function GetDays(AYear,AMonth: Integer): Integer;
begin
? case AMonth of
??? 1,3,5,7,8,10,12: Result := 31;
??? 4,6,9,11: Result := 30;
??? 2: begin
??? if IsLeapYear(AYear) then
????? Result:=29
??? else
????? Result:=28;
??? end;
? else
??? Result:=0;
end;

?

?

cdecl
//Cdecl是函數(shù)調(diào)用協(xié)定的一種, 它規(guī)定了從C或C++編寫的DLL中調(diào)用函數(shù)所必須遵守的規(guī)則.
//它可以將C或C++中的數(shù)據(jù)類型轉(zhuǎn)換為Delphi的.
//例如C++中的代碼:
int X(int i)
{
? return i*2;
}

//這個函數(shù)被編譯在Demo.dll中, 用Delphi調(diào)用時必須使用:
function X(i: Integer): Integer; Cdecl; external 'Demo.dll';

class
//Class關(guān)鍵字用于聲明或繼承一個類, 也可以使類和接口同時繼承.
//另外, Class關(guān)鍵字也能用于聲明類通用方法, 使得父類可以從類內(nèi)訪問子類的方法.
type
? ClassDemo = class(TObject)
??? private
??? public
????? constructor Create;
? end;

//如果用class聲明方法, 則該方法在類與相關(guān)類中都可以使用, 譬如:
type
? ClassA = class
??? private
??? public
????? procedure Y;
? end;

type
? ClassB = class(ClassA)
??? private
??? public
????? class procedure X;
? end;
//則在使用時ClassA能夠直接訪問ClassB的X方法
procedure ClassA.Y;
begin
? Self.X;
end;
//此時父類將子類的class方法作為自身的方法進行調(diào)用.

?

?

const
//Const關(guān)鍵字用于聲明常量, 使用const聲明的數(shù)據(jù)將不能在程序中被改變.
//也可以用來聲明函數(shù)參數(shù), 用const指定的參數(shù)不允許在函數(shù)中改變.
const MyFileName = 'Delphi';
const MyInteger = 100;

//用Const聲明常量不需要指出其數(shù)據(jù)類型, 系統(tǒng)會自動判斷類型, 并作自動調(diào)整.
//函數(shù)中可以用const聲明不可更改的參數(shù)
function X(const i: Integer): string;
//此時在函數(shù)操作過程中, i的值不可改變.

?

?

constructor
//constructor關(guān)鍵字用來聲明一個類的構(gòu)造函數(shù), 當類被實例化時, 首先調(diào)用此函數(shù)
//構(gòu)造函數(shù)一般用Create表示, Create方法能夠連帶類中存在的CreateWnd方法.
type
? ClassDemo = class(TObject)
??? private
????? fValue: Integer;
??? public
????? constructor Create;
? end;

constructor ClassDemo.Create;
begin
? fValue := 0;
end;

?

?

contains
//Contains關(guān)鍵字指出了某個包(Package)是否包含某個文件.
//用Contains引入的文件必須被添加到包文件中, 它可以避免關(guān)鍵文件的引用丟失.
package DATAX;
? requires
??? rtl, clx;
? contains
??? Db, DBLocal, DBXpress;
end.

?

?

default
//Default關(guān)鍵字用于指出一個屬性的默認值
//只有有序類型的屬性才允許默認值的存在, 否則必須在構(gòu)造函數(shù)中初始化屬性值.
type
? ClassDemo = class
??? private
????? fValue: Integer;
??? published
????? property Value: Integer read fValue write fValue default 0;
? end;

//它也可以指出一個類的默認屬性
property strings[Index: Integer]: string read GetString write PutString; Default;

?

?

destructor
//Destructor用于標識析構(gòu)函數(shù), 析構(gòu)函數(shù)在類被釋放時自動調(diào)用.
//析構(gòu)函數(shù)只允許覆蓋, 再不允許重載.析構(gòu)函數(shù)通常用Destroy作為函數(shù)名.
type
? ClassDemo = class(TComponent)
??? public
????? destructor Destroy;override;
? end;

//由于TComponent類中也有Destroy方法, 所以要將其重寫
//但是若要重載析構(gòu)函數(shù), 則不允許, 下面代碼是錯誤的:
destructor Destroy; overload;

?

?

dispid
//DispId關(guān)鍵字被用在DispInterface接口中, 用于指定特定的適配序號.
//在DispInterface接口中, 適配序號必須是唯一的,
//如果不指定DispId, 則系統(tǒng)會自動分配適配序號給接口內(nèi)每一個方法.
//可以通過適配序號訪問DispInterface接口中的方法.
type
? IStringsDisp = dispinterface
??? ['{EE05DFE2-5549-11D0-9EA9-0020AF3D82DA}']
??? property ControlDefault[Index: Integer]: Olevariant dispid 0; default;
??? function Count: Integer; dispid 1;
??? property Item[Index: Integer]: Olevariant dispid 2;
??? procedure Remove(Index: Integer); dispid 3;
??? procedure Clear; dispid 4;
??? function Add(Item: Olevariant): Integer; dispid 5;
??? function _NewEnum: IUnknown; dispid -4;
? end;

?

?

dispinterface
//DispInterface用于聲明一個特定的適配器接口, 這個適配器能夠接受標準系統(tǒng)接口中傳入傳出的數(shù)據(jù).
//用DispInterface聲明的接口不能被繼承, 只能夠被引用.
//DispInterface中方法只能調(diào)用, 并且必須被動態(tài)綁定.
//可以通過DispId為接口內(nèi)方漢分配適配序號.
//DispInterface僅能用于Windows平臺, 如果在Linux下進行開發(fā), 則此關(guān)鍵字會自動被系統(tǒng)屏蔽.
//通常情況下, 不使用DispInterface.

//實例請參見DispId

?

?

div
//Div用于求兩數(shù)之整數(shù)商.用于Div運算的兩個數(shù)值必須均為整型, 其運算結(jié)果也為整型.
var
? a,b,c:Integer;
begin
? a := 20; b := 3;
? c := a div b; {6}
end;

?

?

do
//Do關(guān)鍵字用于For, While, On, With語句, 構(gòu)成特定的結(jié)構(gòu)

//For語句:
for i := 1 to 100 do sum:=sum+i;

//While語句:
while i < 100 do
begin
 sum := sum + i;
 Inc(i);
end;

//On語句(異常處理):
try
 i := StrToInt(s);
except
 on exception do ShowMessage('Error!');
end;

//With語句:
with Memo1.Lines do
begin
 Clear;
 Append('abc');
 Append('123');
end;

?

?

downto
//DownTo關(guān)鍵字用于For語句, 指明循環(huán)變量是遞減的.
for i := 100 downto 1 do
? ListBox1.Items.Add(IntToStr(i));

//在For語句中, 循環(huán)變量遞增用To關(guān)鍵字, 遞減用DownTo關(guān)鍵字.

?

?

dynamic
//Dynamic用于聲明一個動態(tài)的方法,
//動態(tài)方法可以被覆蓋, 并且可以使代碼大小盡可能的減少(區(qū)別于Virtual).
procedure X(i: Integer); dynamic;

?

?

else
//else用于引導(dǎo)程序的運行方向, 它可以與If, Case和On語句聯(lián)用, 當條件不滿足時, 轉(zhuǎn)到else下運行

//If語句(在If語句中, else前不允許有分號):
if a > b then
? c := a
else
? c:=b;

//Case語句:
case Tag Of
? 1:Result:=1;
? 2:Result:=2;
? 3:Result:=3;
else
? Result:=0;
end;

//On語句(異常處理):
try
? i := StrToInt(s);
Excpet
? on EZeroDivide do Result := 1;
? on EOverflow do Result := 2;
else
? Result := 0;
end;

?

?

end
//End用于結(jié)束一個語句塊或是一個單元.
//它可以與begin, Case, Class, Interface, Asm, Unit, Package等相匹配.
//對于語句塊(局部結(jié)束), End后必須添加分號.
//而對于單元或包(全局結(jié)束), end后必須添加句號.
//在If語句中else關(guān)鍵字前的End后不允許添加符號.
procedure X;
begin
 with Button1 do
 begin
  if Button1.ShowHint then
   Button1.Caption := 'Hinted'
  else
   Button1.Caption := 'Not Hinted';
 end;
end;

//在包內(nèi)使用End來結(jié)束:
package DATAX;
? requires
??? rtl,
??? clx;
? contains Db, DBLocal, DBXpress;
end.

?

?

except
//except關(guān)鍵字用于異常處理, 必須用在try語句內(nèi), 如果發(fā)生異常, 則執(zhí)行except后的語句
try
? i := StrToInt(s);
except
? ShowMessage('Error!');
end;

?

?

export
//Export標明了函數(shù)調(diào)用協(xié)定, 指出函數(shù)可以被輸出, 輸出的函數(shù)能被本地或遠程調(diào)用.
//其他程序可以用dll的形式調(diào)用程序內(nèi)的函數(shù).它是向下兼容的.
function Add(a,b: Integer): Integer; export;

//如果這個程序被編譯為Demo.exe, 并且另一個程序需要調(diào)用這個函數(shù), 可以使用以下語句
function Add(a,b: Integer): Integer; stdcall; external 'Demo.exe';

?

?

exports
//exports用于輸出對象, 它必須被用在接口和實現(xiàn)之間, 可以同時輸出多個項, 項與項之間用逗號分開.
library Demo;

function X(i: Integer): string; stdcall;
begin
 Result:=IntToStr(i);
end;

exports
 X;

begin
end.

//如果輸出的對象被重載, 則必須給對象起個別名, 并注明參數(shù).
library Demo;

function X(i: Integer): string; overload; stdcall;
begin
 Result := IntToStr(i);
end;

function X(s: string): Integer; overload; stdcall;
begin
 Result := StrToInt(s);
end;

exports
? X(i: Integer) name 'x1',
? X(s: string) name 'x2';

begin
end.

?

?

external
//External關(guān)鍵字用于引用一個外部的或是OBJ內(nèi)的方法.
{$L Demo.OBJ}
procedure X(i:Integer);external;

//如果是從dll或外部程序中引用, 則可以使用以下代碼:
function A(FileName: string): string; external 'Demo.dll';

//如果被引用的函數(shù)被重載, 則必須另外指出引用的名稱.
function A(Name: string): string; overload; stdcall; external 'Demo.dll' name 'A1';
function A(Code: Integer): string; overload; stdcall; external 'Demo.dll' name 'A2';

//使用External關(guān)鍵字時, 必須注意大小寫, 否則將出現(xiàn)錯誤.

?

?

far
//Far標明了函數(shù)調(diào)用協(xié)定, 指出函數(shù)可以被遠程調(diào)用.
//其他程序可以用dll的形式調(diào)用程序內(nèi)的函數(shù).它是向下兼容的.
function Add(a,b: Integer): Integer; Far;

//如果這個程序被編譯為Demo.exe, 并且另一個處于其他計算機的程序需要調(diào)用這個函數(shù), 可以使用以下語句:
function Add(a,b: Integer): Integer; stdcall; external 'Demo.exe';

?

?

file
//File關(guān)鍵字指出了文件操作類型, 文件必須被聲明為File,
//如果在File后追加Of和文件類型, 則文件可以被定義為讀寫指定類型數(shù)據(jù).
type
? TPerson = record
??? PName: string[32];
??? PAge: Integer;
? end;
var
? PFile: file of TPerson;

?
finalization
//finalization關(guān)鍵字標識了單元被釋放時所要調(diào)用的方法,
//通常是釋放掉單元中不能自動釋放的對象, 也可以不用.
//finalization最常用的情況是對OLE對象做反初始化.
initialization
? ActiveX.OleInitialize(nil);
finalization
? ActiveX.OleUninitialize;

?

?

finally
//finally關(guān)鍵字指出了異常處理中最后必須要調(diào)用的方法,
//不論是否發(fā)生異常, finally后的語句總是在try語句結(jié)束時執(zhí)行.
try
? Node := Node.GetNext;
? Edit1.Text := Node.Text;
finally
 Node := nil;
end;

?

?

for
//For關(guān)鍵字引出For循環(huán)結(jié)構(gòu), 用于做指定次數(shù)的循環(huán).
for i := 1 to 100 do sum := sum + i;

//如果循環(huán)變量是遞減的, 則可以用DownTo關(guān)鍵字
for i := 100 downto 1 do Inc(sum);

?

?

forward
//Forward關(guān)鍵字用于方法的前置定義.只定義方法聲明, 然后在程序的后面對方法進行實現(xiàn).
//這么做有利于代碼的可讀性, 可以將所有的聲明放在一起, 然后將所有的實現(xiàn)也放在一起.
function X(i: Integer): Integer; forward;
procedure Y(s: string); forward;
...
function X;
begin
? Result := i * 2;
end;

procedure Y;
begin
? WriteLn(s);
end;

//用Forward前置聲明的方法在實現(xiàn)時不需要再輸入方法的參數(shù)和返回值, 直接使用方法名即可.

?

?

function
//Function用于聲明函數(shù)
function X(i: Integer): Integer;

//它也可以用于動態(tài)函數(shù)的聲明
type
 TFun = function(i: Integer): Integer of object;

//動態(tài)聲明時, 不需要指出函數(shù)名, 只需要指出參數(shù)和返回類型就可以, 具體的函數(shù)名可以在后期綁定.

?

?

goto
//Goto語句用在跳轉(zhuǎn)行號, 可以跳轉(zhuǎn)到當前結(jié)構(gòu)層內(nèi)任意位置.
//必須在聲明處用label關(guān)鍵字聲明行號.
//由于Goto語句會破壞程序的結(jié)構(gòu), 不推薦使用.
var
 a,b: Integer;
label
 X,Y;
begin
 if a > b then
  goto X
 else
  goto Y;
X:
 WriteLn('a > b');
Y:
 WriteLn('b > a');
end;

?

?

if
//If關(guān)鍵字引出If條件語句, 用于對條件進行判斷.
var
 a,b: Integer;
begin
 a := 2; b := 3;
 if a>b then
  WriteLn('a=' + IntToStr(a))
 else
  WriteLn('b=' + IntToStr(b));
end;

//If語句的通常結(jié)構(gòu)是If...Then...else, else語句也可以不要.
//在If語句內(nèi)如果有多個子語句, 則必須用begin...End結(jié)構(gòu)進行區(qū)分.
if a > b then
begin
 WriteLn('a>b');
 WriteLn('a=' + IntToStr(a));
 WriteLn('b=' + IntToStr(b));
End
else
 WriteLn('b>a');

?

?

implementation
//Implementation標識了單元中的實現(xiàn)部分, 單元的基本結(jié)構(gòu)為:
//Unit...Interface...implementation...end.
//函數(shù)體, 過程體等必須寫在implementation關(guān)鍵字后.
//如果在implementation后引用對象, 則對象是非公開的, 僅能供單元自身使用.
implementation
? uses frmAbout;
begin
? FormAbout.Show;
end;

//一個完整的單元必須擁有implementation部分.

?

?

implements
//Implements指出了一個屬性從接口繼承, 此時屬性被轉(zhuǎn)換成接口對象.
//通過接口動態(tài)綁定屬性, 并動態(tài)的設(shè)定屬性值.
type
 IMyInterface = interface
  procedure P1;
  procedure P2;
 end;
 TMyImplclass = class
  procedure P1;
  procedure P2;
 end;
 TMyclass = class(TInterfacedObject, IMyInterface)
  FMyImplClass: TMyImplClass;
  property MyImplClass: TMyImplclass read FMyImplclass implements IMyInterface;
  procedure IMyInterface.P1 = MyP1;
  procedure MyP1;
 end;

//通過implements聲明后, 可以在類聲明時指出接口中方法的實體, 如上例中的:
procedure IMyInterface.P1 = MyP1;

?

?

in
//In用于判斷一個集合中是否包含某個元素.被判斷的內(nèi)容必須是單個集合元素和一個集合的實例.
type
 TCol = (cA,cB,cC);
 TCols = set of TCol;
var
 Cols: TCols;
begin
 Cols := [cA,cB];
 if cA in Cols then
  ShowMessage('cA in Cols')
 else
  ShowMessage('cA not in Cols');
end;

//In也用于工程文件中, 用于標識某個文件是否被工程所引用.
Uses
 Unit1 in 'Unit1.pas';

//In可以被用在For語句中, 用于循環(huán)取出一個集合中的元素.
var
 s: string;
 sl: TStringList;
begin
 ...
 for s In sl do
 begin
  ShowMessage(s);
 end;
end;

?

?

index
//Index用于在屬性中標識序號, 以便用相同的屬性方法(Get,Set)對不同的屬性進行操作.
type
 TForm1 = class(TForm)
 private
  function GetInfo(const Index: Integer): Longint;
  procedure SetInfo(const Index: Integer; const Value: Longint);
 public
  property iLeft:Longint index 0 read GetInfo write SetInfo;
  property iTop:Longint index 1 read GetInfo write SetInfo;
  property iWidth:Longint index 2 read GetInfo write SetInfo;
  property iHeight:Longint index 3 read GetInfo write SetInfo;
 end;

function TForm1.GetInfo(const Index: Integer): Longint;
begin
 case Index of
  0: result := self.Left;
  1: Result := self.Top;
  2: result := self.Width;
  3: result := self.Height;
 end;
end;

//Index關(guān)鍵字也用于在屬性中指出多個元素, 例如:
property Selected[Index: Integer]: Boolean read GetSelected write SetSelected;

?

?

inherited
//Inherited用于調(diào)用父類的方法.
type
 TDemo = class(TComponent)
 public
  constructor Create(AOwner: TComponent); override;
 end;

constructor TDemo.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
end;

//如果調(diào)用的是與自身同名的方法, 則也可以省去方法名和參數(shù).如上例中的
inherited Create(AOwner);
//可以改成:
Inherited;

?

?

initialization
//initialization關(guān)鍵字標識了單元被載入時所要調(diào)用的方法,
//通常是初始化一些不能自動初始化的對象, 也可以不用.
//initialization最常用的情況是對OLE對象做初始化.
initialization
? ActiveX.OleInitialize(nil);
finalization
? ActiveX.OleUninitialize;

?

?

inline
//InLine關(guān)鍵字用于Asm或assembler結(jié)構(gòu)中,
//用于指出該匯編語句是向下兼容的.它對于程序的編譯沒有任何影響.
function IntToStr(Value: Integer): string;
asm
 InLine;
? PUSH? ESI
? MOV?? ESI, ESP
? SUB?? ESP, 16
? xor?? ECX, ECX
? PUSH? EDX
? xor?? EDX, EDX
? CALL? CvtInt
? MOV?? EDX, ESI
? POP?? EAX
? CALL? System.@LStrFromPCharLen
? ADD?? ESP, 16
? POP?? ESI
end;

?

?

interface
//Interface標識了單元中的接口部分, 單元的基本結(jié)構(gòu)為:
//Unit...Interface...implementation...end.
//函數(shù), 過程等的聲明必須寫在Interface關(guān)鍵字后.
//如果在Interface后引用對象, 則對象是沒有實例的, 使用時必須被實例化.
Interface
 uses frmAbout;
var
 FAbout: TFormAbout;
begin
 FAbout := TFormAbout.Create(Self);
 FAbout.Show;
end;

//一個完整的單元必須擁有Interface部分.

//Interface也可以用作接口的聲明.
type
 IMalloc = interface(IInterface)
 ['{00000002-0000-0000-C000-000000000046}']
  function Alloc(Size: Integer): Pointer; stdcall;
  function Realloc(P: Pointer; Size: Integer): Pointer; stdcall;
  procedure Free(P: Pointer); stdcall;
  function GetSize(P: Pointer): Integer; stdcall;
  function DidAlloc(P: Pointer): Integer; stdcall;
  procedure HeapMinimize; stdcall;
 end;

?

?

is
//Is關(guān)鍵字用于對象的判斷, 有某些情況下, 也可以作"As"使用.
var
 Comp: TComponent;
begin
? ...
 if Comp Is TEdit then
  (Comp as TEdit).Text := 'Edit';
end;

?

?

label
//label關(guān)鍵字用于聲明行號標簽, 以便用Goto進行轉(zhuǎn)向, 不推薦使用.
var
 a,b: Integer;
label
 X,Y;
begin
 if a > b then
  goto X
 else
  goto Y;
X:
 WriteLn('a>b');
Y:
 WriteLn('b>a');
end;

?
library
//Library關(guān)鍵字用于指出一個工程為類庫.類庫編譯后生成DLL文件, 可被其他程序調(diào)用.
library Editors;
uses EdInit, EdInOut, EdFormat, EdPrint;
exports
? InitEditors,
? doneEditors name done,
? InsertText name Insert,
? DeleteSelection name Delete,
? FormatSelection,
? PrintSelection name Print,
? SetErrorHandler;
begin
? InitLibrary;
end.

?

?

message
//Message關(guān)鍵字用于聲明消息方法,
//帶有Message的方法必須指出接收的消息類型, 并通過引用將消息傳入方法中, 以便進行處理.
procedure Refresh(var Msg: TMessageRecordtype); message ID_REFRESH;

procedure Refresh(var Msg: TMessageRecordtype);
begin
? if Chr(Msg.Code) = #13 then
??? ...
? else
??? inherited;
end;

//用戶可以自定義消息, 自定義消息也能夠被Message接收, 并引發(fā)事件.

?

?

mod
//Mod用于求兩數(shù)之整數(shù)模, 即余數(shù).用于Mod運算的兩個數(shù)值必須均為整型, 其運算結(jié)果也為整型.
var
 a,b,c: Integer;
begin
 a := 20; b := 3;
 c := a mod b; {2}
end;

?

?

name
//Name關(guān)鍵字用于指出方法的別名,
//對于一個要被外部引用的方法, 建議用Name申請方法別名, 以避免外部程序改動方法的實體內(nèi)容.
//從外部引用一個方法時, 如果該方法有別名, 則必須用Name進行標識.
function MessageBox(HWnd: Integer; Text, Caption: PChar; Flags: Integer): Integer;
? stdcall; external 'user32.dll' name 'MessageBoxA';

?

?

near
//Near標明了函數(shù)調(diào)用協(xié)定, 指出函數(shù)可以被本地調(diào)用.
//其他程序可以用dll的形式調(diào)用程序內(nèi)的函數(shù).它是向下兼容的.
function Add(a,b: Integer): Integer; near;

//如果這個程序被編譯為Demo.exe, 并且另一個處于本地的程序需要調(diào)用這個函數(shù), 可以使用以下語句:
function Add(a,b: Integer): Integer; stdcall; external 'Demo.exe';

?

?

nil
//Nil用于表示一個空指針, 或是沒有實例的對象.
while Node <> nil do
begin
 ListBox1.Items.Add(Node.Text);
 Node := Node.GetNext;
end;

?

?

nodefault
//NoDefault關(guān)鍵字指出了一個屬性不允許有默認值, 這通常用在繼承中.
type
 TClassA = class
 private
  fValue: Integer;
 published
  property Value: Integer read fValue write fValue default 0;
 end;

 TClassB = class(TClassA)
 published
  property Value:Integer read fValue write fValue nodefault;
 end;

//由上例可知, TClassA中的Value有默認值0,
//TClassB繼承了TClassA, 所以也繼承了其默認值, 在此用NoDefault去掉默認值

?

?

not
//Not用于取反, 它否定了原先的結(jié)果.例如:
if a > b then
//可以寫成:
if not(a < b) then

//Not關(guān)鍵字通常用于切換Boolean型的屬性
procedure Button1Click(Sender: TObject);
begin
 StatusBar1.Visible := not StatusBar1.Visible;
end;

?

?

object
//Object用于聲明一個對象, 這個對象可以是任意的, 并且向下兼容.Object只能被Object所繼承.
//聲明對象的方法與聲明類的方法是相同的.
type
 ODemoA = object
 end;

 ODemoB = object(ODemoA)
 end;

//Object關(guān)鍵字還用于聲明動態(tài)函數(shù)或過程, 例如:
type
 TMyFun = function(i: Integer): Integer of Object;
 TMyProc = procedure(s: string) of object;

//經(jīng)過object聲明的函數(shù)或過程可以被動態(tài)的綁定到指定的函數(shù)體, 或是綁定到控件是事件中.

?

?

of
//Of關(guān)鍵用于和其他關(guān)鍵字構(gòu)成指定的結(jié)構(gòu).Of可以與Case, Class, Array, File, Set, Object連用.

//Case語句:
case Tag Of
 0: Result := 'a';
 1: Result := 'b';
end;

//Class語句:
type
 TDemo = class of TComponent;

//Array結(jié)構(gòu):
var
 MyInt: array of Integer;

//File結(jié)構(gòu):
var
 MyFile: file of Byte;

//Set語句:
type
 TCol = (cA,cB,cC);
 TCols = set of TCol;

//Object結(jié)構(gòu):
type
 MyFun = function(I: Integer): Integer of Object;

?

?

on
//On關(guān)鍵字用于異常處理, 指出發(fā)生的異常, 并獲取異常信息.
try
 i := StrToInt(s);
except
 on E: exception do
  ShowMessage(E.Message);
end;

?

?

or
//一、表示邏輯或
if (a>0) or (b>0) then

//二、表示位運算
var
? a,b,c: Integer;
begin
? c := (a or b);
end;

//使用Or表示邏輯時, Or左右的表達式必須用小括號括起, 以避免以生條件的沖突
//如果在條件語句中使用 Or, 則編輯器不知道用戶使用Or做什么
例如:
if a>0 or b>0 then
//編譯器可能會理解為:
if a>(0 or b)>0 then
//或者
if (a>0) or (b>0) then
//但是實際編譯時, 編譯器會產(chǎn)生一個沖突, 報告錯誤
//并且第一種可能包含了a>b>c的形式, 這在Delphi中不被支持
//所以使用Or運算符時必須使用括號, 以區(qū)分左右的條件.
//表示位運算時也必須加上括號, 將Or以及左右參數(shù)括起.

?

?

out
//Out關(guān)鍵字說明了方法參數(shù)的輸出方式, 一般的函數(shù)只能有一個返回值,
//使用Out可以在一個函數(shù)中返回多個結(jié)果.
//Out和var不同, Out是以返回值的形式進行參數(shù)返回, 而var是直接輸入一個參數(shù)的地址.
procedure X(out i: Integer; out s: string);
begin
 i := i * 2;
 s := s + 'abc';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 i: Integer;
 s: string;
begin
 i := 20;
 s := 'xxx';
 X(i,s);
end;

?

?

overload
//Overload關(guān)鍵字指出了用于重載的方法, 重載即方法名相同,
//但是參數(shù)數(shù)量, 類型或順序不同, 滿足此條件的構(gòu)成重載.
function X(i: Integer): string; overload;
function X(s: string): string; overload;

//從父類繼承時, 如果子類擁有和父類相同的方法, 則也必須用overload構(gòu)成重載,
//但是此類重載也必須滿足重載的要求.
type
 TDemo = class(TComponent)
 public
  procedure CreateWnd(AOwner: TWinControl); overload;
 end;

//如上例, 子類擁有的方法為:
procedure CreateWnd; {繼承自父類}
procedure CreateWnd(AOwner: TWinControl); {子類聲明}
//共兩個CreateWnd方法.

//如果不使用重載, 則在子類中可以覆蓋父類的方法.

?

?

override
//Override用于覆蓋一個Virtual或是Dynamic形式的方法.
//覆蓋時必須沿用被覆蓋方法的聲明, 并且不允許修改原方法的參數(shù)和返回類型.
procedure Create(AOwner: TComponent); override;

//Override多用于繼承, 用子類覆蓋掉父類的方法.
type
 TClassA = class
  procedure X; virtual;
 end;

 TClassB = class(TClassA)
  procedure X; override;
 end;

//如上例, 子類擁有的方法為:
procedure X; {從父類覆蓋}
//父類擁有的方法為:
procedure X; {父類自身方法, 未被覆蓋}

//如果父類的方法未用Virtual或Dynamic聲明,
//或是有修改參數(shù)的需要, 則必須用Reintroduce關(guān)鍵字進行覆蓋.

?

?

package
//Package關(guān)鍵字用于指出一個工程為控件庫.
//控件庫編譯后生成BPL文件, 可被安裝到Delphi的控件庫中, 從而在以后的開發(fā)中使用控件.
package DATAX;
? requires
??? rtl,
??? clx;
? contains
??? MyUnit in 'C:\MyProject\MyUnit.pas';
end.

?

?

packed
//Packed關(guān)鍵字用于對結(jié)構(gòu)體記錄或數(shù)組進行打包, 打包后被打包對象的體積能顯著減小.
type
 TPerson = packed Record
  PName: string[32];
  PAge: Integer;
 end;
 MyArray: packed array of PChar;

?

?

pascal
//Pascal標明了函數(shù)調(diào)用協(xié)定,
//指出函數(shù)在調(diào)用時遵循Pascal原因, 即先對所有的變量進行初始化,
//避免因異步線程調(diào)用而產(chǎn)生的錯誤.它是向下兼容的.
function X(i: Integer): Integer; Pascal;
begin
 Result := i * 2;
end;

?

?

private
//Private標明了類內(nèi)元素的訪問區(qū)分權(quán)限, 被Private區(qū)分的元素只能被本類內(nèi)部訪問.

?

?

procedure
//Procedure用于聲明過程
procedure X(i: Integer);

//它也可以用于動態(tài)函數(shù)的聲明
type
 TProc = procedure(i: Integer) of object;

//動態(tài)聲明時, 不需要指出過程名, 只需要指出參數(shù)就可以, 具體的過程名可以在后期綁定.

?

?

program
//Program關(guān)鍵字用于指出一個工程為應(yīng)用程序.控件庫編譯后生成exe文件, 可以直接執(zhí)行
program Project1;
uses
? Forms,
? Unit1 in 'Unit1.pas' ;
{$R *.res}
begin
? Application.Initialize;
? Application.CreateForm(TForm1, Form1);
? Application.Run;
end.

?

?

property
//Property關(guān)鍵字用于聲明屬性, 屬性分為顯式屬性和隱式屬性兩種,
//只有聲明在published訪問區(qū)分符下的屬性才是顯式屬性, 可以直接在對象查看器中查看.
type
 TDemo = class
 Private
  fValue: Integr;
 Published
  property Value: Integer read fValue write fValue;
 end;

//事件也是屬性的一種, 可以在published區(qū)分符下用Property進行聲明
type
 TOnTextChange=procedure (Sender: TObject) of object;
 TDemo = class
 private
  fEvent: TOnTexChange;
 published
  property OntextChange: TOnTextChange read fEvent write fEvent;
 end;

?

?

protected
//Protected標明了類內(nèi)元素的訪問區(qū)分權(quán)限, 被Protected區(qū)分的元素只能被本類內(nèi)部和其子類訪問.

?

?

public
//Public標明了類內(nèi)元素的訪問區(qū)分權(quán)限, 被Public區(qū)分的元素能夠被類內(nèi)和類外任何對象訪問.

?

?

published
//Published標明了類內(nèi)元素的訪問區(qū)分權(quán)限.
//被Published區(qū)分的元素能夠被類內(nèi)和類外任何RTTI對象訪問
//只在聲明在Published區(qū)分符下的屬性才能夠成為顯式屬性并在對象查看器中顯示.

?

?

raise
//Raise語句用于拋出異常,
//如果希望通過外部程序處理異常, 或是在異常發(fā)生時重新將異常拋出, 可以使用Raise語句.
function GetString(i: Integer): string;
begin
 if i < 0 then
  raise exception.Create('Integer Cannot smaller than 0');
 Result := IntToStr(i);
end;

//在異常處理中, 可以重新拋出異常
try
 i := StrToInt(s);
except
 on E: exception do
  raise exception.Create(E.Message);
end;

?

?

read
//Read用于標識屬性中讀取所使用的成員或方法.
private
 fValue: Integer;
published
 property Value: Integer read fValue;

//上例中即表明Value屬性的值從fValue成員上讀取.

?

?

readonly
//ReadOnly關(guān)鍵字用于標識一個對象是否只讀.
property ReadOnly;

//當ReadOnly設(shè)為True時, 不允許用戶手動修改屬性, 只能通過其他對象來操作.

?

?

record
//Record關(guān)鍵字用于聲明一個結(jié)構(gòu)體記錄,
//一個結(jié)構(gòu)體可以視為一個不需要實例化的對象, 擁有自己的成員.
type
 TPerson = record
  PName: string[32];
  PAge: Integer;
 end;

?

?

register
//Register標明了函數(shù)調(diào)用協(xié)定, 指出函數(shù)在被調(diào)用時可以在注冊表內(nèi)留下記錄.它是向下兼容的.
function Add(a,b: Integer): Integer; Register; Register

//關(guān)鍵字還用于向控件庫或是IDE注冊控件或是專家工具.
procedure Register;
begin
 RegisterComponents('Sample', [TDemo]);
end;

?

?

reintroduce
//Reintroduce用于重新發(fā)布方法, 通常用于繼承時,
//如果要覆蓋的方法是靜態(tài)方法, 或是需要修改方法的參數(shù)等, 必須用Reintroduce進行重發(fā)布.
//對于Virtual或Dynamic方法, 可以直接用Override進行覆蓋.
type
 TClassA = class
  procedure X;
 end;
 TClassB = class(TClassA)
  procedure X; reintroduce;
 end;
 TClassC = class(TClassB)
  procedure X(i: Integer); reintroduce;
 end;

?

?

repeat
//repeat關(guān)鍵字用于引出repeat循環(huán)結(jié)構(gòu),
//該循環(huán)必須先執(zhí)行一次循環(huán)體, 然后再對循環(huán)條件進行判斷.repeat必須與Until關(guān)鍵字聯(lián)合使用.
i := 0;
repeat
 sum := sum + i;
 Inc(i);
until(i >= 100);

?
requires
//Requires關(guān)鍵字指出了編譯Package時的必備條件.若Requires的條件未滿足, 則不允許編譯包.
package DATAX;
? requires
??? rtl,
??? clx;
end.

?

?

resourcestring
//ResourceString用于聲明資源字符串, 資源字符串可以在被聲明的結(jié)構(gòu)內(nèi)使用.
ResourceString
 CreateError = 'Cannot create file %s';
 OpenError = 'Cannot open file %s';
 LineTooLong = 'Line too long';
 ProductName = 'Borland Rocks';
 SomeResourceString = SomeTrueConstant;

?

?

safecall
//Safecall是函數(shù)調(diào)用協(xié)定的一種, 它規(guī)定了被COM調(diào)用的函數(shù)所必須遵守和規(guī)則.
//在編譯時, Safecall聲明的函數(shù)被編譯成COM接口兼容的.
procedure X(s: WideString); safecall;

//在編譯后成為:
procedure X(s: PAnsiString);

?

?

set
//Set關(guān)鍵字用于聲明集合類, 集合類允許用集合運算符, 如in等進行操作.
type
 TCol = (cA,cB,cC);
 TCols = set of TCol;

//操作時允許使用加減符號來添加或刪除某個集合元素
var
 Cols: Tcols;
begin
 Cols := Cols + [cA,cB];
end;

?

?

shl
//SHL表示向左移位, 左移的位數(shù)即乘以2的冪數(shù)
var
 x: Integer;
begin
 X := 2 shl 3; {16}
end;

?

?

shr
//SHR表示向右移位, 右移的位數(shù)即除以2的冪數(shù)
var
 x: Integer;
begin
 X := 16 shr 2; {4}
end;

?

?

stdcall
//Stdcall是函數(shù)調(diào)用協(xié)定的一種, 它規(guī)定了能讓程序調(diào)用的函數(shù)所應(yīng)遵守的規(guī)則.
//Stdcall關(guān)鍵字必須在主調(diào)方和被調(diào)方之間形成配對.

//例如, 被調(diào)方函數(shù):
Library Demo;
function X(i: Integer): Integer; stdcall;
begin
 Result := i * 2;
end;
exports
 X;
begin
end.

//主調(diào)方函數(shù):
function X(i: Integer): Integer; stdcall; external 'Demo.dll';

//同時需要注意, 使用Stdcall關(guān)鍵字時, 被調(diào)函數(shù)是大小寫敏感的, 此處極容易出錯.

?

?

stored
//Stored用于指出一個屬性的值是否能被保留, 若指定了True, 則允許對屬性值進行賦值撤銷的操作.
property Value: string read fValue write fValue stored True;

?

?

string
//String是一個數(shù)據(jù)類型, 它代表了字符串.
var
 Str: string;

?

?

then
//Then關(guān)鍵字用于If語句中, 當If條件成立時, 執(zhí)行Then后的語句.
var
 a,b: Integer;
begin
 if a > b then
  WriteLn('a')
 else
  WriteLn('b');
end;

?

?

threadvar
//Threadvar標識了一個隨線程啟動而創(chuàng)建的變量,
//如果用Threadvar聲明變量, 則在程序結(jié)束前必須手動釋放其占用的空間.
threadvar S: AnsiString;
S := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
S := '';

//S := ''; 即釋放變量S所占用的內(nèi)存.

?

?

to
//To關(guān)鍵字用于For語句, 指明循環(huán)變量是遞增的.
for i := 10 to 100 do
 ListBox1.Items.Add(IntToStr(i));

//在For語句中, 循環(huán)變量遞增用To關(guān)鍵字, 遞減用DownTo關(guān)鍵字.

?

?

try
//try語句用于異常處理, 對于有可能發(fā)生異常的語句, 可以放在try結(jié)構(gòu)下, 以便對其進行異常保護.
try
 i := StrToInt(s);
except
 ShowMessage('Error');
end;

?

?

type
//Type關(guān)鍵字用于聲明各種對象, 用Type關(guān)鍵字聲明的對象, 在傳遞時按引用傳遞.
type
 TDemo = class
 end;

//type也用來聲明枚舉類型或是按引用傳遞的變量.
type
 TCol = (cA,cB,cC);
 TInt = Integer;

?

?

unit
//Unit標識了單元的開頭, 單元的基本結(jié)構(gòu)為 Unit...Interface...implementation...end.
Unit Unit1;
Interface
 uses Classes;
implementation
end.

//一個完整的單元必須擁有Unit作為開頭.

?

?

until
//Until關(guān)鍵字用于判斷repeat循環(huán)結(jié)構(gòu)的循環(huán)條件,
//如果循環(huán)條件為真, 則退出循環(huán).Until必須與repeat關(guān)鍵字聯(lián)合使用.
i := 0;
repeat
 sum := sum + i;
 Inc(i);
until(i >= 100);

?

?

uses
//Uses用于引用一個外部的單元, 并且能夠使用該單元中的公共部分.
//Uses語句通常放在一個單元的接口或是實現(xiàn)部分.
Interface
 uses Classes;
Implemention
 uses frmAbout;

?

?

var
//var關(guān)鍵字用于聲明一個變量或是對象, 用var聲明的變量接值傳遞.
var
 i: Integer;
 s: string;

//var也可以用于標識按引用傳遞的方法參數(shù)
function X(var i: Integer): Integer;

//上述函數(shù)中的參數(shù)i即按引用傳遞, 它的值可以在函數(shù)執(zhí)行時被改變, 并返回主調(diào)函數(shù).

?

?

varargs
//varArgs標識了引用參數(shù), 它必須和Cdecl關(guān)鍵字聯(lián)用, 表明允許調(diào)用的函數(shù)使用引用傳遞.
function printf(Format: PChar): Integer; cdecl; varargs;

//上述代碼從C++的類庫中引用了Printf函數(shù), 并允許按引用的方式傳入?yún)?shù).

?

?

virtual
//Virtual用于聲明一個虛方法,
//虛方法可以被覆蓋, 并且可以使程序運行速度盡可能的快(區(qū)別于Dynamic).
procedure X(i: Integer); virtual;

?

?

while
//While關(guān)鍵字用于引出While循環(huán)語句, 循環(huán)前先進行循環(huán)條件的判斷, 如果條件為真則執(zhí)行循環(huán).
i := 0;
while i < 100 do
begin
 sum := sum + i;
 Inc(i);
end;

?

?

with
//With關(guān)鍵字用于將相同的對象集合起來處理, 它可以省去輸入大量重復(fù)的代碼, 使代碼看上去比較精簡.
with Form1.Memo1.Lines do
begin
 Clear;
 Append('abc');
 Append('def');
 SaveToFile('C:\demo.txt');
end;

//上面這段代碼如果不使用With語句, 則顯得非常冗余復(fù)制內(nèi)容到剪貼板代碼:
Form1.Memo1.Lines.Clear;
Form1.Memo1.Lines.Append('abc');
Form1.Memo1.Lines.Append('def');
Form1.Memo1.Lines.SaveToFile('C:\demo.txt');

?

?

write
//Write用于標識屬性中寫入所使用的成員或方法.
private
 fValue: Integer;
published
 property Value: Integer write fValue;

//上例中即表明Value屬性的值寫入到fValue成員上.

?

?

writeonly
//writeonly關(guān)鍵字用于標識一個對象是否只寫.
property writeonly;

//當writeonly設(shè)為True時, 不允許用戶讀取屬性, 只能通過其他對象來操作.

?

?

xor
//Xor用于取異或, 當兩個操作數(shù)相等時, 返回False, 不等時返回True.
var
 a,b: Integer;
begin
 a := 2; b := 3;
 if a xor b then
  WriteLn('a xor b')
 else
  WriteLn('a not xor b');
end;

//Xor也用于計算異或值
WriteLn(IntToStr(3 xor 5)); {6}

轉(zhuǎn)載于:https://my.oschina.net/cookblack/blog/621366

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的Delphi 关键字详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

国产一级二级在线播放 | 亚洲理论在线 | 草在线| 在线观看成人小视频 | 天干啦夜天干天干在线线 | 精品视频在线看 | 在线黄色观看 | 一区二区三区韩国免费中文网站 | 久久在线精品视频 | 亚洲国产成人在线播放 | 99热精品国产一区二区在线观看 | 日韩欧美国产免费播放 | 亚洲高清av | 色婷婷中文| 91手机视频在线 | 国产小视频福利在线 | 亚洲aⅴ免费在线观看 | 9在线观看免费高清完整版 玖玖爱免费视频 | 天天爽网站 | 亚洲精品99| 天天摸天天干天天操天天射 | 久久成人在线 | 午夜免费福利片 | 黄网站色欧美视频 | 狠狠网亚洲精品 | 久久综合综合久久综合 | 国产成人久久精品亚洲 | 久久久久9999亚洲精品 | 天天综合91 | 天天做天天爱天天综合网 | 久久久网页 | 国际精品网 | 欧美日韩免费在线观看视频 | 国产精品久久久久久高潮 | 日韩在线视频免费看 | 人人超在线公开视频 | 激情综合国产 | 国产我不卡 | 婷婷99| 婷婷社区五月天 | 久久精品日产第一区二区三区乱码 | 色久综合 | 国内精品一区二区 | 91视频啪| 免费看片网站91 | 2019中文字幕网站 | 国产又粗又猛又黄视频 | 99精品热视频只有精品10 | 亚洲欧美综合精品久久成人 | 97国产精品一区二区 | 91在线www | 综合久久网站 | 青青久草在线 | 日韩免费b| 久久99视频免费观看 | 国内免费久久久久久久久久久 | 操操操夜夜操 | 日韩欧美视频一区 | 毛片基地黄久久久久久天堂 | 手机在线欧美 | 国产视频2 | 国产精品欧美久久 | 亚洲电影影音先锋 | 久久久久久久久久久免费av | 97免费| 亚洲成人家庭影院 | 久久精品99久久 | 五月婷婷影视 | 天天干夜夜操视频 | 91麻豆文化传媒在线观看 | 狠狠色狠狠色终合网 | 亚洲观看黄色网 | 久久婷婷五月综合色丁香 | 99精品国产一区二区三区不卡 | 亚洲做受高潮欧美裸体 | 午夜黄网 | 日韩视频在线不卡 | 久久免费av电影 | 成人毛片a | 国产精品综合在线观看 | 美女黄久久 | 亚洲一区二区三区四区在线视频 | 国产精品女主播一区二区三区 | 中文字幕在线观看视频网站 | 一级黄色大片 | 成人av中文字幕在线观看 | 亚洲久草在线视频 | 久久久久久久免费观看 | 欧美日韩中文国产 | 国产美女精品视频 | 91在线一区二区 | 丝袜美腿亚洲综合 | 国产不卡在线看 | 国产精品原创 | 久久久视屏 | 四虎8848免费高清在线观看 | 日韩毛片在线播放 | 国产在线精品播放 | a特级毛片 | 国产r级在线观看 | 国产精品一区二区三区视频免费 | 国产精品成人一区 | 精品一区中文字幕 | 国产在线精品播放 | 黄色影院在线播放 | 在线观看麻豆av | 免费av在| 国产精品大片免费观看 | 国产免费不卡av | 99久久er热在这里只有精品66 | 九色91视频 | 射综合网 | 午夜精品福利一区二区三区蜜桃 | 欧美日韩免费观看一区二区三区 | 国产一区观看 | 精品在线播放视频 | 成人h电影在线观看 | 亚洲综合色婷婷 | 日韩精品免费一区二区 | 又爽又黄又无遮挡网站动态图 | 久产久精国产品 | 91麻豆精品国产91久久久使用方法 | 国产一级性生活视频 | 美女网站色免费 | 丝袜美腿亚洲综合 | av成人动漫在线观看 | 一区二区三区四区五区在线 | 日韩国产精品久久 | 国产精品精品久久久久久 | 久久高清免费视频 | 久久亚洲精品国产亚洲老地址 | 久久电影中文字幕视频 | 欧美日韩国产mv | 国产在线免费 | 最近日韩免费视频 | 精品久久久久久久久久久久久久久久久久 | 91少妇精拍在线播放 | 狠狠狠色丁香婷婷综合久久88 | 狠狠狠狠狠狠操 | 国产精品成人一区 | 国产不卡在线视频 | www在线免费观看 | 亚洲精品在线视频 | 欧美在线视频一区二区三区 | 91麻豆国产福利在线观看 | 日韩av男人的天堂 | avsex| 精品自拍网 | 18岁免费看片 | 91av综合 | 日韩精品一区二区三区在线视频 | 综合色婷婷 | 精品免费视频 | 超碰在线最新网址 | 俺要去色综合狠狠 | 五月婷婷狠狠 | 国产中文 | 日韩区欠美精品av视频 | www.色婷婷.com| 成人网在线免费视频 | 九精品| 日本性xxx | 欧美日韩国产伦理 | 成人av一区二区在线观看 | 波多野结衣在线观看一区二区三区 | 国产精品乱码久久 | 久久99久久99久久 | av色图天堂网 | 国产1级视频 | 99久久久国产精品免费观看 | 日韩xxxxxxxxx | 国产91全国探花系列在线播放 | 久久久99精品免费观看乱色 | .国产精品成人自产拍在线观看6 | 激情影院在线观看 | 欧洲精品码一区二区三区免费看 | 狠狠色网 | 日韩av一区在线观看 | 六月丁香婷婷网 | 91麻豆视频 | 一级欧美黄 | 欧美大片大全 | 欧美日韩国产一二三区 | 日本高清中文字幕有码在线 | 91九色蝌蚪国产 | 免费看黄的 | 日韩成人看片 | 在线观看黄色大片 | 精品国产三级 | 成人av网址大全 | 婷婷射五月 | 人人添人人澡人人澡人人人爽 | 黄色毛片在线观看 | 在线观看一区二区精品 | 国产精品成人一区 | 亚洲午夜剧场 | 四虎在线免费观看视频 | 在线免费视| 99热国产在线| 国产成人精品电影久久久 | 欧美精品在线免费 | 美女久久网站 | 99欧美视频 | 国产精品v欧美精品 | 国产在线观看地址 | 亚洲视频分类 | 成人午夜网 | 99精品黄色 | 91欧美视频网站 | 91精品国产91p65 | 久草在线这里只有精品 | 99热最新网址 | 国产一区二区三区免费在线观看 | 日韩精品中文字幕有码 | 久草av在线播放 | 91精品国产综合久久久久久久 | 亚洲天天| 久久大香线蕉app | 天天碰天天操 | 91粉色视频 | 六月色播| 亚洲成人av电影在线 | 99中文字幕 | 久久dvd| 91精品国自产拍天天拍 | 狠狠干我 | 亚洲一级片 | 国产精品99久久久久久人免费 | 在线观看中文字幕dvd播放 | 国产精品久久中文字幕 | 日韩av黄 | 夜夜躁狠狠躁日日躁视频黑人 | 亚洲亚洲精品在线观看 | 精品福利视频在线观看 | 青青看片| 国产中文字幕91 | 久久 国产一区 | 国产精品久久久久久五月尺 | 一级精品视频在线观看宜春院 | 国产日本在线 | 国产成人在线综合 | 中文视频在线播放 | 成人黄色国产 | 日韩专区视频 | 91av亚洲| www黄色软件 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 国产在线观看一 | 精品嫩模福利一区二区蜜臀 | 免费不卡中文字幕视频 | 国产老太婆免费交性大片 | 久久久精品免费观看 | 国产最新福利 | 成人免费在线视频 | 在线观看色视频 | 亚洲精品电影在线 | 久草在线视频首页 | 天天操天天爱天天干 | 国产999精品久久久影片官网 | 亚洲深夜影院 | 99视频播放 | 国产精品1区2区在线观看 | 色香蕉视频 | 一性一交视频 | 国产精品福利小视频 | 丰满少妇久久久 | 亚洲国产一区在线观看 | 欧美激情综合五月色丁香 | 在线综合 亚洲 欧美在线视频 | 麻豆一二三精选视频 | 91桃色在线免费观看 | 亚州五月 | 久久一区二区免费视频 | 操碰av| 在线观看香蕉视频 | 97福利在线 | 成人亚洲综合 | 国产91影视| 国产在线精品一区二区 | 国产精品国产三级国产aⅴ入口 | 亚洲精品成人 | 日韩av在线免费播放 | 91人人揉日日捏人人看 | 夜又临在线观看 | www.午夜色.com | 在线观看一区二区视频 | 免费成人在线观看 | 天天色影院 | 97在线免费| 婷婷六月丁 | 久久美女精品 | 五月天婷亚洲天综合网鲁鲁鲁 | 国产成人av一区二区三区在线观看 | 国产精品成人一区二区 | 在线看片一区 | 久久精品视频18 | 亚洲免费av在线播放 | 久久婷婷影视 | 欧美精品网站 | 天天色草 | 三级在线视频播放 | 国产精品中文字幕在线观看 | 久久国产亚洲精品 | 一区二区三区国产精品 | av电影在线观看完整版一区二区 | 天天操天天摸天天爽 | 国产伦精品一区二区三区… | 欧美日韩性视频在线 | 一区二区三区在线观看中文字幕 | 亚洲精品91天天久久人人 | 国产精品尤物视频 | 久久伊人爱 | 欧美一级在线看 | 精品黄色片 | 一区在线观看 | 国产精品一区二区免费视频 | 四虎国产视频 | 国产人在线成免费视频 | av3级在线 | 欧美激情视频久久 | 精品久久久久国产 | 东方av在 | 91免费日韩| 视频成人免费 | 午夜精品久久久久99热app | 肉色欧美久久久久久久免费看 | 久久er99热精品一区二区三区 | 99精品欧美一区二区蜜桃免费 | 天天操天天添天天吹 | 婷婷在线观看视频 | 亚洲一区美女视频在线观看免费 | 69亚洲乱 | 日韩一区在线免费观看 | 久久免费精品视频 | 在线www色 | 曰韩在线 | 国产精品美女999 | 久久精品成人热国产成 | 日本午夜免费福利视频 | 波多野结衣一区 | 国产香蕉久久精品综合网 | 新版资源中文在线观看 | 99九九99九九九视频精品 | av黄免费看| 伊人首页| 亚洲精品久久激情国产片 | 激情影院在线观看 | 国产小视频免费在线网址 | 91精品国产综合久久婷婷香蕉 | 中文字幕国产一区二区 | 岛国av在线免费 | 尤物九九久久国产精品的分类 | 久久婷婷色综合 | 成人免费在线网 | 国产不卡在线观看视频 | 97色婷婷成人综合在线观看 | 久久精品久久综合 | 欧美性色19p | 亚洲精品视频免费观看 | 日韩二区三区在线 | 99国产在线 | 三级av免费观看 | 麻豆一二三精选视频 | 成人三级视频 | 免费黄a大片 | 中文字幕在线国产 | a级免费观看 | 四虎成人av| 国产日韩在线观看一区 | 日本三级全黄少妇三2023 | 天堂av在线免费观看 | 天天激情综合 | 久久96国产精品久久99漫画 | 欧美成人91 | 91久久丝袜国产露脸动漫 | 99日韩精品 | 99麻豆视频 | www178ccom视频在线 | 天堂av在线中文在线 | 在线免费观看视频一区二区三区 | 天天操狠狠干 | 国产成人一区二区三区免费看 | 日韩精品无码一区二区三区 | 免费看的视频 | 久久免费视频网站 | 中文字幕人成人 | 中日韩在线视频 | 久久免费电影网 | 日本资源中文字幕在线 | 日韩黄色一区 | 久久免费美女视频 | 中文在线免费观看 | 久久99精品久久久久久久久久久久 | 国产成人61精品免费看片 | 国产麻豆精品在线观看 | 日韩欧美视频在线 | 亚洲激情五月 | 婷婷电影在线观看 | 正在播放国产一区二区 | 99热精品免费观看 | 亚洲最新av在线网址 | 亚洲综合视频在线 | 久久精品综合一区 | 高潮久久久久久久久 | 麻豆精品传媒视频 | 日日操夜| 91av视频| 91麻豆网站 | 九九在线国产视频 | 日韩国产欧美视频 | 欧美日韩国产综合一区二区 | 亚洲天堂在线观看完整版 | 国产91影院| 国产无套一区二区三区久久 | 国产黄色特级片 | 91精品国产99久久久久久久 | 亚洲一区二区精品 | 99精品久久久 | 99精品乱码国产在线观看 | 国产xvideos免费视频播放 | 中文字幕免费高清在线观看 | 欧美日韩在线看 | 免费网站在线观看成人 | 国产成人久久精品77777 | 激情五月婷婷网 | 国产精品久久久久影院日本 | 六月丁香久久 | 九九久久电影 | 97色狠狠| 伊人婷婷综合 | 日批在线看 | 国产资源网 | 国产国产人免费人成免费视频 | 97日日碰人人模人人澡分享吧 | 美女视频黄色免费 | 免费福利在线观看 | 国产午夜三级一二三区 | 午夜av电影 | 日韩av福利在线 | 欧美一性一交一乱 | 中文理论片 | 精品伊人久久久 | 国产成人一区二区在线观看 | 99久热在线精品 | 久久精品国产一区二区电影 | av黄在线播放 | 超碰国产人人 | 国产五月天婷婷 | 久久精品导航 | 中文字幕久久亚洲 | 亚洲专区视频在线观看 | 91色国产在线| 91精品婷婷国产综合久久蝌蚪 | 亚洲理论视频 | 精品免费久久 | 日日干网址 | 天天爽人人爽 | 天天综合中文 | 六月丁香在线视频 | 91福利社在线观看 | 在线免费中文字幕 | 天天干,天天射,天天操,天天摸 | 欧美夫妻生活视频 | 成人久久18免费网站 | 久久精品国产亚洲aⅴ | av高清一区二区三区 | 国产亚洲精品久久久久动 | 日韩午夜大片 | 久久精品三级 | 九九视频网站 | 国产成人三级在线播放 | 国产精品一区二区久久国产 | 在线免费视频a | 在线看的av网站 | 亚洲丁香日韩 | 欧美福利片在线观看 | 久久99视频 | 国产打女人屁股调教97 | 精品久久久久久久久久久久久 | 91精品国产高清 | 激情欧美一区二区免费视频 | 午夜精品久久久久久久久久 | 九九久久免费视频 | 国产精品99久久久久久久久久久久 | 国产高清在线观看av | 1024手机基地在线观看 | 三上悠亚在线免费 | 日韩欧美电影网 | 免费福利视频网站 | 天天色.com| 一色屋精品视频在线观看 | 久久久在线免费观看 | 九九交易行官网 | 久久66热这里只有精品 | 综合伊人久久 | 成人污视频在线观看 | 中文字幕久久精品亚洲乱码 | 久久视频这里只有精品 | 色婷婷国产精品 | 色香天天 | 亚洲欧洲精品在线 | 久久tv | 国产一区二区三区四区大秀 | 精品久久久久久亚洲综合网 | 久久国产高清视频 | 日韩有码在线播放 | 国产一区二区视频在线播放 | 4hu视频 | www.888.av| 亚洲精品777 | 国产精品av久久久久久无 | 国语对白少妇爽91 | av免费观看高清 | 91视频链接 | 中文字幕在线视频网站 | 97色婷婷成人综合在线观看 | 特级毛片网站 | 久av在线| 97av视频| 中文字幕色站 | 青青河边草免费视频 | 综合天天 | 日韩av在线网站 | 久久精品男人的天堂 | 成人黄色电影免费观看 | 精品专区 | 国产一在线精品一区在线观看 | 深爱综合网| 五月婷久 | 日韩免费看的电影 | 天天天在线综合网 | 人成午夜视频 | 国产精品一区二区av日韩在线 | 国产精品久久在线 | 免费成人黄色av | 丁香婷婷色综合亚洲电影 | 国产精品欧美久久久久三级 | 国产在线国偷精品产拍免费yy | 西西444www高清大胆 | 欧美日韩三区二区 | 特级西西444www大胆高清无视频 | 福利视频导航网址 | 久久精品www人人爽人人 | 亚洲精品97 | 中文字幕乱视频 | 国产亚洲精品久 | 午夜久久影视 | 日韩在线观看网址 | 欧美日韩一区二区免费在线观看 | 99爱在线 | 成人av动漫在线观看 | 日韩电影久久久 | 2021国产在线 | 久久激情片 | 亚洲欧美日本国产 | 国产精品视频观看 | 六月丁香伊人 | 欧美日韩不卡在线观看 | 色婷五月天 | 日韩大陆欧美高清视频区 | 欧美激情精品 | 欧美日韩一级久久久久久免费看 | 色999视频| 国产精品久久久久久久av电影 | 午夜骚影 | 久草在线播放视频 | 黄色在线观看网站 | 日韩久久午夜一级啪啪 | 日韩免费网址 | 亚洲综合网站在线观看 | 成人黄色在线 | 一区二区中文字幕在线播放 | 久久亚洲精品国产亚洲老地址 | 在线观看视频免费播放 | 久久全国免费视频 | 热久久最新地址 | 在线观看亚洲国产精品 | 久草网站在线观看 | 国产精品综合久久久久 | 国产精品自产拍在线观看 | 久久久久女教师免费一区 | 国产精品不卡一区 | 在线观看av免费 | 欧美精品乱码久久久久久按摩 | www免费视频com | www.99热精品| 国产精品18久久久久久首页狼 | 青青河边草观看完整版高清 | 日本中文乱码卡一卡二新区 | 成人在线免费观看视视频 | 国产午夜麻豆影院在线观看 | 久久婷婷丁香 | 亚洲激情在线 | 国产高清精品在线 | 成人免费视频在线观看 | 久久激情五月婷婷 | 国产偷国产偷亚洲清高 | 久久精品视频网站 | 色多多在线观看 | 操夜夜操 | 日本电影久久 | 97国产电影 | 久久 一区 | 在线亚洲人成电影网站色www | 国产在线999 | 国产免费一区二区三区最新6 | 国产成人福利在线观看 | 中文字幕字幕中文 | www.超碰97.com | 欧美一级免费 | 国产亚州精品视频 | 一级黄色在线免费观看 | 日韩三级视频在线观看 | 日韩欧美一区二区三区免费观看 | 国产高清网站 | 97精产国品一二三产区在线 | 天天射天天操天天 | 中文字幕有码在线播放 | 精品极品在线 | 亚洲一级片 | 国产99自拍 | 免费电影一区二区三区 | 又长又大又黑又粗欧美 | 日本女人b | 精品久久久久久久久久久久 | 国产在线观看地址 | 免费亚洲黄色 | 日韩精品观看 | 手机av电影在线观看 | 青青看片 | 91精品在线观看视频 | 成人性生交大片免费观看网站 | 成人精品国产免费网站 | 麻豆成人小视频 | 国产精品乱码一区二区视频 | 伊人成人久久 | 韩国一区二区av | 国产最新在线观看 | 日韩av网页 | 成人精品福利 | 国精产品999国精产 久久久久 | 中国一级片免费看 | 麻豆传媒在线免费看 | 992tv在线| 香蕉视频在线免费看 | 欧美日韩在线观看一区 | 久久精品综合网 | 久久久久久久久久福利 | 夜夜躁狠狠躁 | 911精品美国片911久久久 | 久久国产精品一二三区 | 99久久99久久免费精品蜜臀 | 天天爽夜夜爽人人爽一区二区 | av电影 一区二区 | 制服丝袜在线91 | 在线免费观看国产精品 | 久草手机视频 | 国产在线观看你懂得 | 中文字幕日韩在线播放 | 91亚洲精品久久久蜜桃 | 91成版人在线观看入口 | 五月婷婷丁香激情 | 一区二区三区在线免费播放 | 久草精品视频 | 激情在线免费视频 | 在线观看视频在线 | 成人免费精品 | 久久久久久久久久久免费av | 精壮的侍卫呻吟h | 午夜在线观看影院 | 伊人中文在线 | 亚洲片在线资源 | 亚在线播放中文视频 | 在线观看国产中文字幕 | 国产精品2019 | 久影院 | 综合国产在线观看 | 久久尤物电影视频在线观看 | 久久不色 | 99久久99久久免费精品蜜臀 | 日韩精品一区二区三区高清免费 | 国产一级做a爱片久久毛片a | 日日干视频 | 国产高清黄色 | 欧美激情视频在线免费观看 | 伊人春色电影网 | 久久视频在线观看中文字幕 | 91传媒在线观看 | 毛片在线网 | 日韩欧美视频一区二区三区 | 亚洲一区久久久 | 在线免费观看视频 | 午夜精品久久久久久久99热影院 | 性色av一区二区 | 91影视成人 | 久久久久久黄色 | 国产99精品 | 99性视频| 6080yy午夜一二三区久久 | 日本在线观看视频一区 | 国产精品久久久久久久7电影 | 久草久视频 | 丝袜网站在线观看 | 国产小视频在线免费观看视频 | 国产午夜麻豆影院在线观看 | 黄色片网站大全 | 免费日韩 精品中文字幕视频在线 | 国产精品短视频 | 中文在线资源 | 福利一区在线 | 日韩欧美亚洲 | 午夜少妇 | 中文字幕高清免费日韩视频在线 | 狠狠狠狠狠狠 | 国产精品永久在线观看 | 午夜电影av | www成人精品 | 中文字幕在线影院 | 日韩av在线资源 | 久草在线久 | 99久久日韩精品免费热麻豆美女 | 国产在线播放一区二区 | 国产精品视频全国免费观看 | 在线观看国产一区 | 亚洲专区在线视频 | 免费在线视频一区二区 | 免费成视频 | 91麻豆精品国产91久久久使用方法 | 97免费| 久久视频在线视频 | 色停停五月天 | 精品美女国产在线 | 亚洲美女视频在线 | 免费a v观看| 99热999| 精品国产视频一区 | www.狠狠| 久久高清| 亚洲在线视频网站 | 91亚洲狠狠婷婷综合久久久 | 亚洲国产色一区 | 国产中文字幕在线免费观看 | 99久久婷婷国产一区二区三区 | 日韩在线中文字幕 | 香蕉视频国产在线观看 | 午夜精品福利一区二区 | 久久91网| 九九在线高清精品视频 | 一级片视频在线 | 日日夜夜av | 五月婷婷激情五月 | 国产精品一区二区三区四 | 免费日韩在线 | 久久久亚洲麻豆日韩精品一区三区 | 久久精品久久久久电影 | 久热色超碰 | 精品国产伦一区二区三区免费 | 亚洲va韩国va欧美va精四季 | 91精品国产自产老师啪 | 久久99精品国产麻豆宅宅 | 久久理论影院 | 最近最新mv字幕免费观看 | 国产高清精| 日本精品中文字幕在线观看 | 久久精品9 | 狠狠色丁香婷婷综合 | 欧美日韩高清在线观看 | 成人av直播| 久久久久久久免费 | 婷婷福利影院 | 人人插人人澡 | 96精品高清视频在线观看软件特色 | 久久99久久99精品 | 夜夜操天天摸 | 欧美激情视频在线免费观看 | 九九视频网站 | 免费进去里的视频 | 久草视频中文 | 成人中文字幕+乱码+中文字幕 | 日韩一区二区免费播放 | 欧美性猛片, | 国产精品久久久久久五月尺 | 精品亚洲视频在线观看 | 五月婷婷在线视频观看 | 狠狠色丁香 | 亚洲1区 在线 | 天天射日 | 久久综合影视 | 亚洲成人精品在线观看 | 国产精品久久久久久久7电影 | 国产精品视频免费看 | 91最新中文字幕 | 国产一级电影在线 | 天天干天天搞天天射 | 欧美 亚洲 另类 激情 另类 | 成人午夜精品久久久久久久3d | 6080yy精品一区二区三区 | 免费视频 你懂的 | 日本精品二区 | 日本夜夜草视频网站 | 中文在线www| 亚洲欧洲精品一区二区 | 久久久久久久久久免费 | ww亚洲ww亚在线观看 | 中国美女一级看片 | 国产美女视频免费观看的网站 | 亚洲免费婷婷 | 国产一级在线观看 | 国内精品亚洲 | 免费观看9x视频网站在线观看 | 国产精品 国产精品 | 天天看天天干天天操 | 日韩免费在线 | 五月宗合网 | 亚洲一一在线 | 亚洲精品影视 | 久久久久国产视频 | av成人在线播放 | 日韩在线中文字幕视频 | 国产小视频在线观看免费 | 激情偷乱人伦小说视频在线观看 | 亚洲国产丝袜在线观看 | 欧美亚洲三级 | 涩涩成人在线 | 久久伦理电影网 | 国产精品欧美精品 | 亚洲日本黄色 | 91爱爱网址| 九九热视频在线 | 精品视频网站 | 日本在线观看一区二区 | 激情婷婷欧美 | 九九精品无码 | 深夜国产福利 | 国产在线观看免费 | 色综合久久五月 | 狠狠色伊人亚洲综合网站色 | 日韩大片在线免费观看 | 成人免费av电影 | 精品视频123区在线观看 | 六月激情 | 日韩av一区二区三区四区 | 亚洲一级特黄 | 麻豆影视在线播放 | 成人精品久久久 | 国产一区精品在线观看 | 久久久精品国产一区二区电影四季 | 久久全国免费视频 | 日韩精品一区二区三区不卡 | 久久女同性恋中文字幕 | 日韩最新av在线 | 天天在线操 | 欧美一级性 | 免费黄色激情视频 | a色视频 | 午夜精品久久久久久久99婷婷 | 黄色一级大片在线观看 | 天天操天天干天天爱 | 超碰成人网 | 97视频精品 | 国产一区在线观看视频 | 色婷婷福利视频 | 天天干国产 | 天天操天天操天天操天天操 | 成年人免费在线看 | 婷婷网址 | 狠狠躁夜夜躁人人爽超碰91 | 日韩精品中文字幕久久臀 | 最近中文字幕高清字幕免费mv | 免费在线激情电影 | 国产精品精品国产 | 国产精品久久久久一区二区三区共 | 婷婷日韩 | 欧美午夜理伦三级在线观看 | 免费看国产曰批40分钟 | 一级α片 | 日韩精品中文字幕有码 | 一本一本久久a久久精品综合妖精 | 色噜噜狠狠狠狠色综合久不 | 国产精品毛片一区视频 | 久久久久久久久久毛片 | 麻豆91小视频| 精品自拍av | 国产中文字幕网 | 婷婷精品在线 | 91丨九色丨蝌蚪丨老版 | 日韩午夜在线观看 | 天天色综合三 | 9999国产精品 | 成人黄大片 | 91久久影院 | 又黄又爽的视频在线观看网站 | av中文在线观看 | 亚洲精品88欧美一区二区 | 一区二区三区免费在线观看 | 天天射天天干 | 国产成人免费网站 | 999久久| 99国产一区二区三精品乱码 | 青青草国产在线 | 免费在线色视频 | 日韩av不卡在线播放 | 99久久久国产精品免费99 | 黄视频网站大全 | 99视频播放 | 91九色自拍 | 中文字幕一区二区三区在线播放 | 久久这里有精品 | 日本电影黄色 | 亚洲狠狠丁香婷婷综合久久久 | 国产精品久久99综合免费观看尤物 | 国产精品完整版 | 九九久久影院 | 欧美男同网站 | 91在线小视频 | 精品久久久免费 | 一级黄色片在线播放 | 中文字幕高清免费日韩视频在线 | av免费在线观 | 国产精品一区二区av | 日韩久久久久 | 午夜国产福利视频 | 911精品美国片911久久久 | 中文字幕中文字幕在线中文字幕三区 | 国产69精品久久99不卡的观看体验 | 91成品人影院 | 五月婷婷色播 | 欧美日韩精品影院 | 91一区在线观看 | 日韩高清不卡在线 | 最近中文字幕 | 日韩激情在线 | 国产福利久久 | 91插插插免费视频 | 日韩在线观看网站 | 国产91精品高清一区二区三区 | 成人av网站在线观看 | 久久免费久久 | 1024手机在线看 | 久久99国产精品自在自在app | 久久久久久久久久福利 | 欧美性生活免费看 | 中文字幕在线观看免费高清完整版 | 69视频永久免费观看 | 黄色软件在线观看免费 | 国产区在线| 精品99久久久久久 | 日韩免费中文字幕 | 天天干天天做天天操 | 综合国产在线观看 | 在线看黄色av | 狠狠狠的干 | 精品在线观| 中文字幕国语官网在线视频 | 国产福利精品一区二区 | 久草精品视频在线看网站免费 | 日韩免费电影一区二区 | 国产91精品一区二区麻豆网站 | 中文字幕在线成人 | 午夜免费福利视频 | 欧美日韩亚洲国产一区 | 国产视频在线一区二区 | 欧美激情精品久久久久久免费 | 黄色三级久久 | 黄色的片子 | 一区二区网 | 国产精品99爱 | 国产精品美女www爽爽爽视频 | 区一区二区三区中文字幕 | 亚洲精品美女久久久 | 欧美综合国产 | 国产精品乱码久久久久 | 国产亚洲精品久久久久久电影 | 欧美精品久久久久a | 91少妇精拍在线播放 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 69久久99精品久久久久婷婷 | 精品国产一区二区三区在线观看 | 亚洲精品在线观看不卡 | 国产精品久久久久久久久搜平片 | 在线av资源| 久久精品视频日本 | 波多野结衣视频一区 | 欧美激情综合网 | 亚洲午夜久久久综合37日本 | 久久久国产精品亚洲一区 | 午夜在线免费观看 | 日本中文字幕网址 | 黄色大全免费观看 | aaa毛片视频 | 国产一级二级三级在线观看 | 日韩在线观看高清 | 97超碰免费在线观看 | 激情视频国产 | 在线香蕉视频 | 国产 欧美 日产久久 | 色综合久久久久久久久五月 | 精品国产三级a∨在线欧美 免费一级片在线观看 |