第一篇:delphi復(fù)習(xí)資料
題型:
填空題20×1 簡(jiǎn)答題5×6 程序填空題11×2 編程題2×14 資料整理的不是完全完整,結(jié)合這些重點(diǎn)可以在書(shū)上再仔細(xì)復(fù)習(xí)。希望好好復(fù)習(xí),大家都能通過(guò)!
第一章Delphi簡(jiǎn)介
1.1delphi概念 Delphi的主要特點(diǎn): Borland公司的Pascal編譯器 Delphi以object Pascal為編程語(yǔ)言 Delphi充分發(fā)揮了windows的強(qiáng)大功能 Delphi提供了豐富的32位可視組件庫(kù)
Delphi在數(shù)據(jù)庫(kù)和網(wǎng)絡(luò)處理功能方面是同類產(chǎn)品中最強(qiáng)的
1.2delphi7集成開(kāi)發(fā)環(huán)境
主窗口:包括菜單欄,工具欄及組件欄; 對(duì)象游覽器:包括屬性頁(yè)和事件頁(yè); 對(duì)象樹(shù)性列表; 窗體設(shè)計(jì)器; 代碼編輯器;
1.3delphi程序的基本結(jié)構(gòu)
擴(kuò)展名為dpr的是項(xiàng)目文件;擴(kuò)展名為pas的單元文件;擴(kuò)展名為dfm的是窗體文件
單元文件的格式如下:
單元頭:該單元指定單元的名稱
接口部分:該部分從保留字interfact開(kāi)始,到保留字implementation之前結(jié)束。接口部分可以有uses語(yǔ)句,還可以用來(lái)聲明常量,數(shù)據(jù)類型,變量,過(guò)程和函數(shù)等。其中uses語(yǔ)句必須緊跟在保留字interfact之后。在整個(gè)程序中都可以被訪問(wèn)
實(shí)現(xiàn)部分:這些聲明可以在本單元中被訪問(wèn),不可以在其他單元中被訪問(wèn),類的方法必須在實(shí)現(xiàn)部分實(shí)現(xiàn)
初始化部分:從保留字implementation開(kāi)始,到保留字finalization之前結(jié)束。一個(gè)單元中可以沒(méi)有該部分。
結(jié)束部分:一個(gè)單元中只有出現(xiàn)了初始化部分,才可以有結(jié)束部分
第二章Object Pascal語(yǔ)言基礎(chǔ) 2.1詞法符號(hào) 保留字
標(biāo)識(shí)符:1標(biāo)識(shí)符由字母,數(shù)字或下劃線組成 2標(biāo)示符的第一個(gè)字符必須是字母或下劃線 3標(biāo)識(shí)符的長(zhǎng)度不應(yīng)超過(guò)255個(gè)字符 4不能將保留字用作標(biāo)識(shí)符 5標(biāo)識(shí)符不區(qū)分大,小寫(xiě)
標(biāo)準(zhǔn)標(biāo)識(shí)符是可以重新定義的,而保留字卻不允許重新定義
因system單元是自動(dòng)應(yīng)用的,不必也不允許在引用部分列出system單元 Absolute指令字用于指示相同類型的另一標(biāo)識(shí)符存放在同一段內(nèi)存區(qū)域中 2.2常量和變量
布爾常量是指false和true這兩個(gè)值 用#引導(dǎo)一個(gè)整數(shù),整數(shù)表示該字符的ASCII碼 用‘’‘’表示單引號(hào)字符 2.3簡(jiǎn)單數(shù)據(jù)類型
數(shù)據(jù)類型分為簡(jiǎn)單數(shù)據(jù)類型,字符串類型,結(jié)構(gòu)類型,指針類型,過(guò)程與函數(shù)類型和可變類型等是一種常見(jiàn)的分類方法
有序數(shù)據(jù)類型特點(diǎn):
1、數(shù)據(jù)的分布是離散的;
2、除了第一個(gè)元素外,其他任何元素都有一個(gè)前驅(qū)元素;
3、除了最后一個(gè)元素外,其他任何元素都有一個(gè)后繼元素
關(guān)系運(yùn)算符號(hào):=,<>,>≡,>,<≡,< 整型數(shù)的邏輯運(yùn)算符:not,and,or,xor 左,右移位運(yùn)算符:shl,shr 基本字型有ansichar和widechar Pascal語(yǔ)言提供的自變量為實(shí)型的標(biāo)準(zhǔn)函數(shù)由: 1絕對(duì)值函數(shù)abs(x):函數(shù)值為x的絕對(duì)值 2平方函數(shù)sqr(x):函數(shù)值為x的平方
3正弦函數(shù)sin(X):函數(shù)值為x的正弦,其中x的單位為弧度 4余弦函數(shù)cos(x):函數(shù)值為x的余弦,其中x的單位為弧度 5反正切函數(shù)arctan(x):函數(shù)值為x的正反切,函數(shù)值的單位為弧度 6指數(shù)函數(shù)exp(x):函數(shù)值為指數(shù)e 的x次方 7對(duì)數(shù)函數(shù)in(x):函數(shù)值為x的自然對(duì)數(shù) 8平方根函數(shù)sqrt(x):函數(shù)值為x的平方根
9舍入函數(shù)round(x):對(duì)實(shí)數(shù)x作四舍五入,結(jié)果為整數(shù) 10截尾取整函數(shù)trunc(x):截去實(shí)數(shù)x的小數(shù)部分,結(jié)果為整數(shù) object pascal提供了豐富的日期時(shí)間處理函數(shù),常用的有: 1date0:函數(shù)返回系統(tǒng)當(dāng)前日期,無(wú)參數(shù),返回?cái)?shù)據(jù)是tdate time型 2time0:函數(shù)返回系統(tǒng)當(dāng)前時(shí)間,無(wú)參數(shù),返回?cái)?shù)據(jù)是tdate time型 3now0:函數(shù)返回系統(tǒng)當(dāng)前日期和時(shí)間,無(wú)參數(shù),返回?cái)?shù)據(jù)是tdate time型 4strtodte(日期字符串):字符串轉(zhuǎn)換為日期時(shí)間函數(shù),返回?cái)?shù)據(jù)是tdate time型
2.4結(jié)構(gòu)類型 結(jié)構(gòu)數(shù)據(jù): —集合類型(set)—數(shù)組類型(arry)—記錄類型(record)—文件類型(file)—類類型(class)
—類引用類型(class reference)—接口類型(interfact)
object pascal中規(guī)定了基類型只能是不超過(guò)265個(gè)有序值的集合,集合元素的敘數(shù)值必須介于0~~255之間
集合運(yùn)算有交(*),并(+),差(—),運(yùn)算對(duì)象是兩個(gè)相同類型的集合,運(yùn)算結(jié)果也是集合。例如,若有為[1,3,5],y為[3,4,5],則x*y為[3,5],x+y為[1,3,4,5],x-y為[1] 數(shù)組的定義:Type arry [indextype。。,indextypen] of basetype ①對(duì)于通用字符串類型string,指定其最大長(zhǎng)度(0------255)。此時(shí)string型被視為shortstring型
②shortstring型不是以null(空字符#0)作為字符串的結(jié)果標(biāo)志,而是將長(zhǎng)度保存在字符串?dāng)?shù)組下標(biāo)為0的儲(chǔ)存單元中 ③ansistring以full結(jié)束
記錄的定義: Type 記錄類型標(biāo)識(shí)符=record 域1:類型1 域2:類型2。。。。域n:類型n 2.6語(yǔ)句流程 語(yǔ)法形式: 輸入語(yǔ)言
Read([文件變量]變量列表)
Readln([文本文件變量]變量列表)有回車 省略文本變量參數(shù)表示從鍵盤(pán)輸入中讀取數(shù)據(jù) 輸出語(yǔ)言
Write([文件變量]輸出項(xiàng)表)
Writeln([文本文件變量]輸出項(xiàng)表)有回車
注釋和編譯指令 //單行注釋內(nèi)容 {注釋內(nèi)容}(*注釋內(nèi)容*)
Case語(yǔ)句的語(yǔ)法格式: Case選擇表達(dá)式of 常量1:語(yǔ)句1 常量2:語(yǔ)句2。。。。
常量n-1:語(yǔ)句n-1 [else語(yǔ)句n;] End;
保留字case后的選擇表達(dá)式,其值必須是有序類型,如整型,字符型,布爾型,枚舉型或子界型 P45頁(yè)程序
While語(yǔ)句的執(zhí)行過(guò)程是:先計(jì)算布爾表達(dá)式的值,當(dāng)值為true時(shí),執(zhí)行循環(huán)體中的語(yǔ)句序列,然后重新計(jì)算布爾表達(dá)式的值,若仍為true則再執(zhí)行一遍循環(huán)體
While語(yǔ)句的特點(diǎn)是先判斷條件,當(dāng)條件為true才執(zhí)行。當(dāng)?shù)谝淮螚l件為false時(shí),循環(huán)次數(shù)為0
Repeat語(yǔ)句的執(zhí)行過(guò)程是:先執(zhí)行repeat到until之間的語(yǔ)句,然后計(jì)算布爾表達(dá)式的值,若為false,則再執(zhí)行repeat到until之間的語(yǔ)句,若為true則推出循環(huán)體
Break過(guò)程,可使程序的執(zhí)行流程立即退出該層循環(huán) Continue過(guò)程將使程序直接轉(zhuǎn)入下一次循環(huán) 2.7過(guò)程與函數(shù)
Procedure過(guò)程名(參數(shù)表)
Function函數(shù)名(參數(shù)表):返回?cái)?shù)據(jù)類型 過(guò)程由過(guò)程首部、局部聲明部分和過(guò)程體組成。函數(shù)由函數(shù)首部、局部聲明部分和函數(shù)體組成。
參數(shù)的傳遞如下:
1值參數(shù)聲明時(shí),形參前面無(wú)任何修飾
2變量參數(shù)聲明時(shí) 變參傳遞的是一個(gè)變量的地址,即實(shí)參把地址傳遞的是一個(gè)變量的地址,即實(shí)參把地址傳遞給變參,變參和實(shí)參指向的是同一地址空間。在過(guò)程和函數(shù)中對(duì)變參的修改直接影響實(shí)參 3常量參數(shù)聲明時(shí),形參的前面用保留字const修飾
過(guò)程和函數(shù)重裁是指定義多個(gè)名稱相同,而參數(shù)列表不同的過(guò)程和函數(shù)。編譯器根據(jù)調(diào)用時(shí)實(shí)參表中的參數(shù)個(gè)數(shù)和類型,自動(dòng)匹配一個(gè)重裁的過(guò)程或函數(shù)。重裁過(guò)程或函數(shù)使用默認(rèn)參數(shù)可能會(huì)導(dǎo)致二義性錯(cuò)誤 2.8程序與單元的結(jié)構(gòu) 單元結(jié)構(gòu): 1單元首部
2接口部分:定義的這些標(biāo)識(shí)符可以被引用該單元的程序訪問(wèn) 3實(shí)現(xiàn)部分:在實(shí)現(xiàn)部分定義的標(biāo)志符不能被其他單位或程序訪問(wèn) 4初始部分 5終結(jié)部分
2.9標(biāo)識(shí)符的作用域
標(biāo)識(shí)符的作用域是指其在程序中起作用的范圍。
單元中接口部分定義的標(biāo)識(shí)符包括數(shù)據(jù)類型,類,常數(shù),變量,過(guò)程和函數(shù)導(dǎo)等 他們?cè)谝迷搯卧某绦颍?xiàng)目文件,其他單元)中都可以被訪問(wèn)
第三章 Delphi中的面向?qū)ο?3.1面向?qū)ο蟪绦蛟O(shè)計(jì)概述
將具有相同屬性和行為的對(duì)象抽象為類,每個(gè)對(duì)象都屬于某個(gè)類。通過(guò)繼承關(guān)系構(gòu)成類的層次結(jié)構(gòu),子類可以直接繼承父類的性質(zhì)和功能。3.2類與對(duì)象
類是具有相同或相似屬性和行為的一組對(duì)象的共同描述,是對(duì)相似對(duì)象建立的模板。
對(duì)象由屬性和方法構(gòu)成。屬性是描述對(duì)象靜態(tài)特征的一組數(shù)據(jù)想:方法描述了該類對(duì)象動(dòng)態(tài)特征的一個(gè)操作序列,體現(xiàn)對(duì)象的行為特征或功能。定義類:type 類名=class 數(shù)據(jù)成員
成員函數(shù)或過(guò)程 End;
注意:在函數(shù)或過(guò)程名前必須帶有類名。Procedure Circle.Draw; 聲明對(duì)象一般形式為:var 對(duì)象名:類名; 訪問(wèn)對(duì)象成員:對(duì)象名.成員
構(gòu)造函數(shù)和析構(gòu)函數(shù)的定義,作用和特點(diǎn):
構(gòu)造函數(shù)是專用的創(chuàng)建對(duì)象和初始化對(duì)象的成員函數(shù)。定義時(shí)用保留字constructor,函數(shù)名通常為create。在定義的構(gòu)造函數(shù)中,不僅可以為類對(duì)象分配內(nèi)存空間,而且可以打開(kāi)文件或數(shù)據(jù)庫(kù)讀取數(shù)據(jù)或控制設(shè)備復(fù)位。析構(gòu)函數(shù)是專用的刪除對(duì)象和為對(duì)象進(jìn)行善后處理的成員函數(shù)。定義時(shí)用保留字destructor,函數(shù)名通常為Destroy。在析構(gòu)函數(shù)中,不僅可以釋放相應(yīng)的內(nèi)存資源,還可以保存數(shù)據(jù)信息,關(guān)閉文件或者數(shù)據(jù)庫(kù),控制設(shè)備復(fù)位并關(guān)機(jī)。3.3類成員的訪問(wèn)權(quán)限
封裝是把一組數(shù)據(jù)和與這組數(shù)據(jù)有關(guān)的操作集合組裝在一起,形成一個(gè)能動(dòng)的實(shí)體,也就是對(duì)象。
訪問(wèn)權(quán)限分為:private:私有數(shù)據(jù)成員、成員函數(shù)、過(guò)程。不能被類所在單元以外的程序訪問(wèn),但本單元是可見(jiàn)的。
Protected:保護(hù)??。被該類及該類的所有派生類訪問(wèn),并成為派生類的私有成員。
Public:共有??。被該類以外的類訪問(wèn)。
Published:公布??。在設(shè)計(jì)期間的對(duì)象觀察器窗口中可見(jiàn)。
Automated:自動(dòng)??。用于響應(yīng)對(duì)象鏈接與嵌入自動(dòng)化類型信息的公共接口。3.4繼承
繼承的實(shí)質(zhì)是在既有類的基礎(chǔ)上構(gòu)造新的類,即新類從一個(gè)或者多個(gè)已有類中繼承數(shù)據(jù)和方法,同時(shí)增加或重新定義數(shù)據(jù)和方法,由此構(gòu)造出一個(gè)新的類型,稱為派生類。已有的類稱為基類。繼承的主要目的是實(shí)現(xiàn)代碼的重用。派生類的定義:type 派生類=class(基類){派生類新增或改寫(xiě)部分} End;
派生類的構(gòu)造和析構(gòu)函數(shù):在派生類構(gòu)造函數(shù)的開(kāi)始部分,使用inherited保留字來(lái)調(diào)用基類的構(gòu)造函數(shù),首先初始化基類的成員,然后構(gòu)造派生類的特有成員。在派生類的析構(gòu)函數(shù)的結(jié)尾部分,使用inherited保留字來(lái)調(diào)用基類的析構(gòu)函數(shù),最后釋放基類的成員部分。
構(gòu)造函數(shù)越上層越早被調(diào)用,析構(gòu)函數(shù)越下層越早被調(diào)用。3.5多態(tài)性
多態(tài)性是指同一的操作,在不同的對(duì)象中具體實(shí)現(xiàn)過(guò)程不同。Object Pascal 支持兩種多態(tài)性和運(yùn)行時(shí)的多態(tài)性。編譯時(shí)的多態(tài)性通過(guò)重載來(lái)實(shí)現(xiàn),運(yùn)行時(shí)的多態(tài)性用虛方法來(lái)實(shí)現(xiàn)。
重載函數(shù)或者過(guò)程用保留字overload來(lái)說(shuō)明。例如:Function max(x:integer):integer;integer; 虛方法的定義如p79 虛方法與動(dòng)態(tài)方法的區(qū)別:在運(yùn)行時(shí)才能確定對(duì)象方法的調(diào)用地址,這種調(diào)用方法為動(dòng)態(tài)聯(lián)編。虛方法與動(dòng)態(tài)方法在功能上是等價(jià)的,不同在于虛方法額調(diào)用速度比較快,動(dòng)態(tài)方法的代碼比較少。
抽象類與抽象方法:使用指令字abstract說(shuō)明,則該方法稱為抽象方法,包含抽象方法的類稱為抽象類。定義:procedure 過(guò)程名;virtual;abstract;
第四章
4.1 VCL基礎(chǔ)
四種基本的組件類型:標(biāo)準(zhǔn)組件,自定義組件,圖形組件,非可視組件。圖形組件與標(biāo)準(zhǔn)組件的的區(qū)別在于:①標(biāo)準(zhǔn)組件可以獲得輸入焦點(diǎn),即可用Tab鍵依次獲得焦點(diǎn);圖形組件不能獲得輸入焦點(diǎn)。②標(biāo)準(zhǔn)組件可以包含其他組件,即可以是其他組件的父類;圖形組件不能包含其他組件。③標(biāo)準(zhǔn)組件具有一個(gè)WINDOWS句柄,圖形組件沒(méi)有WINDOWS句柄。
4.2窗體設(shè)計(jì)
窗體組件的屬性值設(shè)置為 組件名.屬性:=屬性值。重點(diǎn)看一下caption、visible、hint。
窗體的方法和事件詳見(jiàn)P91.4.3常用VCL組件
對(duì)于memo組件的編程填空要注意。列表框組件(listbox)的常用屬性見(jiàn)P104 4.4菜單設(shè)計(jì)
對(duì)菜單項(xiàng)可以指定其加速鍵,方法是在菜單項(xiàng)的Caption屬性中,在要作為加速鍵的字母前添加符號(hào)“&”,則運(yùn)行時(shí)該字母帶有下劃線,按下Alt+加速字母鍵就執(zhí)行此菜單項(xiàng)。
4.6對(duì)話框的使用
Showmessage過(guò)程:調(diào)用Showmessage過(guò)程會(huì)彈出一個(gè)簡(jiǎn)單的對(duì)話框,對(duì)話框上顯示提示信息及“確定”按鈕,單擊該按鈕,就關(guān)閉對(duì)話框。
Inputbox函數(shù):調(diào)用Inputbox函數(shù)顯示一個(gè)能夠接受喲娜防護(hù)輸入數(shù)據(jù)的對(duì)話框,并返回用戶輸入的數(shù)據(jù)值。
Inputquery函數(shù):與Inputbox函數(shù)最大的不同是他的返回值是一個(gè)邏輯值。
第五章 5.1程序調(diào)試
錯(cuò)誤的種類及處理方式:
1、語(yǔ)法錯(cuò)誤:沒(méi)有遵守語(yǔ)言的語(yǔ)法規(guī)則而產(chǎn)生。
2、運(yùn)行錯(cuò)誤:程序在執(zhí)行過(guò)程中發(fā)生了錯(cuò)誤。程序試圖打開(kāi)一個(gè)不存在的文件或試圖修改一個(gè)只讀文件,程序運(yùn)行過(guò)程中出現(xiàn)除零錯(cuò)誤或用戶輸入了非法數(shù)據(jù)等。
3、邏輯錯(cuò)誤:運(yùn)行的結(jié)果與設(shè)想的結(jié)果不同。
解決邏輯錯(cuò)誤可以從三步驟來(lái)解決:猜測(cè)出程序可能出錯(cuò)的地方,并在此設(shè)置斷點(diǎn)。讓程序執(zhí)行到斷點(diǎn)停止運(yùn)行,觀察所有中間變量及對(duì)象內(nèi)容。讓程序單步運(yùn)行,同時(shí)觀察每一個(gè)變量及對(duì)象內(nèi)容的變化。
事件變量和相關(guān)數(shù)據(jù)的值:提示文本,watch list窗口,evaluate 窗口。5.2異常保護(hù)和處理
1、異常保護(hù)與try?finally?end;語(yǔ)句 Try ? //被保護(hù)的代碼塊 Finally ? //處理語(yǔ)句 End;
2、響應(yīng)異常和try?except?end;語(yǔ)句 Try //以下為保護(hù)代碼塊 ?
If <異常條件> raise<異常對(duì)象> Except //以下為異常處理快
On <異常類1> do <處理過(guò)程1或語(yǔ)句1> On <異常類2> do <處理過(guò)程2或語(yǔ)句2> On ?
Else <其他處理過(guò)程或語(yǔ)句> End;
通過(guò)繼承類exception可以自定義新的異常類。
第6章 Delphi7與數(shù)據(jù)庫(kù)
6.1數(shù)據(jù)庫(kù)簡(jiǎn)介 數(shù)據(jù)庫(kù)可以長(zhǎng)期存儲(chǔ)、有組織、可共享的數(shù)據(jù)集合。
數(shù)據(jù)庫(kù)系統(tǒng)(database system,DBS)是指具有數(shù)據(jù)管理功能的計(jì)算機(jī)系統(tǒng)。它一般由數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)和應(yīng)用系統(tǒng)構(gòu)成。
數(shù)據(jù)庫(kù)系統(tǒng)根據(jù)的組織方式主要分為層次數(shù)據(jù)庫(kù)系統(tǒng)、網(wǎng)狀數(shù)據(jù)庫(kù)系統(tǒng)、關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)很面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)等幾類
Delphi支持關(guān)系型數(shù)據(jù)庫(kù),關(guān)系型數(shù)據(jù)庫(kù)由表組成。標(biāo)的定義了事物的一組屬性數(shù)據(jù),稱為記錄。表的列定義了事物的某種屬性,稱為字段。6.2 Delphi7的數(shù)據(jù)庫(kù)訪問(wèn)機(jī)制
Borland推出了一個(gè)數(shù)據(jù)庫(kù)引擎(borland database engine,BDE)BDE管理器(BDE Administrator)是設(shè)置和管理BDE的工具,它可以用來(lái)管理BDE中的數(shù)據(jù)庫(kù)別名和驅(qū)動(dòng)器。Datebase Desktop的使用:
1、定義數(shù)據(jù)庫(kù)別名
2、設(shè)置工作目錄及私有目錄
3、建立數(shù)據(jù)表結(jié)構(gòu)
4、保存數(shù)據(jù)表文件
5、建立索引(1)建立主索引(2)建立次索引
6、設(shè)置有效性檢查
7、設(shè)置口令
8、設(shè)置參照完整性
9、輸入部分?jǐn)?shù)據(jù)
數(shù)據(jù)庫(kù)游覽器可用于定義數(shù)據(jù)庫(kù)別名、查詢或編輯數(shù)據(jù)庫(kù)中的各類信息,如數(shù)據(jù)庫(kù)的參數(shù)設(shè)置、各類據(jù)表文件的結(jié)構(gòu)及數(shù)據(jù),也可以使用SQL語(yǔ)句進(jìn)行查詢 6.3數(shù)據(jù)庫(kù)組件
使用TTable組件連接并顯示數(shù)據(jù)表的一般步驟
1、把一個(gè)TTable組件放到窗體上
2、TableName屬性指定要訪問(wèn)的表
3、TDataSource組件放到窗體上,設(shè)置DataSet屬性指向該TTable組件
4、把數(shù)據(jù)控制組放到窗體上,設(shè)置TDataSource屬性指向該TDataSource組件
5、把TTable組件的Active屬性設(shè)為T(mén)rue Tablel.Fields[0].AsString:=Editl Edit.Text Editl.Text= Tablel Fields [0].AsString Editl.Text:= Tablel.FieldByName(‘Name’).AsString 當(dāng)表結(jié)構(gòu)改變引起字段索引號(hào)改變時(shí),就要修改相應(yīng)的程序,所以使用第二種方法比較好。
DataSet屬性:表明于當(dāng) 前數(shù)據(jù)源組件相聯(lián)系的數(shù)據(jù)集組件對(duì)象的名字
Enabled屬性:如果Enabled屬性值為T(mén)rue(默認(rèn)值),數(shù)據(jù)控制組件將顯示數(shù)據(jù):如果Enabled屬性值為False,則所有與此數(shù)據(jù)源組件相連的數(shù)據(jù)控制組件都將不顯示任何數(shù)據(jù)。
Columna屬性用于指定TDBGrid對(duì)象中各欄目的特征 6.4 TField對(duì)象的使用
動(dòng)態(tài)字段對(duì)象與永久字段對(duì)象的概念,區(qū)別,使用場(chǎng)合:Delphi會(huì)為數(shù)據(jù)中的每一個(gè)字段自動(dòng)生成一個(gè)動(dòng)態(tài)的字段對(duì)象。數(shù)據(jù)集的結(jié)構(gòu)和其他信息改變,當(dāng)應(yīng)用程序重新打開(kāi)這個(gè)數(shù)據(jù)集時(shí),就會(huì)基于最近的結(jié)構(gòu)和信息重建所有的字段對(duì)象。當(dāng)數(shù)據(jù)集關(guān)閉時(shí),這些對(duì)象也跟著取消。
動(dòng)態(tài)對(duì)象的最大特點(diǎn)是適應(yīng)性強(qiáng),缺點(diǎn)是要想改變字段的顯示屬性、數(shù)據(jù)格式就要編寫(xiě)代碼,不能把某些字段暫時(shí)隱去,也不能增加新的字段。
永久字段最大的好處是可以在設(shè)計(jì)時(shí)設(shè)置它的屬性??梢赃x擇部分字段,增加新的字段。再永久字段對(duì)象列表中刪除某些需要保護(hù)的字段,避免用戶訪問(wèn)這些字段;在數(shù)據(jù)庫(kù)查詢或特定數(shù)據(jù)表的字段基礎(chǔ)上定義新的字段,代替現(xiàn)存的字段;改變?cè)械淖侄蔚娘@示和編輯屬性。6.5 數(shù)據(jù)集的操作 數(shù)據(jù)集的打開(kāi)與關(guān)閉:
1、設(shè)置Active屬性 Table.Active:=True;//打開(kāi)數(shù)據(jù)集,數(shù)據(jù)集組件對(duì)數(shù)據(jù)表進(jìn)行讀寫(xiě)操作。Table.Active:=False;//關(guān)閉數(shù)據(jù)集,數(shù)據(jù)集組件不能對(duì)數(shù)據(jù)表進(jìn)行讀寫(xiě)操作。
2、調(diào)用Open和Close方法 Table1.Opene//打開(kāi)數(shù)據(jù)集和 Table1.Close//關(guān)閉數(shù)據(jù)集。移動(dòng)記錄指針:
1、Bof屬性:如果Bof為T(mén)rue,表明當(dāng)前記錄指針?biāo)幍奈恢脼閿?shù)據(jù)集的第一條記錄;反之,則不是第一條記錄。
2、Eof屬性:如果Eof為T(mén)rue,表明當(dāng)前記錄指針?biāo)幍奈恢脼閿?shù)據(jù)集的最后一天記錄;反之,則不為最后一條記錄。
3、First方法:將記錄指針移至數(shù)據(jù)集的第一條記錄處,并使之成為當(dāng)前記錄,同時(shí)將Bof屬性值設(shè)置為T(mén)rue。
4、Last方法:將記錄指針移至數(shù)據(jù)集最后一條記錄處,并使之成為當(dāng)前記錄,同時(shí)將Bof屬性設(shè)置為T(mén)rue。
5、Next方法:將記錄指針后移一條記錄,并使之成為當(dāng)前記錄。如果記錄指針指向了數(shù)據(jù)集的最后一條記錄,將Eof屬性設(shè)置為T(mén)rue。
6、Prior方法:將記錄指針前移一條記錄,并使之成為當(dāng)前記錄。如果記錄指針指向了數(shù)據(jù)集的第一條記錄,將Bof屬性設(shè)置為T(mén)rue。
7、MoveBy方法:將記錄指針從當(dāng)前記錄開(kāi)始向后或向前移動(dòng)若干條記錄。格式如下:function MoveBy(Distance:Integer):Integer;
限制記錄集:
1、SetRangeStart方法和SetRangeEnd方法可以過(guò)濾記錄。SetRangeStart方法用來(lái)限制記錄集的開(kāi)始,SetRangeEnd方法用來(lái)限制記錄集的結(jié)束,調(diào)用ApplyRange方法使限制生效,調(diào)用CancelRange方法取消為數(shù)據(jù)表設(shè)定的限制范圍。
2、使用數(shù)據(jù)集的Filter屬性
Filter屬性值是一個(gè)用來(lái)指明數(shù)據(jù)表過(guò)濾標(biāo)準(zhǔn)的字符串,F(xiàn)ilter屬性決定了過(guò)濾器是否起作用。
查找記錄:
1、使用FindKey方法。使用Table的FindKey方法或FindNearest方法。
2、搜索特定記錄(Locate)。FindKey或FindNearest方法只能在TTable組件中使用,如果使用的是TQuery或TStoreProc組件,就要使用Locate方法來(lái)查找記錄。Locate函數(shù)適合于所有數(shù)據(jù)集組件,也適合于TTable組件。AppendRecord方法與InsertRecord方法:這里兩個(gè)方法分別與Append方法與Insert方法相似,都是用于在表中插入一條新紀(jì)錄,但AppendRecord方法與InsertRecord方法比Append方法與Inser t方法更簡(jiǎn)單、更方便一些,不需要調(diào)用Post方法。過(guò)程形式如下:Procedure AppendRecord(Const Values:Array of Const);
Procedure InsertRecord(Const Values:Array of Const);
建立數(shù)據(jù)表的主從關(guān)系:設(shè)置表之間的主從關(guān)系是通過(guò)設(shè)置從表的MasterSource屬性和MasterField屬性來(lái)實(shí)現(xiàn)的,且從表必須按MasterField屬性中指定的字段建立了索引。
6.6TQuery組件
TQuery組件和TTable組件的比較:同屬于數(shù)據(jù)集組件。
不同之處為:TQuery組件主要功能是用來(lái)支持SQL語(yǔ)言訪問(wèn)本地或遠(yuǎn)程數(shù)據(jù)庫(kù);TQuery組件允許用戶同時(shí)訪問(wèn)多個(gè)表,而TTable組件一次只能訪問(wèn)一個(gè)表格;TQuery組件訪問(wèn)的是表格中的特定數(shù)據(jù)內(nèi)容,而TTable組件只有在提供過(guò)濾或限定檢索范圍時(shí)才能訪問(wèn)表格中的特定數(shù)據(jù)內(nèi)容,否則訪問(wèn)的將是表格中的全部數(shù)據(jù)。掌握P193 BDE綜合實(shí)例。
6.8 ADO技術(shù)
通過(guò)ADO不僅能夠訪問(wèn)基于SQL Server的所有數(shù)據(jù)庫(kù),而且可以通過(guò)ODBC訪問(wèn)所有支持ODBC的數(shù)據(jù)庫(kù)。
ODBC是一種采用開(kāi)放式結(jié)構(gòu)進(jìn)行數(shù)據(jù)庫(kù)鏈接的接口標(biāo)準(zhǔn),是一種開(kāi)放的獨(dú)立于廠商的API應(yīng)用程序接口。掌握P208 ADO應(yīng)用實(shí)例
第七章 Windows編程基礎(chǔ)
7.1動(dòng)態(tài)鏈接庫(kù)(DLL)
Windows允許同時(shí)運(yùn)行的多個(gè)程序共享一組函數(shù)的單一備份,于是引入了動(dòng)態(tài)鏈接方式,將可共享的程序代碼以及各種數(shù)據(jù)資源編譯成單獨(dú)的模塊。
一般項(xiàng)目的格式如下: Program 程序標(biāo)識(shí)符; Uses 單元列表; Begin 程序體; End.DLL項(xiàng)目文件的格式如下: Library 程序標(biāo)識(shí)符號(hào); Uses 單元列表;
Exports 過(guò)程和函數(shù)標(biāo)識(shí)符列表; Begin 程序體; End.兩者的區(qū)別的原因在于:Delphi編譯器是一句項(xiàng)目文件頭的保留字是Program還是Library來(lái)決定編譯生成的是EXE文件還是DLL文件。若DLL 要輸出共其他應(yīng)用程序調(diào)用的函數(shù)或過(guò)程,則需要在其項(xiàng)目文件的保留字exports之后一一列出,這些DLL函數(shù)或過(guò)程將被編譯成遠(yuǎn)程地址調(diào)用。
Window系統(tǒng)自身包含三個(gè)DLL,分別是Kernel,User,GD1。DLL調(diào)用必須使用標(biāo)準(zhǔn)方式,其一是靜態(tài)引用,其二是動(dòng)態(tài)引用。靜態(tài)引入:
加載引用的DLL文件是,庫(kù)文件的查找順序是:
1、當(dāng)前路徑;
2、Windows系統(tǒng)的安裝目錄;
3、Windows的系統(tǒng)目錄system和system32;
4、列在環(huán)境變量PATH中的路徑。
引入方法:
1、最簡(jiǎn)單的是名字引入;
2、使用索引引入;
3、若名字引入會(huì)引起標(biāo)識(shí)符沖突,可以使用換名引入。
第二篇:Delphi 字符串類型淺析
Delphi 字符串類型淺析 收藏
參考資料《Delphi 5開(kāi)發(fā)人員指南》“第2章Object Pascal語(yǔ)言” 《PASCAL精要》“第7章 字符串操作” “Delphi中String類型和Char類型的比較” “Object Pascal中String類型的內(nèi)幕探討”
基本知識(shí)字符串類型
?AnsiString這是Pascal缺省的字符串類型,它由AnsiChar字符組成,其長(zhǎng)度沒(méi)有限制,同時(shí)與null結(jié)束的字符串相兼容。
?ShortString保留該類型是為了向后兼容Delphi1.0,它的長(zhǎng)度限制在255個(gè)字符內(nèi)。
?WideString功能上類似于AnsiString,但它是由WideChar字符(UniCode字符集)組成的。引入這種類型,主要是為了支持OLE編程。
?PChar指向null結(jié)束的Char字符串的指針,類似于C的char*或lpstr類型。
?PAnsiChar指向null結(jié)束的AnsiChar字符串的指針。
?PWideChar指向null結(jié)束的WideChar字符串的指針。
字符類型
?AnsiChar,以 8 位表示(共有 256 個(gè)不同的符號(hào))。
?WideChar,以 16 位表示(共有 64,000 個(gè)不同的符號(hào))。
String類型
注意:以下是指Delphi2007以前的編譯器(包括Delphi2007)。
1、缺省情況下,如果用如下的代碼來(lái)定義字符串,編譯器認(rèn)為是AnsiString字符串: var
S:string;//編譯器認(rèn)為S的類型是AnsiString
2、編譯開(kāi)關(guān)$H
“$H編譯開(kāi)關(guān)”的值用來(lái)決定當(dāng)變量聲明為string時(shí),它是被當(dāng)作AnsiString類型還是被當(dāng)作ShortString類型。當(dāng)“$H”值為負(fù)時(shí),string變量是ShortString類型;當(dāng)“$H”值為正時(shí)(缺省情況),string變量是AnsiString類型。下面的代碼演示了這種情況: var
{$H-}
S1:string;//S1是ShortString類型 {$H+}
S2:string;//S2是AnsiString類型
使用$H規(guī)則的一個(gè)例外是,如果在定義時(shí)特地指定了長(zhǎng)度(最大在255個(gè)字符內(nèi)),那么總是ShortString。var
S:string[63];//63個(gè)字符的ShortString字符串
Char類型
1、Delphi2007以前的編譯器(包括Delphi2007)缺省情況下認(rèn)為Char是AnsiChar類型,PChar是PAnsiChar類型。
2、Delphi2009的編譯器缺省情況下認(rèn)為Char是WideChar類型,PChar是PWideChar類型。請(qǐng)注意,沒(méi)有任何方法可變更這個(gè)新的編譯器預(yù)設(shè)設(shè)定。對(duì)于字符串類型而言,會(huì)以固定的硬式編碼方式將 Char 類型對(duì)應(yīng)到特定的數(shù)據(jù)類型。
AnsiString類型
1、AnsiString是生存期自管理類型。
2、AnsiString字符串總是以null字符結(jié)束的,這使得AnsiString字符串能與Win32API中的字符串兼容。
3、AnsiString類型是一個(gè)指向在堆棧中的字符串結(jié)構(gòu)的指針??梢允褂肧izeof去讀取AnsiString類型的大小,不論字符串的實(shí)際長(zhǎng)度是多少,Sizeof(AString)永遠(yuǎn)是4。
4、AnsiString字符串在內(nèi)存中分配的情況 注意:
在Delphi2.0以后版本中,不能再通過(guò)字符串的第0個(gè)元素來(lái)設(shè)置或得到字符串的長(zhǎng)度,只能通過(guò)Length()函數(shù)來(lái)得到字符串的長(zhǎng)度,通過(guò)SetLength()過(guò)程來(lái)設(shè)置字符串的長(zhǎng)度。Borland并不保證String的內(nèi)存結(jié)構(gòu)在以后的Delphi版本中會(huì)保持不變。
(1)、Delphi5內(nèi)存結(jié)構(gòu)如下:
(2)、Delphi7內(nèi)存結(jié)構(gòu)如下:
AnsiString指向一塊內(nèi)存起始偏移8字節(jié)處,前面8字節(jié)依次為引用計(jì)數(shù)和長(zhǎng)度計(jì)數(shù)兩個(gè)整數(shù)。(3)、Delphi2009內(nèi)存結(jié)構(gòu)如下:-12-10-8-4
最后一位
字碼頁(yè)
字符大小
引用計(jì)數(shù)
字串長(zhǎng)度
字串內(nèi)容
0
除了字串長(zhǎng)度及引用計(jì)數(shù)外,新的AnsiString格式包括字符大小及字碼頁(yè)。字符大小可用來(lái)區(qū)分 AnsiString 及UnicodeString,而字碼頁(yè)特別適用于 AnsiString 類型(可用于 Delphi 2009),UnicodeString 類型的字碼頁(yè)則固定為 1200,字碼包括UTF-
8、GBK等,例如“$03A8就是936,查MSDN 936sizeof(StrRec));
showmessage(Format('分配大小:%d 引用計(jì)數(shù):%d 字串長(zhǎng)度:%d', [P.allocSiz,P.refCnt,P.length]));end;
示例:delphi7字符串內(nèi)存結(jié)構(gòu)
代碼:
procedure TForm1.Button1Click(Sender: TObject);type
PStrRec = ^StrRec;
StrRec = packed record
refCnt: Longint;
length: Longint;
end;var
str: string;
P: PStrRec;
begin
str:='123';
P := Pointer(Integer(str)sizeof(StrRec));
showmessage(Format('字碼頁(yè):%d 字符大小:%d 引用計(jì)數(shù):%d [P.codePage,P.elemSize,P.refCnt,P.length]));end;
示例:widestring的長(zhǎng)度
代碼:
字串長(zhǎng)度:%d', procedure TForm1.Button1Click(Sender: TObject);
//---
function _WStrLen1(const S: WideString): Integer;
begin
if Pointer(S)= nil then
Result := 0
else
Result := PInteger(Integer(S)-4)^ div sizeof(WideChar);
end;var
str: widestring;
begin
str := '測(cè)試123';
showmessage(Format('字串長(zhǎng)度:%d', [_WStrLen1(str)]));end;
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)http://blog.csdn.net/starsky2006/archive/2010/07/31/5778729.aspx
出處明:
第三篇:Delphi實(shí)習(xí)報(bào)告
實(shí)習(xí)報(bào) 告 書(shū) 專 用 紙
實(shí)習(xí)報(bào) 告 書(shū)
引言
題
目: Delphi 學(xué)
院:
專
業(yè): 地理信息系統(tǒng) 班
級(jí):
姓
名: 學(xué)
號(hào):
2013年
6月日
實(shí)習(xí)報(bào) 告 書(shū) 專 用 紙
娛樂(lè)場(chǎng)所信息查詢軟件,軟件界面設(shè)計(jì)簡(jiǎn)潔,美觀,其人性化的軟件流程,可以讓一般人方便的查詢娛樂(lè)場(chǎng)所,上手極易,不用打開(kāi)多個(gè)窗口可重復(fù)查詢。系統(tǒng)需求分析
根據(jù)用戶的需求,對(duì)本系統(tǒng)做整體的需求分析,這是保證系統(tǒng)有效性和實(shí)用性的前提。
2.1 功能需求分析
在設(shè)計(jì)本系統(tǒng)之前,作者與相關(guān)工作人員進(jìn)行了交流,并對(duì)此進(jìn)行了歸納提煉,得出建立一個(gè)娛樂(lè)場(chǎng)所信息查詢應(yīng)具備如下功能:
(1)娛樂(lè)場(chǎng)所信息查詢??梢詫?duì)任何一個(gè)娛樂(lè)場(chǎng)所的詳細(xì)信息進(jìn)行查詢,其中包括名稱、所處路名、ID等。
(2)娛樂(lè)場(chǎng)所所在地區(qū)的地圖顯示。(3)最短路徑的分析。(4)地圖打印。
2.2 數(shù)據(jù)需求
根據(jù)功能需求的要求,需要有一系列的數(shù)據(jù)來(lái)支撐,本系統(tǒng)需要的數(shù)據(jù)包括所處地區(qū)的地圖模板、道路信息、娛樂(lè)場(chǎng)所信息等 系統(tǒng)設(shè)計(jì)
為確保系統(tǒng)順利的實(shí)施,本系統(tǒng)遵循軟件工程原理和方法,對(duì)系統(tǒng)進(jìn)行總體設(shè)計(jì)和詳細(xì)設(shè)計(jì);其次,應(yīng)滿足先進(jìn)性原則,依照國(guó)際標(biāo)準(zhǔn),借鑒主流系統(tǒng)的體系結(jié)構(gòu),保證系統(tǒng)具有較長(zhǎng)的生命力和擴(kuò)展能力;此外,還應(yīng)滿足成熟性原則、實(shí)用性原則、高可靠性原則等。根據(jù)需求分析的結(jié)果,本著以上原則展開(kāi)對(duì)本系統(tǒng)的設(shè)計(jì)。
3.1 界面設(shè)計(jì)
為了界面設(shè)計(jì),增強(qiáng)系統(tǒng)的美觀性、靈活性,使系統(tǒng)易于操作,采用了很多優(yōu)秀的
實(shí)習(xí)報(bào) 告 書(shū) 專 用 紙
3.1.1 登錄界面
該系統(tǒng)需要輸入用戶名、密碼才可運(yùn)用,具有較好的保護(hù)性
3.1.2 關(guān)于界面
3.2 技術(shù)路線
本系統(tǒng)采用Embarcadero Delphi XE3作為開(kāi)發(fā)工具。Delphi,是Windows平臺(tái)下著名的快速應(yīng)用程序開(kāi)發(fā)工具,最早的版本由美國(guó)Borland(寶蘭)公司于1995年開(kāi)發(fā)。
實(shí)習(xí)報(bào) 告 書(shū) 專 用 紙
Delphi是一個(gè)集成開(kāi)發(fā)環(huán)境(IDE),使用的核心是由傳統(tǒng)Pascal語(yǔ)言發(fā)展而來(lái)的Object Pascal,以圖形用戶界面為開(kāi)發(fā)環(huán)境,通過(guò)集成開(kāi)發(fā)環(huán)境、VCL工具與編譯器,配合連結(jié)數(shù)據(jù)庫(kù)的功能,構(gòu)成一個(gè)以面向?qū)ο蟪绦蛟O(shè)計(jì)為中心的應(yīng)用程序開(kāi)發(fā)工具。
“真正的程序員用C,聰明的程序員用Delphi”,這句話是對(duì)Delphi最經(jīng)典、最實(shí)在的描述。Delphi最大的特點(diǎn)是簡(jiǎn)單易學(xué)、執(zhí)行高效而且功能強(qiáng)大。和Microsoft Visual Studio C++ 相比,Delphi更易于掌握,學(xué)習(xí)周期也比較短,而在功能上卻絲毫不遜色;而與Visual Basic相比,Delphi功能更強(qiáng)大、更實(shí)用,尤其在開(kāi)發(fā)數(shù)據(jù)庫(kù)方面,它的特點(diǎn)更是體現(xiàn)得淋漓盡致。這正是作者選用Delphi作為開(kāi)發(fā)工具的原因。
Delphi發(fā)展至今,從Delphi 1到現(xiàn)在的Delphi XE2,不斷添加和改進(jìn)各種特性,功能越來(lái)越強(qiáng)大。Delphi 2010內(nèi)置了Direct 2D模塊及開(kāi)發(fā)庫(kù),其新加的功能包括:○1○1支持64位Windows操作系統(tǒng)的開(kāi)發(fā);○2○2稱為FireMonkey的新的跨平臺(tái)框架;○3○3在Windows上開(kāi)發(fā),用來(lái)編譯Max OS X的交叉編譯器;④FireMonkey支持iOS(Apple iPad及iPhone)的開(kāi)發(fā);⑤LiveBindings的新的數(shù)據(jù)綁定功能,允許你將任何可視對(duì)象綁定到任何使用表達(dá)式的源對(duì)象。系統(tǒng)實(shí)現(xiàn)
4.1 概述
在完成了需求分析、系統(tǒng)設(shè)計(jì)和技術(shù)路線的選定后,按照前期工作的思路,逐步的實(shí)現(xiàn)商品管理系統(tǒng)。本系統(tǒng)以Delphi XE3為開(kāi)發(fā)環(huán)境,實(shí)現(xiàn)了連云港娛樂(lè)場(chǎng)所信息查詢功能。
4.2 功能模塊實(shí)現(xiàn)
4.2.1 登錄模塊
實(shí)習(xí)報(bào) 告 書(shū) 專 用 紙
操作部分核心代碼如下所示:
procedure TForm2.Button1Click(Sender: TObject);begin
ClientDataSet1.Close;ClientDataSet1
.CommandText
:='select
*
from
Table01
where name='''+edit1.Text+''' and “PASSWORDs” ='''+edit2.text+'''';ClientDataSet1.Open;if ClientDataSet1.RecordCount=0 then begin ShowMessage('口令錯(cuò)誤');end else begin ModalResult:=mrOk;end;end;4.2.2 圖層管理
實(shí)習(xí)報(bào) 告 書(shū) 專 用 紙
操作部分核心代碼如下所示:
procedure TForm1.FormCreate(Sender: TObject);var denglu: TForm2;begin pShpLayer := TGIS_LayerSHP.Create;pShpLayer.path := 'D:delphi連云港.shp';ttkViewer1.Add(pShpLayer);pShpLayer := TGIS_LayerSHP.Create;pShpLayer.path := 'D:delphi道路.shp';ttkViewer1.Add(pShpLayer);pShpLayer := TGIS_LayerSHP.Create;pShpLayer.path := 'D:delphi娛樂(lè).shp';pShpLayer.Params.Labels.Field := '名稱';pShpLayer.Params.Labels.color := clred;ttkViewer1.Add(pShpLayer);ttkViewer1.FullExtent;pShpLayer1 := ttkViewer1.items[0] as TGIS_LayerVector;pShpLayer2 := ttkViewer1.items[1] as TGIS_LayerVector;pShpLayer3 := ttkViewer1.items[2] as TGIS_LayerVector;denglu := TForm2.Create(Self);denglu.showmodal;
實(shí)習(xí)報(bào) 告 書(shū) 專 用 紙
denglu.Free;end;4.2.3 圖層的放大縮小(1)點(diǎn)擊縮放
操作部分核心代碼如下所示
procedure TForm1.Button2Click(Sender: TObject);begin ttkViewer1.mode := giszoomex;end;
(2)點(diǎn)擊暫??s放
操作部分核心代碼如下所示:
procedure TForm1.Button3Click(Sender: TObject);begin ttkViewer1.mode := gisSelect;end;4.2.4點(diǎn)擊地圖平移
實(shí)習(xí)報(bào) 告 書(shū) 專 用 紙
操作部分核心代碼如下所示:
procedure TForm1.Button5Click(Sender: TObject);begin ttkViewer1.mode := gisdrag;end;4.2.5點(diǎn)擊屬性查詢
實(shí)習(xí)報(bào) 告 書(shū) 專 用 紙
操作部分核心代碼如下所示:
procedure TForm1.Button4Click(Sender: TObject);begin ttkViewer1.mode := gisSelect;end;4.2.6路名顯示 點(diǎn)擊路名顯示
操作部分核心代碼如下所示:
procedure TForm1.Button8Click(Sender: TObject);begin pShpLayer1.Params.Labels.Visible := false;pShpLayer3.Params.Labels.Field := '名稱';pShpLayer2.Params.Labels.Field := '路名';ttkViewer1.FullExtent;end;4.2.7最短路徑分析 點(diǎn)擊最短路徑查詢
實(shí)習(xí)報(bào) 告 書(shū) 專 用 紙
操作部分核心代碼如下所示:
procedure TForm1.Button6Click(Sender: TObject);var ii, jj: Integer;I: Integer;aa, bb: string;begin presultlayer := TGIS_LayerVector.Create;presultlayer.CS := ttkViewer1.CS;presultlayer.Params.Line.color := clred;presultlayer.Params.Line.Width := 40;presultlayer.HideFromLegend := True;ttkViewer1.Add(presultlayer);
proadlayer := ttkViewer1.Items[1] as TGIS_LayerVector;
pgeocoding := tgis_geocoding.Create(proadlayer);pgeocoding.RoadName := 'GIS_UID';(ttkViewer1.Get('TGIS_Geocoding')
as
實(shí)習(xí)報(bào) 告 書(shū) 專 用 紙
TGIS_LayerVector).HideFromLegend := True;
pshortespath := TGIS_ShortestPath.Create(ttkViewer1);pshortespath.LoadTheData(proadlayer);pshortespath.RoadName := 'GIS_UID ';pshortespath.UpdateTheData;pshape := proadlayer.FindFirst(proadlayer.Extent, '路名=''' + Edit1.Text + '''');aa := pshape.GetField('gis_uid');ii := pgeocoding.Parse(aa);if ii > 0 then begin pstartpoint := pgeocoding.Point[0];Edit1.Text := pgeocoding.Query[0];pgeocoding.AddPoint(pstartpoint, 3 / ttkViewer1.Zoom, nil);end else begin ShowMessage(Edit1.Text + ' 是無(wú)效地名');Exit;end;
pshape := proadlayer.FindFirst(proadlayer.Extent, '路名=''' + Edit2.Text + '''');bb := pshape.GetField('gis_uid');jj := pgeocoding.Parse(bb);if jj > 0 then begin pstoppoint := pgeocoding.Point[0];Edit2.Text := pgeocoding.Query[0];pgeocoding.AddPoint(pstoppoint, 3 / ttkViewer1.Zoom, nil);end else
實(shí)習(xí)報(bào) 告 書(shū) 專 用 紙
begin ShowMessage(Edit2.Text + ' 是無(wú)效地名');Exit;end;
pshortespath.UpdateTheData;if pshortespath.Find(pstartpoint, pstoppoint)then begin presultlayer.RevertAll;for I := 0 to pshortespath.ItemsCount-1 do begin pshape pshortespath.Items[I].Layer.GetShape(pshortespath.Items[I].Uid);if pshape <> nil then presultlayer.AddShape(pshape);end;ttkViewer1.VisibleExtent := presultlayer.Extent;ttkViewer1.Zoom := ttkViewer1.Zoom * 0.8;ttkViewer1.Update;end else begin ShowMessage(' 此路不通 ');end;end;4.2.8打印 點(diǎn)擊打印
:=
實(shí)習(xí)報(bào) 告 書(shū) 專 用 紙
操作部分核心代碼如下所示:
procedure TForm1.Button9Click(Sender: TObject);begin ttksimple.preview;end;4.2.9定點(diǎn)查詢 點(diǎn)擊定點(diǎn)查詢
操作部分核心代碼如下所示:
procedure TForm1.Button1Click(Sender: TObject);var pshape: TGIS_Shape;
實(shí)習(xí)報(bào) 告 書(shū) 專 用 紙
pLayer: TGIS_LayerVector;begin pLayer := ttkViewer1.items[2] as TGIS_LayerVector;pshape := pLayer.FindFirst(pLayer.Extent, '名稱=''' + Edit3.Text + '''');if pshape <> nil then begin ttkViewer1.Center := pshape.Centroid;pshape := pshape.MakeEditable;pshape.IsSelected := true;ttkattrib.ShowShape(pshape);ttkattrib.Visible := true;ttkViewer1.Update;end;end;4.2.9關(guān)于模板
4.3 系統(tǒng)功能及效率分析
經(jīng)過(guò)測(cè)試,系統(tǒng)總體的執(zhí)行效率比較高。能夠滿足用戶的基本要求??偨Y(jié)
本論文主要是探討娛樂(lè)場(chǎng)所信息查詢服務(wù)的設(shè)計(jì)與實(shí)現(xiàn)問(wèn)題。在系統(tǒng)設(shè)計(jì)之初,盡管作者做了調(diào)查,但依然缺少足夠的管理方面的經(jīng)驗(yàn),在結(jié)構(gòu)和功能方面尚有考慮不到的地方。
第四篇:delphi 日常語(yǔ)法總結(jié)
Delphi總結(jié)
目錄
Delphi總結(jié).......................................................................................................................................1
1:控件只能輸入數(shù)字................................................................................................................1 2:下拉框賦值............................................................................................................................1 3:初始化Cell.............................................................................................................................2 4:注冊(cè)Cell.................................................................................................................................2 5:華表居中 華表增加,刪除某一行......................................................................................2 6:設(shè)置增刪改查按鈕狀態(tài)........................................................................................................2 7:主鍵獲取方法........................................................................................................................3 8:獲取多條,返回容器............................................................................................................3 9:保存
修改
刪除
方法....................................................................................................4 10:遍歷下拉框的值..................................................................................................................5 11: TDBGridEh增加,修改后定位到某個(gè)..............................................................................5 12::json封裝,解析.................................................................................................................5 12:導(dǎo)出Excel文件(TsaveDialog控件).....................................................................................7 13:判斷奇偶數(shù)分別插入不同位置..........................................................................................7
14:從一個(gè)目錄復(fù)制文件到另一個(gè)目錄,刪除文件......................................................8
15:從下拉框多個(gè)值獲取ID.....................................................................................................8
16:Delphi 格式化日期.....................................................................................................8 17:華表某一列求和..........................................................................................................8
1:控件只能輸入數(shù)字
if not(key in ['0'..'9', #8])then key := #0;2:下拉框賦值
procedure TSickDistrtionsFrm.SetDoct();var
obj: TDoctInfoClass;
DoctInfo: THis_DoctInfo;
idx: Integer;begin
inherited;
obj := TDoctInfoClass.Create;
obj.GetAllDoctDB();
for idx := 0 to obj.iteminfo.Count1, cl1.Rows1, cl1.Rows1 do
begin
DoctInfo := THis_DoctInfo(cbbzgys.Items.Objects[idx]);
if DoctInfo.sDoct_ID + '.' + DoctInfo.sDoct_Name = BedDistrtion.sDirectorDoct then
begin
cbbzgys.ItemIndex := idx;
end;
end;11: TDBGridEh增加,修改后定位到某個(gè)
adors.Locate('sMlbm', CatalogueInfo.sMlbm, [loCaseInsensitive]);
12::json封裝,解析
Var
jo, jo1, jt, jfields: ISuperObject;//封裝明細(xì)
jo := SO();jt := SA([]);for idw := 0 to TJXMBInfo.iteminfo.Count1 do
begin
TJXMBInfo := TB_TJXMBInfo.Create;
TJXMBInfo.sbz := tt.O[i].s['sbz'];
TJXMBInfo.sxmmc := tt.O[i].S['mc'];
TJXMBInfo.sxmbh := tt.O[i].S['bh'];
TJXMBInfo.sKebh := tt.O[i].S['sKebh'];//
TJXMBInfo.sxmmx:= tt.O[i].S['sxmmx'];
TJXMBInfo.nxmjg := tt.O[i].d['XMJG'];
iteminfo.Add(TJXMBInfo);
end;
end
else
begin
TJXMBInfo := TB_TJXMBInfo.Create;
TJXMBInfo.sbz := jo.O['list'].s['sbz'];
TJXMBInfo.sxmmc := jo.O['list'].S['mc'];
TJXMBInfo.sxmbh := jo.O['list'].S['bh'];//
TJXMBInfo.sxmmx := jo.O['list'].S['sxmmx'];
TJXMBInfo.sKebh := jo.O['list'].S['sKebh'];
TJXMBInfo.nxmjg := jo.O['list'].d['XMJG'];
iteminfo.Add(TJXMBInfo);
end;
end;end;12:導(dǎo)出Excel文件(TsaveDialog控件)
{導(dǎo)出Excel }
if SaveDialog1.Execute then
begin
{命令執(zhí)行}
{獲取文件名}
Cell1.DoExportExcelFile(SaveDialog1.FileName);
end;13:判斷奇偶數(shù)分別插入不同位置
for idx := 0 to PhyData.iteminfo.Count-1 do
begin
TJXMBjson := TB_TJXMBInfo(PhyData.iteminfo.Items[idx]);
if idx mod 2 = 0 then
//偶數(shù)
begin
row1 := row1 + 1;
cl1.DoSetCellData(0, row1, '□' + TJXMBjson.sxmmc);
cl1.DoSetCellTextStyle(0, row1, 1);
cl1.DoSetRowHeight(row1, cl1.DoGetRowBestHeight(row1)+ 15);
end
else if idx mod 2 = 1 then
//奇數(shù)
判斷列增加
begin
cl1.DoSetCellData(2, row1, '□' + TJXMBjson.sxmmc);
cl1.DoSetCellTextStyle(2, row1, 1);
cl1.DoSetRowHeight(row1, cl1.DoGetRowBestHeight(row1)+ 15);
end;
for idxC := 0 to 4 do
begin
cl1.DoSetCellAlignment(idxC, row1, 32);//居中顯示
end;
end;,14:從一個(gè)目錄復(fù)制文件到另一個(gè)目錄,刪除文件
CopyFile(PChar('D:A***920001X.xml'), PChar('D:B***920001X.xml'), false);
DeleteFile('D:B***920001X.xml');
15:從下拉框多個(gè)值獲取ID aInfo.sOpid :=THis_UserInfo(cbbczy.Items.Objects[cbbczy.ItemIndex]).sUser_ID;
16:Delphi 格式化日期
formatdatetime('yyyy-mm-dd',now);17:華表某一列求和
cl1.DoSetFormula(1, fpirow, 'sum(B' + IntToStr(3)+ ':B' + IntToStr(fpirow)+ ')');
第五篇:delphi糧庫(kù)監(jiān)控系統(tǒng)開(kāi)題報(bào)告
delphi糧庫(kù)監(jiān)控系統(tǒng)開(kāi)題報(bào)告.txt心若無(wú)塵,一花一世界,一鳥(niǎo)一天堂。我曾經(jīng)喜歡過(guò)你,現(xiàn)在我依然愛(ài)你希望月亮照得到的地方都可以留下你的笑容那些飄滿雪的冬天,那個(gè)不帶傘的少年,那句被門(mén)擋住的誓言,那串被雪覆蓋的再見(jiàn)delphi糧庫(kù)監(jiān)控系統(tǒng)開(kāi)題報(bào)告畢業(yè)設(shè)計(jì)(論文)題目基于C/S結(jié)構(gòu)的糧庫(kù)監(jiān)控系統(tǒng)設(shè)計(jì)
設(shè)計(jì)(研究)內(nèi)容和意義:
一、開(kāi)發(fā)語(yǔ)言說(shuō)明:
Delphi是Borland公司開(kāi)發(fā)的一組基于VCL庫(kù)的可視化開(kāi)發(fā)工具,它在組件技術(shù)的支持、數(shù)據(jù)庫(kù)支持、系統(tǒng)底層開(kāi)發(fā)支持、網(wǎng)絡(luò)開(kāi)發(fā)支持、面向?qū)ο筇匦缘雀鞣矫娑加邢喈?dāng)不錯(cuò)的表現(xiàn),并且學(xué)習(xí)使用較為容易,充分體現(xiàn)了所見(jiàn)即所得的可視化開(kāi)發(fā)方法,開(kāi)發(fā)效率高。它也繼承了該公司一貫以來(lái)的優(yōu)良傳統(tǒng),代碼執(zhí)行效率高。Delphi 的VCL庫(kù)是基于Object Pascal(面向?qū)ο驪ascal),語(yǔ)法較為靈活,使用也較為廣泛。
二、開(kāi)發(fā)本系統(tǒng)的目的及其對(duì)于糧庫(kù)監(jiān)控的意義
糧食是關(guān)系國(guó)計(jì)民生的重要戰(zhàn)略物資,吃飯始終是人類賴以生存和社會(huì)穩(wěn)定的頭等大事,保持糧食科學(xué)倉(cāng)儲(chǔ)和流通至關(guān)重要,尤其是我國(guó)糧食總體上豐收年份少、欠收年份多,我國(guó)還有數(shù)千萬(wàn)群眾的溫飽問(wèn)題尚未解決,我們必須居安思危,做好儲(chǔ)糧保糧工作,將糧食儲(chǔ)備過(guò)程中的損失減少到最低。
建國(guó)50年來(lái),糧食倉(cāng)儲(chǔ)和流通設(shè)施建設(shè)取得了很大成績(jī),糧食倉(cāng)儲(chǔ)規(guī)模比1949年的750萬(wàn)噸增加了20多倍。以糧食主產(chǎn)區(qū)和主銷區(qū)為重點(diǎn),在全國(guó)鐵路、水路和公路干線的樞紐地點(diǎn),初步形成了各種規(guī)模、多種倉(cāng)型和多中儲(chǔ)運(yùn)方式相結(jié)合的糧食倉(cāng)儲(chǔ)和流通網(wǎng)絡(luò),解決了部分國(guó)家糧食收儲(chǔ)和供應(yīng)的需要,但國(guó)內(nèi)的倉(cāng)儲(chǔ)形勢(shì)仍舊非常嚴(yán)峻。因此,國(guó)家隊(duì)這種情況非常重視,由朱容基總理親自抓糧食儲(chǔ)備工作,投入二千億元建設(shè)國(guó)儲(chǔ)糧倉(cāng),同時(shí)國(guó)際農(nóng)業(yè)組織又通過(guò)世界銀行為我國(guó)提供無(wú)償貸款,用以支持東北走廊糧食中轉(zhuǎn)庫(kù)和吸納庫(kù)的建設(shè)工作。在這種情況下,開(kāi)發(fā)一個(gè)結(jié)合現(xiàn)代計(jì)算機(jī)技術(shù)、控制技術(shù)、圖形技術(shù)的糧庫(kù)監(jiān)控系統(tǒng),可以簡(jiǎn)化糧食存儲(chǔ)管理過(guò)程,保障糧食的安全,減少人力,提高效率,這對(duì)于推進(jìn)糧庫(kù)管理的現(xiàn)代化將具有非常重要的作用。
本系統(tǒng)基于C/S結(jié)構(gòu),是一種分布式計(jì)算機(jī)控制系統(tǒng)。它的實(shí)質(zhì)是利用計(jì)算機(jī)技術(shù)對(duì)生產(chǎn)過(guò)程進(jìn)行集中監(jiān)控、操作、管理和分散控制的一種新型的控制技術(shù)。DCS是由計(jì)算機(jī)技術(shù)、信號(hào)處理技術(shù)、測(cè)量控制技術(shù)、網(wǎng)絡(luò)通信技術(shù)和人機(jī)接口技術(shù)相互發(fā)展和滲透而產(chǎn)生的。它既不同于分散的儀表控制系統(tǒng),又不同于集中式計(jì)算機(jī)控制系統(tǒng),它是吸收了兩者的優(yōu)點(diǎn),在它們的基礎(chǔ)上發(fā)展起來(lái)的一門(mén)系統(tǒng)工程技術(shù),具有很強(qiáng)的生命力和顯著的優(yōu)越性。
儲(chǔ)糧管理現(xiàn)代化是當(dāng)前糧食系統(tǒng)改造的重大項(xiàng)目之一,貯糧管理現(xiàn)代化能及時(shí)檢測(cè)、保存?zhèn)€糧倉(cāng)的糧情信息(如糧溫、糧濕等),對(duì)于安全儲(chǔ)糧、歷史數(shù)據(jù)查詢、分析得出儲(chǔ)糧普遍規(guī)律都有積極的作用;對(duì)改變?cè)缙诩Z情信息檢測(cè)手工作業(yè)效率低,勞動(dòng)強(qiáng)度大以及降低儲(chǔ)糧成本有明顯的作用。就項(xiàng)目初步在一個(gè)糧庫(kù)的實(shí)施情況看,大大減少了人力。既能產(chǎn)生一定期的經(jīng)濟(jì)效益,也具有重大的社會(huì)效益。
三、系統(tǒng)功能實(shí)現(xiàn)
①系統(tǒng)自動(dòng)連接數(shù)據(jù)庫(kù)并初始化
②系統(tǒng)根據(jù)數(shù)據(jù)庫(kù)中的倉(cāng)房貨位配置表建立系統(tǒng)目錄列表結(jié)構(gòu);
③用戶選擇需要的倉(cāng)房貨位進(jìn)行實(shí)時(shí)監(jiān)控;
④用戶選擇特定的倉(cāng)房貨位進(jìn)行危糧監(jiān)控;
⑤用戶設(shè)置測(cè)溫點(diǎn)具體信息;
⑥系統(tǒng)定時(shí)自動(dòng)保存最新數(shù)據(jù)到數(shù)據(jù)庫(kù);
⑦用戶查詢需要的數(shù)據(jù)生成圖表或報(bào)表并進(jìn)行打?。?/p>
⑧用戶配置系統(tǒng)基礎(chǔ)信息。
四、設(shè)計(jì)方法和步驟:
根據(jù)當(dāng)前Delphi技術(shù)發(fā)展趨勢(shì),分析情況,討論合適的架構(gòu)設(shè)計(jì)方案,并且根據(jù)系統(tǒng)的規(guī)劃情況設(shè)計(jì)數(shù)據(jù)庫(kù)(采用SQL SERVER 2000),同時(shí)選擇合適的Delphi第三方控件作為輔助開(kāi)發(fā)工具。開(kāi)發(fā)過(guò)程完全按照軟件工程的流程合理的安排每個(gè)工作步驟,協(xié)調(diào)組員,增強(qiáng)組員間的聯(lián)系和溝通。要求有完整的注釋和工作文檔資料。按時(shí)完成任務(wù),然后經(jīng)過(guò)系統(tǒng)的測(cè)試最后發(fā)布程序。在開(kāi)發(fā)過(guò)程中要注意本系統(tǒng)精髓的體現(xiàn):C/S三層結(jié)構(gòu),系統(tǒng)動(dòng)態(tài)初始化,實(shí)時(shí)監(jiān)控,操作簡(jiǎn)便。只有立足于這幾點(diǎn),本系統(tǒng)才算真正成功。
第一步:搭建系統(tǒng)架構(gòu),明確要實(shí)現(xiàn)的功能;
第二步:深入學(xué)習(xí)Delphi的知識(shí),以使既定系統(tǒng)功能得到全面的實(shí)現(xiàn);
第三步:分配任務(wù),具體實(shí)現(xiàn);
第四步:各功能模塊進(jìn)行單元測(cè)試;
第四步:結(jié)合各部分功能模塊,進(jìn)行系統(tǒng)合成;
第五步:系統(tǒng)測(cè)試。
設(shè)計(jì)(研究)方案和進(jìn)度安排:
設(shè)計(jì)(研究)方案:
本系統(tǒng)主要研究基于C/S結(jié)構(gòu)的監(jiān)控系統(tǒng),首先,為了避免C/S結(jié)構(gòu)客戶端龐大的缺陷發(fā)揮其優(yōu)勢(shì),決定采用MIDAS技術(shù)將系統(tǒng)C/S結(jié)構(gòu)轉(zhuǎn)變?yōu)閹в袘?yīng)用服務(wù)器層的三層機(jī)構(gòu),使表達(dá)層與業(yè)務(wù)邏輯層分離,實(shí)現(xiàn)瘦客戶端;其次,為了開(kāi)發(fā)出一個(gè)務(wù)實(shí)的系統(tǒng),能夠確實(shí)的對(duì)糧庫(kù)管理發(fā)揮出作用,提高糧庫(kù)管理的效率,增加糧食的安全,在系統(tǒng)設(shè)計(jì)前進(jìn)行了充分的調(diào)研和分析,主要把系統(tǒng)分為實(shí)時(shí)數(shù)據(jù)處理和歷史數(shù)據(jù)處理兩部分,分別滿足用戶對(duì)糧情實(shí)時(shí)監(jiān)控以及對(duì)歷史數(shù)據(jù)分析總結(jié)的需要。
進(jìn)度安排:
第一階段:1月13日——3月6日
主要任務(wù):熟悉Delphi的集成開(kāi)發(fā)環(huán)境,編寫(xiě)一些初級(jí)程序并實(shí)現(xiàn)其功能;
熟悉SQL SERVER 2000,能建立數(shù)據(jù)庫(kù)和數(shù)據(jù)表;
在Delphi環(huán)境中熟練對(duì)數(shù)據(jù)庫(kù)的基本操作功能;
完成二篇與計(jì)算機(jī)專業(yè)有關(guān)的英文期刊文章的翻譯。
第二階段:3月7日——3月21日
主要任務(wù):市場(chǎng)調(diào)研,去至少二個(gè)省屬或市屬的糧庫(kù)了解實(shí)際需求;
查找有關(guān)文獻(xiàn)資料,完成文獻(xiàn)綜述;
提出糧庫(kù)監(jiān)控系統(tǒng)的需求分析,擬定功能模塊和開(kāi)發(fā)提綱;
完成畢業(yè)設(shè)計(jì)開(kāi)題報(bào)告。
第三階段:3月22日——4月22日
主要任務(wù):系統(tǒng)架構(gòu)并完成數(shù)據(jù)庫(kù)設(shè)計(jì);
根據(jù)系統(tǒng)需求及功能模塊,設(shè)計(jì)后臺(tái)軟件的功能框架和主界面;
完成前臺(tái)實(shí)時(shí)數(shù)據(jù)處理部分的軟件開(kāi)發(fā);
完成其他附屬功能中的一部分軟件開(kāi)發(fā);
第四階段:4月23日——5月10日
完成其他附屬功能中的剩余部分軟件開(kāi)發(fā);
整合各功能模塊,以達(dá)到界面整合的目的。
測(cè)試并修改各功能程序,直至完整地實(shí)現(xiàn)系統(tǒng)功能。
測(cè)試整個(gè)系統(tǒng)的運(yùn)行,對(duì)功能進(jìn)行補(bǔ)充、修改
第五階段:5月11日?——5月16日
主要任務(wù):完善整個(gè)監(jiān)控系統(tǒng)既定的全部功能;
進(jìn)行二次測(cè)試,提高軟件系統(tǒng)的健壯性。
第六階段:5月17日?——6月初
主要任務(wù):整理文檔資料,撰寫(xiě)畢業(yè)設(shè)計(jì)論文;準(zhǔn)備答辯。
主要參考文獻(xiàn)資料:
[1]楊叔子, 史鐵林, 李東曉.分布式監(jiān)測(cè)診斷系統(tǒng)的開(kāi)發(fā)與設(shè)計(jì)[J].振動(dòng)、測(cè)試與診斷, 1997, 17(1):1-6.[2]NicholsH.M.C., BernardC.B., avid M.H..Remote Instrument Diagnosis on the Internet [J].IEEE Intelligent System, 1998,(5):70-76
[3]劉藝.Delphi第三方控件使用大全.中國(guó)水利水電出版社[M], 2001.1.[4]李之明, 高玉琢.DELPHI 7組件經(jīng)典解析[M].中國(guó)鐵道出版社, 2003.6.[5]飛思科技產(chǎn)品研發(fā)中心.DELPHI 7 組件及分布式應(yīng)用開(kāi)發(fā)[M].電子工業(yè)出版社, 2003.1.[6]Raghu Ramakrishnan, Johannes Gehrke.DATABASE MANAGEMENT SYSTEMS [M].清華大學(xué)出版社, 2002.12.[7]David Sceppd.ADO PROGRAM TECHNOLOGY [M].清華大學(xué)出版社, 2001.1.[8]柳樹(shù)春.基于Web 3-Tier客戶、服務(wù)器體系的應(yīng)用系統(tǒng)開(kāi)發(fā)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用, 2004.[9]楊秀金.面向?qū)ο蠹夹g(shù)與安全儲(chǔ)糧決策分析系統(tǒng)推理[J].微機(jī)發(fā)展, 1999,(4):60~63
[10]李時(shí)惠.計(jì)算機(jī)多點(diǎn)溫度采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與自動(dòng)化, 2001, 20(1):71~74
[11]Roger S.Pressman.Software Engineering:A Practitioner’s Approach[M].機(jī)械工業(yè)出版社, 2005.7.