说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Delphi 4增訂的Object Pascal

HTML文档下载 WORD文档下载 PDF文档下载
Delphi 4增訂的Object Pascal

總結來說,Delphi 4的Object Pascal增訂了以下幾大部分:

新增加數種內定資料型態。

Dynamic Arrays

Method and Routine Overloading

Default Parameters.

Implementating interfaces by delegation,可用以下的寫法:

property MyInterface: IMyInterface read FMyInterface

implements IMyInterface;

新增的內定資料型態

整數方面:

新增加Int64這種長度六十四位元,範圍從-2^63 to 2^63 - 1。

32-bit unsigned integer新增加Longword型態,範圍從0..4294967295。

Cardinal的範圍調整成與上述Longword型態相同。

浮點數方面:

Real型態基於效率考量,由過去佔用48-bit調整成64-bits,

新增加Real48型態,精確度與過去的Real相同,仍是48-bit。

Dynamic Array

Delphi 4問世之前,Delphi程式設計師若需要動態長度的陣列,在不得已的情況下,往往採用以下這種「表面上陣列的語法,但實際自己配置管理記憶體」的方式來處理動態陣列:

#0001 procedure TForm1.Button1Click(Sender: TObject);

#0002 type

#0003 TIntegerArray = array[0..0] of integer;

#0004 PIntegerArray = ^TIntegerArray;

#0005 var

#0006 pArrayOfInteger: PIntegerArray;

#0007 j: integer;

#0008 begin

#0009 GetMem(pArrayOfInteger

10 * SizeOf(Integer));

#0010 for j := 0 to 9 do

#0011 pArrayOfInteger^[j] := j;

#0012 FreeMem(pArrayOfInteger

10 * SizeOf(Integer));

#0013 end;

如果應用Delphi 4新增加的Dynamic Array,則可改用以下的方式:

var MyFlexibleArray: array of Real;

定義之後,以 SetLength 函數改變陣列實際配置的記憶體大小,例如:

SetLength(MyFlexibleArray

20); // 0..19

方便很多,是嗎?若想知道Dynamic Array實際長度,請分別以High與Low函數判斷,傳回「-1」時,表示是一個該陣列的長度為零,例如:

#0001 procedure TForm1.Button2Click(Sender: TObject);

#0002 var

#0003 A: array of Integer;

#0004 begin

#0005 ShowMessage(IntToStr(High(A))); // -1

#0006 SetLength(A

3);

#0007 ShowMessage(IntToStr(High(A))); // 3

#0008 A := nil;

#0009 ShowMessage(IntToStr(High(A))); // -1

#0010 end;

上述的0008這列,指定nil值將會釋放陣列所配置到的記憶體。

值得注意的是,Compiler對於Dynamic Array並不會自動進行所謂的「Copy-on-Write」。請看以下的程式例:

#0001 procedure TForm1.Button1Click(Sender: TObject);

#0002 var

#0003 A

B: array of Integer;

#0004 begin

#0005 SetLength(A

1);

#0006 A[0] := 1;

#0007 B := A;

#0008 B[0] := 2;

#0009 ShowMessage(IntToStr(A[0])); // ==> 2

#0010 end;

0008這列改的雖是B[0],但Compiler顯然還沒有聰明到在可能修改陣列內容時,將陣列內容複製一份出來(Copy on (possible) Write),於是,0009這列程式顯示的結果仍是2。

於是,若要進行兩陣列各索引項目一對一的內容複製,只好自行寫迴圈一一複製,或者,採用較為簡便的寫法 ── 呼叫Copy函數:

#0001 procedure TForm1.Button4Click(Sender: TObject);

#0002 var

#0003 A

B: array of Integer;

#0004 begin

#0005 SetLength(A

1);

#0006 A[0] := 1;

#0007 B := Copy(A

0

1);

#0008 B[0] := 2;

#0009 ShowMessage(IntToStr(A[0])); // ==> 1

#0010 ShowMessage(IntToStr(B[0])); // ==> 2

#0011 end;

最後,請不要將Dynamic Array與第二章提到的Open Array(開放陣列)搞混了。函式參數的開放陣列,語法雖與Dynamic Array差不多,但開放陣列指的是:不限定傳入函式的陣列長度,Dynamic Array則是指:可變長度的陣列,兩者畢竟有所不同。以下是一則我準備的程式範例,不難看出兩者之間的差異:

