中国开发网: 论坛: 程序员情感CBD: 贴子 263916
pcplayer
Delphi 出了!
◇ Alex's Delphi Reviewer's Guide

發信人: Alex_Yu%alex@gate.fido.net.tw (Alex Yu), 信區: programming
標 題: Alex's Delphi Previewer's Guide I
發信站: Reflects dans L'eau Gateway (Thu Feb 16 00:11:04 1995)
轉信站: cis_nctu!news.cis.nctu!news.cc.nctu!news.csie.nctu!nowhere!s8153119

Delphi 出了!

看完Reviewer's Guide, 哇......以前Windows programming 的概念可以通通
丟到垃圾筒了!

Alex's Delphi Previewer's Guide I: ;-)

Property:
以前要存取dialog box 或control 內各欄位之資料必須自己動手寫程式,
要繼承個new control 還要跑來跑去改寫好幾個地方。
現在只要拖拖拉拉mouse, 宣告個property, 定義一下非系統內定的event, 就OK 了!
所有型態宣告和物件欄位宣告自動產生, 我們真正需要寫的程式就只有new event
handler 的行為!
(想想幾分鐘和幾秒鐘辦好同一件事的差別!)
Property 對外界視同變數, 但是外界存取property variable 時必須經過事先定義
之method (member function, in CPP), 也可以是read only.

