當前位置:首頁 » 軟體設計 » delphi程序設計

delphi程序設計

發布時間: 2020-12-02 09:12:51

❶ Delphi程序設計是什麼

Pascal語言 & Delphi

優點
(1)Pascal語言結構嚴謹,可以很好地培養一個人的編程思想。
(2)Delphi是一門真正的面向對象的開發工具,並且是完全的可視化。
(3)Delphi使用了真編譯,可以讓你的代碼編譯成為可執行的文件,而且編譯速度非常快。
(4)Delphi具有強大的資料庫開發能力,可以讓你輕松地開發資料庫。

缺點
Delphi幾乎可以說是完美的,只是Pascal語言的過於嚴謹讓人感覺有點煩。

Pascal語言簡介

Delphi這個名字源於古希臘的城市名。它集中了第三代語言的優點。以Object Pascal為基礎,擴充了面向對象的能力,並且完美地結合了可視化的開發手段。Delphi自1995年3 月一推出就受到了人們的關注,並在當年一舉奪得了多項大獎。

Delphi的出現打破了V承可視化編程領域一統天下的局面。並且Delphi使用了本地編譯器直接生成技術,使程序的執行性能遠遠高於其它產品生成的程序。它還是真正的面向對象的編程語言。PASCAL語言的嚴謹加上可視化的優勢和強大的資料庫功能使得它有充分的資本和微軟的VB叫板。許多人當時都認為Pascal 是最有前途的程序設計語言,並預測Delphi將會成為可視化編程的主流環境。

Delphi在你編好程序後自動轉換成.EXE文件它運行時速度比VB快,而且編譯後不需要其他的支持庫就能運行。它的資料庫功能也挺強的,是開發中型資料庫軟體理想的編程工具。 Delphi適用於應用軟體、資料庫系統、系統軟體等類型的開發。而且它擁有和VB差不多一樣的功能,而且一樣能應用API函數,這在控制Windows很有用。

Delphi是全新的可視化編程環境,為我們提供了一種方便、快捷的Windows應用程序開發工具。它使用了Microsoft Windows圖形用戶界面的許多先進特性和設計思想,採用了彈性可重復利用的完整的面向對象程序語言(Object-Oriented Language)、當今世界上最快的編輯器、最為領先的資料庫技術。對於廣大的程序開發人員來講,使用Delphi開發應用軟體,無疑會大大地提高編程效率,而且隨著應用的深入,您將會發現編程不再是枯燥無味的工作——Delphi的每一個設計細節,都將帶給您一份欣喜。

Delphi的基本形式

Delphi實際上是Pascal語言的一種版本,但它與傳統的Pascal語言有天壤之別。一個Delphi程序首先是應用程序框架,而這一框架正是應用程序的「骨架」。在骨架上即使沒有附著任何東西,仍可以嚴格地按照設計運行。您的工作只是在「骨架」中加入您的程序。預設的應用程序是一個空白的窗體(form),您可以運行它,結果得到一個空白的窗口。這個窗口具有Windows窗口的全部性質:可以被放大縮小、移動、最大最小化等,但您卻沒有編寫一行程序。因此,可以說應用程序框架通過提供所有應用程序共有的東西,為用戶應用程序的開發打下了良好的基礎。

Delphi已經為您做好了一切基礎工作——程序框架就是一個已經完成的可運行應用程序,只是不處理任何事情。您所需要做的,只是在程序中加入完成您所需功能的代碼而已。 在空白窗口的背後,應用程序的框架正在等待用戶的輸入。由於您並未告訴它接收到用戶輸入後作何反應,窗口除了響應Windows的基本操作(移動、縮放等)外,它只是接受用戶的輸入,然後再忽略。Delphi把Windows編程的回調、句柄處理等繁復過程都放在一個不可見的Romulam覆蓋物下面,這樣您可?/td>

❷ Delphi用的是什麼編程語言