#0001 type

#0002 TDynamicInteger = array of integer;

#0003

#0004 procedure Clear_OpenArray(var A: array of Integer);

#0005 var

#0006 I: Integer;

#0007 begin

#0008 for I := 0 to High(A) do A[I] := 0;

#0009 // SetLength(A

20); // 不可以這麼寫

#0010 end;

#0011

#0012 // 注意

以下兩種寫法又有不同喔

#0013 // I: procedure Clear_DynamicArray(A: TDynamicInteger);

#0014 // II: procedure Clear_DynamicArray(var A: TDynamicInteger);

#0015 procedure Clear_DynamicArray(var A: TDynamicInteger);

#0016 var

#0017 I: Integer;

#0018 begin

#0019 for I := 0 to High(A) do A[I] := 0;

#0020 SetLength(A

20); // 如果是Dynamic Array

可以這麼寫

#0021 end;

#0022

#0023 procedure TForm1.Button3Click(Sender: TObject);

#0024 var

#0025 A: TDynamicInteger;

#0026 begin

#0027 SetLength(A

3);

#0028 Clear_OpenArray(A);

#0029 ShowMessage(IntToStr(High(A))); // -1

#0030 Clear_DynamicArray(A);

#0031 // 以下這列的結果

要看 Cleary_DynamicArray 的

#0032 // 參數有沒有寫 var

#0033 ShowMessage(IntToStr(High(A)));

#0034 end;

請幫我注意0004的Clear_OpenArray,傳入的是「由整數構成的陣列,不限定陣列的長度」,0015的Clear_DynamicArray的寫法則是「接受一個可變動陣列長度的動態陣列」,若不這樣寫,當場就變成了開放陣列了。

Method and Routine Overloading

所謂的Method Overloading,簡單地說:一個以上的函式使用相同的函式名稱。這項特性是Object Pascal長久以來一直有人想要卻一直沒有支援的期盼,終於,Delphi 4多了一個保留字:overload ── 相同名稱的兩個函式,只要在宣告時額外加上overload,即使函式的參數型態不同,Delphi也會視呼叫當時傳入的參數資料型態,決定該呼叫哪一個函式。例如以下這則例子:

#0001 // 兩個 Divide 都必須寫overload保留字

#0002 function Divide(X

Y: Double): Double; overload;

#0003 begin

#0004 Result := X / Y;

#0005 end;

#0006

#0007 function Divide(X

Y: Integer): Integer; overload;

#0008 begin

#0009 Result := X div Y;

#0010 end;

#0011

#0012 procedure TForm1.Button1Click(Sender: TObject);

#0013 var

#0014 a

b

c: integer;

#0015 i

j

k: Double;

#0016 begin

#0017 a := 10;

#0018 b := 3;

#0019 i := 10;

#0020 j := 3;

#0021 c := Divide(a

b);

#0022 k := Divide(i

j);

#0023 ShowMessage(IntToStr(c)); // 3

#0024 ShowMessage(FloatToStr(k)); // 3.333333...

#0025 end;

請幫我注意到0002與0007這兩列的Divide函數,函數名稱相同,但傳入的參數型態與函數的傳回值並不相同,即使如此,0023與0024呼叫到Divide時,還是會視當時參數的型態型態,決定該呼叫哪一個Divide。

很方便,是嗎?有了這項特性,我們就可以寫出應用範圍更廣彈性更大的函數──卻不必為每一種情況各自取一個函數名稱,同時,這項特性也使得函數呼叫的方式更為一致,真是一項早該支援的特性。除了一般的程序與函數,物件的方法也可以採用overload寫法,對於「物件.方法」的撰寫與呼叫,肯定更能提供簡便與彈性。

overload可不可以應用在不同的兩個單元呢?答案是可以的,但是完全相同的函式宣告不能再寫一次。例如上述程式的0007-0010,可以移到其他單元,原來的單元只要uses這個新的單元,函數呼叫時仍然有Overloading的效果。可是,如果將0007-0010的程式碼移到其他單元卻忘了刪除原來位置的程式,換句話說,兩個單元各有一個完全長得一樣的函式,編譯時Delphi就搞不清楚了,結果自然是無法編譯。當然啦!同一個單元同一個範圍發生這樣事也是不許的,各Overloading的函式,在函式宣告上多少總有些不同。