Class references:
RTTI 的引進(我覺得以前BP/TP 早就有了, 只是得自己動手處理各class info;
現在Delphi 則會幫忙處理class info). 假設一物件不知其型態(只曉得它是從
哪個class 衍生出來的), 我們可以宣告個class reference of the base class,
from which this class instance inherited, 然後透過這class reference
再複製一個同型態的class instance, 並可以將一些event handler 改變到這
物件去。(!!! 以前都可以自己作到, 但是要求的技術等級是熟知Borland Pascal
內部物件處理方式與組合語言; 現在只要簡簡單單的
CRef:=TCref(SomeControl);
ctrl:=CRef.Create(Self);
{ 假設TCRef 是個TControl reference, 變數Cref 的型態是TCref, 則第一行敘述
將在runtime 使CRef 參考到SomeControl 之型態(在編譯時無法決定其真正型態),
並創造一個型態與SomeControl 一致之物件, 將之存放在ctrl (a TControl var).
在Delphi 中, class typed object 只有動態物件, 沒有靜態物件, 所以ctrl
跟pointer 可以說是類似的。
}
button1.OnClick:=NewHandler;
{ button1 是個TButton instance, OnClick 表示TButton 在mouse click 時的
event handler; 這行敘述將button1 mouse click event handler 在runtime
變更為目前物件之NewHandler method.}

VBX support:
Delphi 會自動產生VBX interface class, 並可將其當成component 加入Delphi 的
環境中。此外, 因為Delphi 是真正OO 的, 使用VBX 的programmer 不但可以加以
繼承、加入新功能, 還能取代VBX 內定之行為, 並進而衍生出截然不同的new
component.

Components, components & components:
前面提到component (組成元件), 這到底是什麼?
在Delphi 中, 我們不再使用OWL (雖然OWL 的程式仍然可以被編譯) 當作我們的
物件導向應用程式架構, 而是採用全新的Visual Component Library (VCL, 視覺
元件程式庫(暫譯)). Delphi 的整合環境本身就是使用Delphi + VCL 寫成的。
在Delphi IDE 下寫程式, 有兩個主要的不同視窗, 一個是傳統的文字編輯式
code editor (事實上, 它現在也不再只是個傳統的text editor 了!), 另一個
則是visual component editor. 當我們在visual component editor 上對程式
加掛上component 時, code editor 的部份會產生相對應的變化, 自動加上物件
型態、欄位宣告及其繼承方式, 我們又可以透過object inspector 進行細部的
變動, 如一個dialog box 中某button 被double click 後的行為(會自動在code
editor 中生成相對應的event handler)。

如果我們在code editor 中對物件宣告或event handler 型式做了改變, Delphi
也會將之同步反映到visual component editor 中。如果我們變動了某class or
procedure/function/variable/type name, Delphi 會自動幫我們更新其餘該更新
的地方, 大量節省我們東奔西跑改identifier name 的時間。

如果我們要用VBX, 只要將VBX component 拖入visual component editor 之適當
位置即可。要加上push button/list box/any other control, 也只是拉一拉mouse.
萬一我們要改變某control 之行為, 我們可以double click 此control 在object
inspector 中之event handler or property 部份, code editor 會自動把游標
移到適當的地方。

如果我們把visual component editor 中的component copy 到剪貼簿中, 再貼到
code editor 內, Delphi 會自動將該component 以Object Pascal source code
表示, 我們也可以依此另行製造新的component. 當我們改寫好new component source
code, 可以把它再copy 到剪貼簿中, 然後貼回visual component editor 上......
然後, 我們就有一個全新的component 可以在Delphi 的整合環境下使用了!
多神奇呀! 程式的其他地方要用到這新組成元件時, 就只要拉一拉mouse 就OK 了!

--- HPMED 95, rel 02.10
# Origin: 乾魚勿用,陽氣潛藏。 (90:90/2724.0)


發信人: Alex_Yu%alex@gate.fido.net.tw (Alex Yu), 信區: programming
標 題: Alex's Delphi Previewer's Guide II
發信站: Reflects dans L'eau Gateway (Thu Feb 16 01:49:50 1995)
轉信站: cis_nctu!news.cis.nctu!news.cc.nctu!news.csie.nctu!nowhere!s8153119

Exception handling:
Delphi 的exception handling 我認為寫法較像ADA 的, 但是Borland 發表的
Delphi product reviewer's guide 中卻說像C++.

無論如何, Delphi 的exception handling 把一般該有的功能都寫好了,
大家熟知的C++ exception handling 功能在裡頭都找得到, 所以大家應該
知道Delphi 提供的exception handling 是長什麼樣子的了吧。 :P

Canvas class:
一如BC++ 4.5 的VCF (是Visual Component Framework 吧?), Delphi 的VCL
把所有對GDI 存取的動作都給包裝成物件了, 以前繪圖可能需要SelectXXXXX
一堆亂七八糟的東西, 現在只要簡簡單單的幾行敘述就打發掉了。
(既然雜誌上都有過VCF 的介紹了, 這同性質的GDI encapsulation classes
也就不用多說了)

Compiler & IDE 性能:
Delphi 在Pentium 上一分鐘可以編譯360,000 行Object Pascal source code, IDE
每秒scan 1,000,000 行原始碼檢視程式變動過的部份以同步更動visual component
editor 之狀況......。編譯出來的程式是80x86 機械碼, 而不像VB or PowerBuilder
的p-code, 所以執行速度自然是沒話說了。據說在某展示會上, Delphi build Delphi
IDE 只花了半分鐘! (我的BP7 cmd-line compiler build 我的HPMail 30000 萬
程式也要0.25 分鐘哩, 整個HPMail 共約500 KB......在486dx2-66 + Seagate
St3390a HDD + 8 MB RAM 的機器上)
(あ~~あ~~あ~~ぁ~~ぁ~~っ~~Borland 的Pascal compiler 就是快!)

推出日期與價錢:
Borland international 在情人節宣布Delphi 正式推出, 隔天起開始接受訂購,
三月一日起出貨。Desktop version 預定市價US $495, 在九十天內以推廣價US
$195 促銷, 以CD-ROM 版為主, 3.5" disk version 另外加價。
Borland Pascal 已註冊者可以以US $149 購得desktop version, 再加US $49
可購得VCL source code. 教育價據傳只要US $89 (CD-ROM version).

Delphi CD-ROM 版最小安裝需30 MB HDD space, 完全安裝需50 MB HDD space.
所有說明書及互動式使用介紹都放在CD-ROM 上, 超過2 MB 線上說明。
建議配備: 386 or better CPU + 6 MB RAM

二月十五日跟台灣寶蘭公司詢問的結果是目前還沒在台灣推出, 推出時他們會在
雜誌上打廣告。

ps 1. Delphi product reviewer's guide 上有一些更詳細的原始碼範例,
其他相關資訊還沒被ftp.edu.tw mirror 進來, 所以請參考:
ftp://ftp.borland.com/pub/techinfo/techdocs/langprod/delphi/
ps 2. 未來越來越多產品都會放在CD-ROM 上賣(而且比軟碟版便宜), 所以
沒有CD-ROM driver 的人還是趁早買台CD-ROM driver 吧。
ps 3. 已經有3rd party vendor 準備推出VB to Delphi translator 了。

--- HPMED 95, rel 02.10
# Origin: 時乘六魚,以御天也。 (90:90/2724.0)

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录