ide環境語言
delphi
擁有一個可視化的集成開發環境(ide),
(1)直接編譯生成可執行代碼,編譯速度快。由於delphi編譯器採用了條件編譯和選擇鏈接技術,使用它生成的執行文件更加精煉,運行速度更快。在處理速度和存取伺服器方面,delphi的性能遠遠高於其他同類產品。
(2)支持將存取規則分別交給客戶機或伺服器處理的兩種方案,而且允許開發人員建立一個簡單的部件或部件集合,封裝起所有的規則,並獨立於伺服器和客戶機,所有的數據轉移通過這些部件來完成。這樣,大大減少了對伺服器的請求和網路上的數據傳輸量,提高了應用處理的速度。
(3)提供了許多快速方便的開發方法,使開發人員能用盡可能少的重復性工作完成各種不同的應用。利用項目模板和專家生成器可以很快建立項目的構架,然後根據用戶的實際需要逐步完善。
(4)具有可重用性和可擴展性。開發人員不必再對諸如標簽、按鈕及對話框等windows的常見部件進行編程。delphi包含許多可以重復使用的部件,允許用戶控制windows的開發效果。
(5)具有強大的數據存取功能。它的數據處理工具bde(borlanddatabaseengine)是一個標準的中介軟體層,可以用來處理當前流行的數據格式,如xbase、paradox等,也可以通過bde的sqllink直接與sybase、sqlserver、informix、oracle等大型資料庫連接。
delphi既可用於開發系統軟體,也適合於應用軟體的開發。
(6)擁有強大的網路開發能力,能夠快速的開發b/s應用,它內置的intraweb和expressweb使得對於網路的開發效率超過了其他任何的開發工具。
(7)delphi使用獨特的vcl類庫,使得編寫出的程序顯得條理清晰,vcl是現在最優秀的類庫,它使得delphi在軟體開發行業處於一個絕對領先的地位。用戶可以按自己的需要,任意的構建、擴充、甚至是刪減vcl,以滿足不同的需要。

❸ delphi 程序設計 界面刷新

dbgrid的好辦,將數據源(table,query....)關閉再打開就可以了

combobox的就必須重新用代碼載入數據,數據源控制項都有相應的監控數據變化的函數

❹ DELPHI編程

1.類似於.中的doevents功能。

大家或許發現,在Delphi中沒有類似於vb.中的doevents函數,這樣有的時候,我們將無法使Windows響應多個同時發生的事件。其實,在Delphi的application對象中包括類似的一個方法:ProcessMessage,你可以通過調用Application.ProcessMessage來完成象vb.中的doevents一樣的功能。

2.在Delphi中調用NetscapeNavigator。

隨著Internet的火爆,有沒有想過在你的Delphi程序中啟動Netscape瀏覽器,顯示出你指定的WWW地址的主頁。下面這個程序能夠完成這一功能。

programNetscape;

usesDDEMan;

procereGotoURL(sURL:string);

var

dde:TDDEClientConv;

begin

dde:=TDDEClientConv.Create(nil);

withddedo

begin

//specifythelocationofnetscape.exe

ServiceApplication:=′c:\ns32\program\netscape.exe′;

//activatetheNetscapeNavigator

SetLink(′Netscape′,′WWW—Activate′);

RequestData(′0xFFFFFFFF′);

//gotothespecifiedURL

SetLink(′Netscape′,′WWW—OpenURL′);

RequestData(sURL+′,,0xFFFFFFFF,0x3,,,′);

CloseLink;

end;

dde.Free;

end;

begin