Default Parameters

過去,函式如果定義了六個參數,那麼,寫作函式呼叫的原始碼時,就一定得乖乖地傳入六個參數,不許多也不許少。若是應用「Default Parameters」,可以只傳入五個(或者更少)。那...,那其他沒給的參數怎麼辦?沒關係,函式內部的程式將自動以預設值代入,稍後我會說明其寫法。

舉例來說,Windows API中有一個蠻好用的函數叫MessageBox,呼叫此函數將出現一通用對話盒,不管是顯示訊息或者徵詢使用者意見,都十分好用。像是以下這道敘述將產生如次頁的對話盒,提醒使用者定期備份資料:

Application.MessageBox('程式要結束了喔! 請記得定期備份資料'

'訊息'

MB_OK + MB_ICONINFORMATION);

除了顯示資料,經由最後一個參數,彈性地搭配各位元旗標,就可以製作出不同按鈕的對話盒,詢問使用者「是」、「否」、「取消」等簡單的問題。

應用Default Parameters的寫法,我們可以寫一個類似以下的函數:

#0001 function MyMessageBox(Prompt: string;

#0002 Caption: string = '訊息';

#0003 Flag: LongInt = MB_OK + MB_ICONINFORMATION): integer;

#0004 begin

#0005 Result := Application.MessageBox(

#0006 PChar(Prompt)

PChar(Caption)

Flag);

#0007 end;

#0008

#0009 procedure TForm1.Button1Click(Sender: TObject);

#0010 begin

#0011 MyMessageBox('程式要結束了喔! 請記得定期備份資料');

#0012 end;

如此一來,我們既能有一個完整支援MessageBox的函數,只想顯示文字時,也能有一個精簡型式的函數可用。大家應該明顯看得出來:不必寫成兩個函數。

觀察上述程式的寫法,其實也蠻容易的,只不過是在定義函數參數時,一併給定初值。

不過,實際動手去寫時,還是會發現一些限制。繼續這個例子來說,參數的預設值一定得是常數,另外,如果某一個參數開始給預設值,接在後頭的參數也必須用Default Parameters的寫法。為什麼得有這項限制?以上例來說,如果0001-0003我改成:

#0001 function MyMessageBox(Prompt: string;

#0002 Caption: string = '訊息';

#0003 Flag: LongInt): integer;

那麼,只傳入兩個參數進去時,Delphi怎麼知道第二個參數該是Captioin或者是「Caption按預設值,第二個參數代入Flag」。Visual Basic對此的解法是在呼叫函數時,一併寫明各參數名稱與值的對應,由於這個緣故,Visual Basic甚至允許參數的次序不同也沒關係,因為,各參數與其值的對應關係在呼叫函式時已一併註明清楚。很可惜的,Delphi 4雖有Default Parametets,但還不支援以下的函數呼叫方式:

MyMessageBox('程式要結束了喔! 請記得定期備份資料'

Flag = ...);

雖然如此,上述「如果某一個參數開始給預設值,接在後頭的參數也必須用Default Parameters的寫法」這項限制,多少還是可以搭配前一節的Overloading加以彌補:

#0001 function MyMessageBox(Prompt: string;

#0002 Caption: string = '訊息';

#0003 Flag: LongInt = MB_OK + MB_ICONINFORMATION): integer; overload;

#0004 begin

#0005 Result := Application.MessageBox(

#0006 PChar(Prompt)

PChar(Caption)

Flag);

#0007 end;

#0008

#0009 function MyMessageBox(Prompt: string;

#0010 Flag: LongInt;

#0011 Caption: string = '訊息'

#0012 ): integer; overload;

#0013 begin

#0014 Result := Application.MessageBox(

#0015 PChar(Prompt)

PChar(Caption)

Flag);

#0016 end;

#0017

#0018 procedure TForm1.Button1Click(Sender: TObject);

#0019 begin

#0020 MyMessageBox('程式要結束了喔! 請記得定期備份資料');

#0021 MyMessageBox('別說我沒告訴你喔!'

MB_OK);

#0022 end;

(好煩的程式,一再提醒要記得備份。:p)

請幫我注意這次改寫過的程式0009-0012,我重新調整了各參數的次序,並且分別在兩同名函數都加上了overload保留字,這樣,Delphi就知道該呼叫的是哪一個了。

