delphi編程
A. Delphi編程。。。
會用findfirst不 加一個deletefile
procere find(str:string);
var
f,sum:integer;
rec:Tsearchrec;
begin
sum := 0;
f := findfirst('C:\Temp\'+'*',faanyfile,rec);
while f=0 do
begin
if (rec.Name<>'.') and (rec.Name<>'..') then
begin
if (rec.Attr and fadirectory)=fadirectory then
find('C:\Temp\'+rec.Name)
else
begin
list.add('C:\Temp\'+rec.Name);
inc(sum);
memo1.lines.add('C:\Temp\'+rec.Name);
DeleteFile('C:\Temp\'+rec.Name);
end;
end;
f:=findnext(rec);
end;
findclose(rec);
showmessage('已經刪除'+inttostr(sum)+'個');
end;
OK 解決
B. delphi編程 簡化代碼
假設你的memo都放在form1窗體上(如果放在panel上,改為panel.controls)
procere TForm1.Button1Click(Sender: TObject);
var
i, n: Integer;
mmo: TMemo;
begin
for i := 0 to Form1.ControlCount - 1 do
if Form1.Controls[i] is TMemo then
begin
mmo := Form1.Controls[i] as TMemo;
for n := 0 to mmo.Lines.Count - 1 do
begin
a[i][n]:= mmo.lines[n];
end;
end;
end;
C. Delphi是編程工具,還是編程語言
可以說是編程工具,也可以說是編程語言,
delphi是從pascal擴展而來的面向對象的語言
只有borland公司的delphi軟體可以開發。
不過聽說borland准備出售delphi2005,
估計沒過多久這門語言就會從地球上消失!!!!!!!!!
D. delphi 編程
function TForm1.fgetfiletime(sfilename:string;timetype:Integer):TDateTime;
var
ffd:TWin32FindData;// Win32的數據結構
{_WIN32_FIND_DATAA = record
dwFileAttributes: DWORD;
ftCreationTime: TFileTime;
ftLastAccessTime: TFileTime;
ftLastWriteTime: TFileTime;
nFileSizeHigh: DWORD;
nFileSizeLow: DWORD;
dwReserved0: DWORD;
dwReserved1: DWORD;
cFileName: array[0..MAX_PATH - 1] of AnsiChar;
cAlternateFileName: array[0..13] of AnsiChar;
end;}
dft:DWORD;
lft,time:TFileTime;//文件的時間
{同 TDateTime 一樣大小, 但結構原理完全不同:
TFileTime = record
dwLowDateTime: DWORD;
dwHighDateTime: DWORD;
end;
TFileTime 記錄的是從 1601-1-1 起的時間值, 以 100 納秒(也就是萬分之一毫秒)為單位
//DOS 時間就是一個 32 位(4位元組)的整數(Integer), 好像沒有專門的結構, 可用 LongRec 等代為解析.
DOS 時間的尺寸是 TFileTime、TDateTime 的 1/2, 是 TSystemTime 的 1/4; 因此不很精確.
它只能表示從 1980-2107 之間的時間, 且只能精確到 2 秒.
}
H:THandle;//句柄
begin
{//返回一個搜索句柄。如果出錯,返回一個INVALID_HANDLE_VALUE常數,一旦不再需要,應該用FindClose函數關閉這個句柄}
h:=Windows.FindFirstFile(PChar(sfilename),ffd);
case timetype of
0:time:=ffd.ftCreationTime; //文件的創建時間
1:time:=ffd.ftLastWriteTime;//上次寫入時間
2:time:=ffd.ftLastAccessTime ;//上次訪問時間
end;
if (h<>invalid_handle_value)then //成功則進行下操作
begin
Windows.FindClose(h);//關閉
//轉換成本地時間
FileTimeToLocalFileTime(time,lft);
//將一個 win32 FILETIME 值轉換成DOS日期和時間值
FileTimeToDosDateTime(lft,longrec(dft).hi,longrec(dft).lo);
{//當用FileAge獲取文件整數時間表示後,要用FileDateToDateTime轉化為本地時間}
Result:=FileDateToDateTime(dft);
end
else
Result:=0;
end;
E. DELPHI編程
1.類似於vb.中的doevents功能。
大家或許發現,在Delphi中沒有類似於vb.中的doevents函數,這樣有的時候,我們將無法使Windows響應多個同時發生的事件。其實,在Delphi的application對象中包括類似的一個方法:ProcessMessage,你可以通過調用Application.ProcessMessage來完成象vb.中的doevents一樣的功能。
2.在Delphi中調用NetscapeNavigator。
隨著Internet的火爆,有沒有想過在你的Delphi程序中啟動Netscape瀏覽器,顯示出你指定的WWW地址的主頁。下面這個程序能夠完成這一功能。
programNetscape;
usesDDEMan;
procereGotoURL(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):TDateTime;
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格式返回你所指定的文件的最後訪問日期。
F. Delphi編程
我的理解是這樣的:
當點擊自動移動時,需要採用Timer組件來實現。您可以在Timer組件中添加如下代碼:
form1.Label1.Left:=form1.Label1.Left+1;//向右移動
form1.Label1.Left:=form1.Label1.Left-1;//向左移動
然後再加上左右邊距的判斷,使其循環左右移動。
你增加一個button按鈕,命名為【自動移動】,如果點擊該按鈕,則激活Timer組件(timer1.Enabled:=true;)。
再增加一個按鈕button組件,命名為【手動移動】,如果點擊該按鈕,則停止Timer組件(timer1.Enabled:=false;)。
然後將【自動移動】中的命令寫到快捷組合鍵中即可。
G. 高分delphi編程
path:=ExtractFileDir(Application.ExeName)+'\';
Wini:=Tinifile.Create(path+'db.ini');
//讀取ip
ip:=Wini.ReadString('sysdb','server','127.0.0.1');
//讀取密碼
pass:=Wini.ReadString('sysdb','pass','');
try
str_conn:='Provider=SQLOLEDB.1;Password='+pass+';Persist Security Info=True;User ID=sa;Initial Catalog=JMJ;Data Source='+ip;
conn.Connected:=false;
conn.ConnectionString:=str_conn;
conn.Connected:=true;
except
on E: Exception do
begin
showmessage('資料庫設置異常,請檢查db.ini文件:'+E.Message);
exit;
end;
end;
conn 為TAdoConnection 組件
配置文件這么寫
[sysdb]
server=192.168.1.100
pass=sa
H. delphi的編程方法
Delphi的編程語言是以Pascal為基礎的。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為止。
I. delphi編程
var
N: Integer = 1;
procere TForm1.Button1Click(Sender: TObject);
begin
if UpperCase(Edit1.Text) = 'ABC123' then
begin
N := 1;
Edit2.Text := '正確';
end
else
begin
N := N + 1;
Edit2.Text := '錯誤';
end;
if N > 3 then
begin
Edit1.Text := '';
Edit1.Enabled := False;
Button1.Enabled := False;
Edit2.Text := '你無權使用';
end;
end;
J. DELPHI編程指的是什麼
由Borland公司推出的Delphi是全新的可視化編程環境,為我們提供了一種方便、快捷的Windows應用程序開發工具。它使用了Microsoft
Windows圖形用戶界面的許多先進特性和設計思想,採用了彈性可重復利用的完整的面向對象程序語言(Object-Oriented
Language)、當今世界上最快的編輯器、最為領先的資料庫技術。對於廣大的程序開發人員來講,使用Delphi開發應用軟體,無疑會大大地提高編程效率,而且隨著應用的深入,您將會發現編程不再是枯燥無味的工作——Delphi的每一個設計細節,都將帶給您一份欣喜。
Delphi是Borland公司研製的新一代可視化開發工具,可在Windows3.x、Windows95、WindowsNT等環境下使用。當前,DELPHI
也可以為LINUX平台上開發應用,其在LINUX上的對應產品Kylix。
DELPHI
擁有一個可視化的集成開發環境(IDE),採用面向對象的編程語言ObjectPascal和基於部件的開發結構框架。Delphi它提供了500多個可供使用的構件,利用這些部件,開發人員可以快速地構造出應用系統。開發人員也可以根據自己的需要修改部件或用Delphi本身編寫自己的部件。主要特點如下:
(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,以滿足不同的需要。
(8)從Delphi8開始Delphi也支持.Net框架下程序開發。
當前DELPHI
已經成為一個品牌,而不僅僅是一個開發平台或開發語言的名稱。
當前DELPHI產品已經由CodeGear公司繼續發展,該公司是BORLAND公司的全資子公司。