GotoURL(′http://www.yahoo.com/′);

end.

3.格式化整數輸出。

比較大的數字在輸出時會顯得不易閱讀,在Delphi中顯示帶分節號的數字是相當簡單的一件事,如下即可:xxxxx.caption:ΚFormatFloat(′#′,524667500)。

4.在編譯時獲得提示。

在Delphi2.0中,編譯時,可以讓編譯器告訴你一些提示,比如哪些變數聲明了,卻從來沒有使用過。我們知道,可以通過菜單中的選項來控制是否要Delphi這樣做,但如果由於一些特殊需要,你只要在指定的代碼段需要Delphi這樣的提示,怎麼辦呢?請參考如下的程序。

{$HINTON}

procereTform1.Button1Click(Sender:TObject);

var

X:integer;

begin

end;

{$HINTOFF}

5.更改Windows95的牆紙。

在Delphi中你可以很方便地更改牆紙,請參考以下的程序。

procereChangeIt;

var

Reg:TregIniFile;

begin

Reg:ΚTRegIniFile.Create(′ControlPanel′)


Reg.WriteString(′desktop′,′Wallpaper′,
′c:\pwin95\forest.bmp′);

Reg.WriteString(′desktop′,′TileWallpaper
′,′1′);

Reg.Free;

SystemParametersInfo(SPI—SETDESKWALLPAPER,0
,nil,SPIF—SENDWININICHANGE);

end;

6.獲得最後使用文件的日期。

在Win95中有一項新的功能,就是可以獲得訪問文件的最後日期。著名的CleanSweapforWin95軟體中就是靠這一功能來作為判斷某個文件是否被經常訪問的依據之一。在Delphi中,我們可以通過下面的程序來達到此功能。

functionGetFileLastAccessTime(sFileName:string):TDateTime;

var

ffd:TWin32FindData;

dft:DWord;

lft:TFileTime;

h:THandle;

begin

//getfileinformation

h:ΚWindows.FindFirstFile(PChar(sFileName),ffd);

if(INVALID—HANDLE—VALUEΙΛh)then

begin

//we′relookingforjustonefile,socloseour″find″

Windows.FindClose(h);

//

FileTimeToLocalFileTime(ffd.ftLastAccessTime,lft);

//convertFILETIMEtoDOStime

FileTimeToDosDateTime(lft,LongRec(dft).Hi,LongRec(dft).Lo);

//finally,′snativedate/timefunctions

Result:ΚFileDateToDateTime(dft);

end;

end;

GetFileLastAccessTime()將會以Delphi的TdateTime格式返回你所指定的文件的最後訪問日期。

❺ delphi的編程方法

Delphi的編程語言是以Pascal為基礎的。語言具有可讀性好、編寫容易的特點,這使得它很適合作為基礎的開發語言。同時,使用編譯器創建的應用程序只生成單個可執行文件(.EXE),正是這種結合,使得Pascal成為Delphi這種先進開發環境的編程語言。
本章中,將討論ObjectPascal的主要特點,並講解如何在事件處理過程和其他應用程序中,使用它來編製程序代碼。本章將講解Delphi應用程序中最常用的ObjectPascal語法,而不是Pascal語言的一切細節。如果您完全不熟悉Pascal編程,請參閱一些基礎的Pascal教程。如果您具有編程經驗,並能熟練地使用其他流行程序語言,您將在本章的ObjectPascal中發現一些相同的概念。如果您已經熟悉了BorlandPascal,就可以快速瀏覽或跳過本章。
編寫ObjectPascal程序代碼
在前邊的章節中,通過常式,已經編寫了幾行簡單的代碼。在本章中,將從熟悉Pascal編程的角度,配合實例,講解ObjectPascal編程的基該方法。
在編寫自己的ObjectPascal程序時,要注意程序的可讀性。Pascal語言是英式結構語言,在程序中選擇合適的縮排、大小寫風格,並在需要時將程序代碼分行,會使得程序代碼能夠很容易地被自己和他人讀懂。一般的程序員都有這樣的體驗:如果不給程序加上適當的註解,一段時間後,自己也難以理清程序的流程。給程序及時地加上注釋是良好的編程習慣。Delphi的注釋需要加註在{}之間,編輯器會把它們處理成為空白。Delphi保留了BorlandPascal編輯器的風格,關鍵字採用黑體字,被注釋的部分會變暗,這使得編程風格良好,易讀易寫。 在事件處理過程中,最常用到的工作就是把一個新值賦給一個屬性或變數。在設計用戶界面時,可以使用ObjectInspector(ObjectInspector)來改變其屬性;但有時需要在程序執行時改變屬性的值,而且有些屬性只能在執行時改變,這些屬性在Delphi的在線幫助的「Proprety」主題中被標為執行期屬性。進行這種改變,就必須使用賦值語句。
下文的賦值語句表徵一個OnClick事件。當按鈕按動後,將編輯框部件Edit1的Color屬性置為clRed:
procereTForm1.Button1Click(Sender:TObject);
begin
Edit1.Color:=clRed;
end;
當按動按鈕後賦值語句被執行,編輯框變成紅色。
在語句中,部件的名稱在屬性前,中間用「.」表示屬性的所屬關系。這樣就准確地指定了要將clRed值賦給哪一部件的哪一屬性。賦值號為「:=」,不論給屬性還是給變數賦值,都是將右邊的值賦給左邊的屬性或變數。
當將一個屬性值、變數、常量或文本數據賦給屬性或變數時,所賦值的類型和接受此值的屬性或變數的類型應相同或兼容。一個屬性或變數的類型定義了此屬性或變數的可能值集合,也定義了程序代碼可以執行的運算。在前邊的常式中,編輯框部件的Color屬性和clRed的類型都是TColor。可以在在線幫助中找到一個屬性的類型;另外一種方法是在ObjectInspector中選定該屬性值段,並按下F1鍵,則類型將在屬性說明的結尾處列出,例如Color屬性列出下邊的語句:
PropertyColor:TColor;
有些屬性是只讀(ReadOnly)的,它們只能被讀取,不能被改變。請查閱在線幫助,在Delphi中這些只讀屬性都有註解。
標識符的說明與使用
標識符是Delphi應用程序中一些量的名稱,這些量包括變數(var)、常量(const)、類型(type)、過程(procere)、方法(Method)及其他,ObjectPascal在應用標識符時,必須首先說明它們。ObjectPascal是強類型語言,它的編譯器可以檢查確保賦給變數或屬性的值是正確的類型,以便於您改正錯誤。因為ObjectPascal是編譯語言,所以Delphi的執行速度要比使用解釋語言快得多。在使用標識符前說明它們,可以減少程序錯誤並增加代碼的效率。
變數
變數是程序代碼中代表一個內存地址的標識符,而此地址的內存內容在程序代碼執行時可以被改變。在使用變數前必須對它進行說明,即對它進行命名,並說明它的類型。在所有變數說明以前加上保留字var。變數說明左邊是變數的名稱,右邊則是該變數的類型,中間用(:)隔開。
var
Value,Sum:Integer;
Line:String;
在窗體中加入一個名稱為Edit1的編輯框,再加入一個名稱(屬性Name)為Add的按鈕部件,並建立如下的事件處理過程:
procereTForm1.addClick(Sender:TObject);
var
X,Y:Integer;
begin
X:=100;
Y:=20;
Edit1.Text:=IntToStr(X+Y);
end;
在本例中,當按動ADD按鈕時,編輯框中顯示值120。在ObjectPascal中,必須確保變數或屬性被賦予類型相同或兼容的值。您可以嘗試將賦給X的值改為100.0,或去掉IntToStr函數,在編譯時會出現類型不匹配的錯誤,這也說明了ObjectPascal強類型語言的特點。 case語句適用於被判斷的變數或屬性是整形、字元型、枚舉型或子界型時(LongInt除外)。用case語句進行邏輯跳轉比編寫復雜的if語句容易閱讀,而且程序代碼整形較快。
下面的常式顯示一個使用case語句的窗體:
建立如下的事件處理過程:
procereTForm1.Button1Click(Sender:TObject);
var
Number:Integer;
begin
Number:=StrToInt(Edit1.Text);
caseNumberof
1,3,5,7,9:Label2.Caption:='奇數';
0,2,4,6,8:Label2.Caption:='偶數';
10..100:
begin
Label2.Caption:='在10到100之間';
Form1.Color:=clBlue;
end;
else
Label2.Caption:='大於100或為負數';
end;
end;
執行程序,當Edit1部件接受到一個值,並按動「OK」按鈕觸發程序後,Number便被賦值為用戶輸入的數值。case語句根據Number的值判斷該執行哪一條語句。象if語句一樣。case語句也有可選擇的else部分。case語句以end結尾。 ObjectPascal的循環語句有三種:repeat、while和for語句。
repeat語句
repeat語句會重復執行一行或一段語句直到某一狀態為真。語句以repeat開始,以until結束,其後跟隨被判斷的布爾表達式。參閱以下的常式:
i:=0;
repeat
i:=i+1;
Writeln(i);
until=10;
當此語句被執行時,窗體的下方會出現1到10的數字。布爾表達式i=10(注意,與其他語言不同的是,「=」是關系運算符,而不能進行賦值操作)直到repeat..until程序段的結尾才會被計算,這意味著repeat語句至少會被執行一次。 while語句和repeat語句的不同之處是,它的布爾表達式在循環的開頭進行判斷。while保留字後面必須跟一個布爾表達式。如果該表達式的結果為真,循環被執行,否則會退出循環,執行while語句後面的程序。
下面的常式達到和上面的repeat常式達到同樣的效果:
i:=0;
whilei0then
test2(A);{經前置說明,調用未執行的過程Test2}
writeln(A);
end;
procereTest2(varA:Integer);{經前置說明的Test2的執行部分}
begin
A:=Adiv2;
ifA>0rhen
test1(A);{在Test2中調用已執行的過程Test1}
end;
procereTForm1.Button1Click(Sender:TObject);
begin
Alpha:=15;{給Alpha賦初值}
Test1(Alpha);{第一次調用Test1,遞歸開始}
end;
按鈕的OnClick事件處理過程給Alpha賦初值,並實現先減1再除2的循環遞歸調用,直到Alpha小於0為止。

❻ 一道Delphi簡單編程

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procere FormCreate(Sender: TObject);
procere Button1Click(Sender: TObject);
private
public
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

var
XXXArray: array[0..11] of double;

procere TForm1.FormCreate(Sender: TObject);
begin
XXXArray[0] := 0.45;
XXXArray[1] := 3.42;
XXXArray[2] := 44.55;
XXXArray[3] := 39;
XXXArray[4] := 23.9;
XXXArray[5] := 4.98;
XXXArray[6] := 22.5;
XXXArray[7] := 34.6;
XXXArray[8] := 44;
XXXArray[9] := 1.8;
XXXArray[10] := 77.88;
XXXArray[11] := 9.9;
end;

procere TForm1.Button1Click(Sender: TObject);
var
I, J: integer;
D: Double;
begin
for I := Low(XXXArray) to High(XXXArray) do
begin
for J := Low(XXXArray) to High(XXXArray) - 1 do
begin
if XXXArray[J] > XXXArray[J + 1] then
begin
D := XXXArray[J];
XXXArray[J] := XXXArray[J + 1];
XXXArray[J + 1] := D;
end;
end;
end;

Memo1.Clear;
for I := Low(XXXArray) to High(XXXArray) do
begin
Memo1.Lines.Add(Format('%f', [XXXArray[I]])) ;
end;

end;

end.

❼ 《Delphi程序設計》重修作品要求及評分標准

var
a,b:Pbyte;
i :integer;
ResultBuffer :array [1..Max] of byte;
begin
for i := 1 to Sizeof(Buffer) div 8 do
begin
a := @Buffer[(i-1)*8+1];
b := @ResultBuffer[(i-1)*8+1]
Des(a^,b^,true);//這里使用DES加解密處理
end;
end
多使用WSASend,WSARecv等WinSocket 2函數,不要使用Send,Recv函數

這個主要看你的伺服器運行在什麼系統中了,如果運行在WIN系統里,最好使用WSA系統的函數,因為Microsoft畢竟將它們都優化了
高效的伺服器一定要使用線程池技術,使用多少線程合理,需要線程處理什麼樣的數據。我個人認為如果要使用線程池的技術,一定要處理那些最費時的操作,如資料庫的查詢操作。
如果伺服器使用了「池」的概念,這就又出現了一個問題,如何高效的分配池呢?

我在程序中大量的使用池,如線程池,數據池等。當數據到達的時候,如何分配池呢?這里就不告訴大家了,以後再專門寫一篇關於池的文章。詳細的介紹如何使用池。大家也可以自己考慮一下。
使用高效的字元串操作函數

因為伺服器一定要進行大量的字元串運行,如果使用Delphi自帶的函數來操作,就比較費時,所以這里推薦大家使用QStrings.pas字元串操作函數集,相信會對大家有幫助的。
優化你的SQL查詢語句

你可以一方面優化SQL查詢語句來提高運行效率,另一方面你還可以使用存儲過程來更大的提高運行效率。(這些知識你需要看資料庫的內容,這里具體如何優化就不說了。)

❽ Delphi7程序設計與開發技術大全

http://youa..com/item/6edbb892c0fcd58c83e952ec
這里有一本二手的,附原裝光碟專,九成新屬。

❾ delphi 網路編程

在edit的keyup 事件中寫
socket通訊代碼
BrodcastMessage(Data, AThread);

可以參考

procere TForm_Server_Main.BrodcastMessage(Msg: string; AThread: TIdPeerThread);
var
List: TList;
I: Integer;
begin
List := ChatServerSocket.Threads.LockList;
try
for I := 0 to List.Count - 1 do
begin
try
if AThread <> TIdPeerThread(List.Items[I]) then
begin
TIdPeerThread(List.Items[I]).Connection.WriteLn(Msg);
end;
except
on E: Exception do
begin
memLog.Lines.Add('Exception (' + FormatDateTime(StatusDateTimeFormat, Now) + ') [' + E.ClassName + ']: ' + E.Message);
memLog.Lines.Add('The thread has been stopped');
TIdPeerThread(List.Items[I]).Stop;
end; //on
end; //try
end; //for
finally
ChatServerSocket.Threads.UnlockList;
end;
end;

**************

另外,在三層通訊方面,建議使用RemObjects,
非常方便。而且協議都是XML的,介面非常好些,框架成熟。

❿ 關於Delphi編程

.dpr是為以前版本的Delphi的工程文件。.dproj是新的。
.bdsproj是BDS(一個綜合了Delphi、C++Builder等工具的開發平台)的工程文件。

熱點內容
美發店認證 發布:2021-03-16 21:43:38 瀏覽:443
物業糾紛原因 發布:2021-03-16 21:42:46 瀏覽:474
全國著名不孕不育醫院 發布:2021-03-16 21:42:24 瀏覽:679
知名明星確診 發布:2021-03-16 21:42:04 瀏覽:14
ipad大專有用嗎 發布:2021-03-16 21:40:58 瀏覽:670
公務員協議班值得嗎 發布:2021-03-16 21:40:00 瀏覽:21
知名書店品牌 發布:2021-03-16 21:39:09 瀏覽:949
q雷授權碼在哪裡買 發布:2021-03-16 21:38:44 瀏覽:852
圖書天貓轉讓 發布:2021-03-16 21:38:26 瀏覽:707
寶寶水杯品牌 發布:2021-03-16 21:35:56 瀏覽:837