云适配陈本峰:平台型企业级浏览器是未来办公移动化的核心 警报:XcodeGhost已扩散至第三方框架 我们眼中的应用另一端是什么? 【SDCC讲师专访】百度马如悦:不写代码的架构师不是好架构师 企业级应用避免臃肿混乱的6大黄金法则 SDCC 2015讲师专访精彩集锦:程序员界“香饽饽”、大神级人物都在! 从技术经理的角度算一算,如何可以多快好省的做个App(一) 【SDCC讲师专访】Java泛型作者Gilad Bracha:优秀的程序员应该未雨绸缪 【CTO讲堂】微服务架构在云端的应用 SDCC 2015创业项目路演火爆征集:寻找中国好项目 被遗忘的设计模式——详解Swift语言中的Null Object Pattern Synaptics发布全新触控及生物识别方案,正式进军车联网 无人机、机器人,英特尔RealSense已扩展至新领域 SDCC 2015中国软件开发者大会盛大开幕 《近匠》逸创云客服创始人叶翔:做好客服产品静待SaaS大爆发时代的到来 【SDCC2015现场】数据库实战论坛:分布式数据库的实践与挑战 SDCC 2015 中国软件开发者大会亮点回顾 《近匠》扬智科技GoWarrior:软硬件全面开源的计算平台 【CTO讲堂】独家直播双十一全网动态?前黑客“劳改”带你玩转大数据 《近匠》好雨云刘凡:提供全方位支持的一站式开发服务云平台 体验过HTC Vive,才知道何谓沉浸感 BDTC 2015:大数据技术精英云集 初版日程公布(表) 深度剖析C++对象池自动回收技术实现 React Native与ExMobi技术路线探索 SDCC 2015前端专场札记:Facebook、百度、腾讯、美团、饿了么等互联网公司的前端实战 芯片巨头为何痴恋开源软件?英特尔Imad Sousou来解密 3D Touch:岂止于Multi-Touch Atlassian亚太区业务经理Paul Conroy:敏捷是开发者的痛点 基于DuiEngine的开源DirectUI图形界面库SOUI 【CTO讲堂】工具类、新闻类、视频类等不同类型App的积分体系该如何搭建? 浏览器的改进应来自用户诉求而非商业诉求 怎么在Installshield中创建对话框,并操作ACCESS数据库? win2000server的管理员密码让人改了,怎么办呀! 太气愤了,帮帮我? 用BDE连接MS SQL SERVER,为什么运行后出现未知用户名或密码的错误? datagrid中能不能进行统计 如何编写“outlook”风格的界面 如何实现flash截图?我研究了好久也不明白,希高手指点!(在线等待) 程序调用的DLL 在delphi中,用ADO如何实现将SQL中多表导出到一个Access中? 无聊啊无聊 想考软工???? Socket奇怪的问题! foxpro中如何实现按一按钮启动word和excel,并且直接弹出打开文件对话框? 关于分级权限管理(300分) 紧急求救!!!!!!!! 客户端web服务是否需要别的控件支持 帮帮我,朋友们请进.... Datareport问题! [cclq]竞选斑主,附我的方针! 用VB编写自己的服务器端组件 DAO问题,CDaoRecordset::addnew()和CDaoQueryDef::Execute插入一条记录,哪个更快? 谁能解释一下这个比较模糊的问题?关于地图窗口HWND。 闲人免进!如何增加信誉分! 如何改变Mem控件中插入符的形状? 各位大虾有没有检测日期的合法性的JAVASCRIPT脚本啊 怎么在Installshield中创建对话框,并操作ACCESS数据库? 两个问题,关于struts中form的action如何传递一个变量?如何使用科学计数变成普通数值? 救落水美女注意事项 如何学习NOTES? 急!!急!!给多分呀!!! 寻在windows下安装bugzilla时缺少的两个文件。 菜鸟问题。。。。。。需大师回答啊 怎样由实例句柄得到传口句柄? 请问,VB的DataReport是否有支持套打的功能? 有关ant和struts的问题,急。 有人用Panorama来做自动化测试吗? 请问各位,如何用PHP来实现这个功能啊! 关于列换顺序的问题 请教用户帐户在不同域间移动 ? 代理问题? weblogic81 和jbuilder怎么配置, 得到小数点后指定长度数据?? Sql语句怎么写? 一个关于框架的问题! ASP+是不是就是asp的新版本,怎么才能运行? 关于管理权限的设计办法(急) 在线等!很菜的问题! 多条件查询的问题!谢谢! 我想申请斑竹!!! 请问不打包怎么用????? 如何动态使用DBChart控件 17:30有几种译法? 若点p到A,B两点距离相等,则p为AB的中点, #儿时疑惑#有“咬舌自尽”这句话,咬舌那会死吗? 16岁适合染头下列哪种颜色,(皮肤很白) 求与夏沫匹配的词语 要求冬开头 格式:冬X 一只老虎重360千克,一只河马的体重是3吨.老虎的体重是河马体重的几分之几? 潮湿的反义词语是什么 关于“靖郭君将城薛”的问题~靖郭君将城薛,客多以谏.靖郭君谓谒者无为客通.齐人有请者曰:“臣请三言而已矣!益一言,臣请烹.”靖郭君因见之.客趋而进曰:“海大鱼.”因反走.君曰:“客 女43岁 南极磷虾油软胶囊 我怀孕8周了,可以吃磷虾油吗?我怀孕8周了,可以吃磷虾油吗?性别:女年龄:43病情描述我怀孕8周了,可以吃磷虾油吗?发病时间:不清楚 我们人类真的和外星人有关系吗? 齐人说靖郭君中“海大鱼”有何喻意 “影子也高兴”地笑了.请说说影子笑的原因? 人类在未来二十年内将与智能外星人亲密接触!是真的?人类在未来的20年内真的能和外星人亲密接触吗? 的主旨是什么 急求! 为什么两块冰块之间加盐后并在一起,就粘住了要原理原理要具体一点,60个字以上,也不要太长 翻译::孟子的《墦间乞食》 磷虾油是什么做的? 已知一块板材的动力实验数据,如何用fft函数计算并画出频谱?现在数据只有每个时间t对应的数值,而不知道函数关系,怎么求啊fx=fft(x);fx=abs(fx(1:length(fx)/2));plot(fx)能给解释下每句具体的意思吗 英语翻译孟子的文章 我们用湿手去拿冻冰室里的食物时,手马上会被粘住,这是由于-----引起的,如果用力拉会损伤皮肤,解决的方法是迅速将水放在水中使___而脱离 靖郭君准备在封地修筑城防工事,门客多来劝往的原因是什么 墦间乞食 磷虾油是虾青素吗? 齐人用什么方法说服靖郭君 坚强的反义词是什么?艰难的反义词是什么? 如图,AC交BD于点O,AC=DB,AB=DC,求证:∠C=∠B 分辩的反义词是什么 一艘潜水艇在水中的高度是负六十五米,一条大鲨鱼在艇上方22米,这条大鲨鱼在的高度是多少米? 颜色状态:银白色固体硬度:较软密度:2.7克/立方厘米熔点:660.4度导电性:良好导热性:良好延展性:良好将该金属投入稀盐酸中,可产生大量的无色气体,是不是铝? Cl-、Na+、S2-、Al3+能否共存?为什么?如果不能,请问会发生什么反应,离子方程式是什么? 坚强反义词是什么 靖郭君将城薛 Na+ K+ S2- CL- 能大量共存吗? 假设海平面的高度为0米,海边一座山的高度是572米,一条大鲨鱼在水下45米处游动,一搜潜艇在鲨鱼下方35米处航行.请你用合适的数分别表示高山、鲨鱼和潜水艇的高度 靖郭君将城薛字词解释 Cl-、Na+、S2-、Fe3+能否共存?为什么?如果不能,请问会发生什么反应,离子方程式是什么? 描写苏联一搜潜艇下潜的越来越深,艇内压强吃不消了,连耳朵里都出血了,最后决定把生的希望留给一位医生的电影叫什么? 靖郭君将城薛原文中的“谏止三言”怎么理解,“靖郭亦纳谏,乃辍城薛”反映了什么问题?靖郭君将城薛①,客多以谏.靖郭君谓谒者:“无为客通”②.齐人有请者曰:“臣请三言而已矣③!益一 用哪个EXCEL函数公式能够方便的解决此问题?请教一下各位大侠,我想用EXCEL函数建立一个公式:分为钢化和不钢化两种(玻璃宽*玻璃高*数量/1000000),计算两种不同种类玻璃的面积. 写反义词:依赖-____;舒适-____. (浅沫)的反义词是什么 请帮助我解决一道有关函数对应法则的题目.已知f(x)的定义域是{1,2,3,},从集合{1,2,3,4,5}中选出3个数构成函数f(x)的值域,若f(3)≠3,则这样的函数f(x)共有多少个?希望知道的人可以帮我解解,因为我 自在的反义词 泡沫的近反义词泡沫(是名词)的近反义词是什么?(要名词) 越多越好 请用自己读过的三本书名组成一段话 求12题收敛域 如图,三角形是以AD所在的直线为对称轴的图形,∠BAD=22°,求∠ABC、∠CAD的度数 靖郭君将城薛与邹忌讽齐王纳谏有什么不同 欲速则不达的深刻含义对欲速则不达的一些见解欲速则不达这句话的由来有关欲速则不达的作文该怎么写 这真是一场惊心动魄的拼搏作者为什么会发出这样的感慨?音乐第三次奏响了!场子里静的没有一丝声息.有一些女观众,索性用手捂住了眼睛.这真是一场惊心动魄的拼搏!当那摞碗剧烈地晃动起 焦虑的反义词是什么可怜的反义词 意志倒下的时候生命也就不再屹立歪歪斜斜的身影又怎耐得秋风萧瑟 晚来凤急垂下头颅只是为了让思想扬起你若有一个不屈的灵魂脚下,就会有一片坚实的土地无论走到何方都会有无数双眼 繁荣的近义词是什么 繁荣的反义词、同义词 污水处理规模怎么分,何为中小规模污水处理,到底是以什么为标准来区分规模? 无线发射的功率如何计算比如有些VCD里带射频的那种模块,是怎样计算发射功率的?请帮我算算:9V电压,电流60mA,功率多少? 风声雨声读书声,声声入耳.的下句是什么 齐人谏靖郭君城薛中的海大鱼什么意思? X 放射线怎么样 A点和B点有4条线连接,分别长17.15.26.22厘米其中只有一条线段,问AB两点的距离有 齐人谏靖郭君城薛问题~原文 齐人谏靖郭君城薛(齐策)靖郭君将城薛,客多以谏.靖郭君谓谒者:「无为客通.」齐人有请者曰:「臣请三言而已矣.益一言,臣请烹!」靖郭君因见之.客趋而进曰: 马英九:过去5年实践九二共识内涵 未镇党委书记就拖欠猪蹄店70万致歉 称日民主党深刻反省野田内阁未根本解决福东京股市日经股指大跌2.75%中欧为推进经贸关系谋共识两家中资企业考察多哥捐建项目澳大利亚否认山火与全球变暖有关 总理揭赵文卓斥甄子丹不和真相内幕细节全曝原税务总局官员:向电商征税是趋势 时《新神雕》爆新剧照 小龙女陈妍希越来NBA总决赛将更改赛制 最后一场前增上海台湾联手破获跨境电信诈骗案 69阿兰·阿库瓦拉:中国经济特区的经验值巴西国企独揽石油招标引抗议 政府进退美国十岁男孩弑父案即将宣判 孩子去处俄外交部称叙利亚境内武装冲突局势加剧小崔赴美调查转基因 沃尔玛员工不知何崔永元:美国人\"放心吃了十几年转基法国德国抗议美国监听 敦促美国建立合墨前警长向美贩毒 被判13年监禁罚款菲律宾尴尬改口 撤回有关中国在黄岩岛雷军投资迅雷成真 金山软件以9000男篮公布名单 王仕鹏孙悦落选央行一季度例会:保持适度流动性广发日专享 免费去巴西看世界杯恒大带旺“红衫经济”就连小贩也受益自助洗衣店 白领“懒人”也叹洗不起想减肥 请早起“养儿防老”观念 带来的不幸与大幸开会是工作中“最佳睡觉机会”古街巷名,你又能猜几个?2014钢琴大斗法这个短假期, 到正佳看婚纱秀世界上最高的贫民窟云南白药承认配方含断肠草男装行业今年料难解困CBD11条私家夜跑路线 且跑且珍藏CBD11条私家夜跑路线 且跑且珍藏六匪马来西亚沙巴掳走一上海女子“还不如改行打棒球”杨剑波状告证监会案昨日开审 称证监会洪涛股份破定增价后封死涨停
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