1. 標準數據類型
1.1 實型
實型是存儲實數的總稱, 也統稱爲浮點類型,值域幾乎是無限的,精度較高。
類型 |
名稱 |
範圍 |
有效數字 |
字節數 |
實型 |
Real |
±5.0*10-324 ~1.7*10308 |
15~16 |
8 |
雙精度 |
Double |
±5.0*10-324 ~1.7*10308 |
15~16 |
8 |
48位實型 |
Real48 |
±2.9*10-39~1.7*1038 |
11~12 |
6 |
單精度 |
Single |
±1.5*10-45~7.4*1038 |
7~8 |
4 |
擴展型 |
Extended |
±7.4*10-4932~1.1*104932 |
19~20 |
10 |
計算型 |
Comp |
-263+1~263-1 |
19~20 |
8 |
貨幣型 |
Currency |
-922337203685477.5808 ~922337203685477.5807 |
19~20 |
8 |
l 一般定義方法:
Var
VirableName:TypeName;
VirableName是實型變量名,TypeName是實型變量類型。
實數表示方法有兩種:
l 小數表示法:
Eg:1.25,-132.67,0.0025,0.0,100.0
l 指數表示法(科學表示法:尾數,指數)
Eg:1.25E0,1.3267E+2,-2.3E-2
l 使用小數表示法,必須要有小數點,且小數點前後的數字(0~9)不能省略。
l 使用科學表示法,尾數和指數都不能省略,指數必須爲整數。
絕對值函數:Function Abs(X)
返回參數X的絕對值,參數X可以是整型或實型,返回值爲非負的整數或實數。
l 平方函數:
Function Sqr(X:Extended):Extended;
返回參數X的平方:X*X,返回值也是實型數據。
l 平方根函數:
Function Sqrt(X:Extended):Extended;
返回參數X的算術平方根,返回值也是實型數據。
三角函數:Delphi提供了三個三角函數
Function Sin(X:Extended):Extended;
Function Cos(X:Extended):Extended;
Function ArcTan(X:Extended):Extended;
(1)參數X爲數值表達式。在Sin和Cos函數中X是以弧度爲單位的角度,分別返回該角度所對應的正弦和餘弦值。ArcTan函數返回的是正切值爲X的弧度值。
(2)弧度和角度的換算關係爲:π=180º
(3)由這三個基本的三角函數可以導出:
Tan(X)=Sin(X)/
ArcSin(X)=ArcTan(X/Sqrt(1-Sqr(X)))
ArcCos(X)=ArcTan(Sqrt(1-Sqr(X))/X)
l 取整數函數:
Function Int(X:Extended):Extended;
參數X爲實型表達式,返回X的整數部分,它仍然是實型,小數部分設置爲0。
l 取小數函數
Function Frac(X:Extended):Extended;
參數X爲實型表達式,返回X的小數部分,Frac(X)=X-Int(X)
l 取整函數:
Function Trunc(X:Extended):Int64;
參數X爲實型表達式,返回不大於X的整數。
l 舍入函數:
Function Round(X:Extended):Int64;
參數X爲實型表達式,返回對X四捨五入後的整數部分。
l 指數函數:
Function Exp(X:Real):Real;
返回ex,返回值也是實型數據。
l 對數函數:
Function Ln(X:Real):Real;
(1)參數X爲正的實型表達式,返回X的自然對數,返回值也是實型數據。
(2)根據公式:Xn=enln(X),導出Xn=Exp(n*Ln(X))。
(3)常對數 公式,可以求出常對數。
Function Random[(Range:Ingeger)];
返回一個大於或等於0且小於參數Range的隨機參數,如果缺省參數Range,返回一個大於或等於0且小於1的隨機實數。
爲了能產生不同的隨機數,應在程序啓動時調用一次Randomize過程,以初始化內部隨機數產生器。Procedure Randomize;
Function Pi:Extended;
該函數無參數,Delphi提供了一個返回圓周率的函數Pi。
1.2 時間日期型
l 時間日期型是浮點型的一種映射。TDateTime,TDate,TTime;
l 定義的一般格式:
Var
VariableName:TypeName;
VirableName是時間日期類型變量TypeName是TDateTime,TDate,Ttime;
Function Now:TDateTime;
返回的TDateTime類型其實質是一個Double類型,整數部分表示從
Eg:0表示:12/30/1899 12:00AM
Eg:-1.25表示:12/29/1899 6:00Am
Function Date:TDateTime;
返回系統系統當前日期
若要計算兩日期之差,只需作簡單的減法。
Function Time:TDateTime;
用來返回系統當前的時間。
若要計算兩時間之差,只需作簡單的減法。
l 日期時間轉換字符串函數
Function DateToStr(Date:TDateTime):String;
Function TimeTostr(Time:TDateTime):String;
Function DateTimeToStr(DateTime: TDateTime):String;
把日期或時間轉換成字符串。
l 日期型轉換整型函數
Function EncodeDate(Year,Month,Day: Word):TDateTime;
返回Year,Month,Day所對應的日期。
Procedure DecodeDate(Date,var Year,Month,Day:Word);
返回Year,Month,Day。
l 時間型轉換整型函數
Function EncodeTime(Hour,Min,Sec,MSec: Word);TDateTime;
返回Hour,Min,Sec,MSec所對應的時間。
Procedure DecodeTime(Time:TDate,Var Hour,Min,Sec,MSec:Word);
返回Hour,Min,Sec,MSec。
l 星期函數
Function DayOfWeek(Date: TDateTime):Integer;
返回整數1~7,1表示星期日,7表示星期六。
l 日期與時間格式函數
Function FormatDateTime(Const Format:String; DateTime:TDateTime):String;
將參數DateTime所給的日期時間值按參數Format指定的格式輸出。參數Format又稱格式化字符串
取值 |
意義 |
c |
使用全局變量ShortDateFormat定義的格式顯示日期,使用全局變量LongTimeFormat定義的格式顯示時間。時間在日期之後,若時間部分爲0,則不顯示時間。 |
d |
將日期顯示爲1~31的格式,沒有前導0 |
dd |
將日期顯示爲1~31的格式,有前導0 |
ddd |
用全局變量ShortDayNames定義的名稱顯示日期(ShortDayNames,缺省值爲:array[星期日..星期六]) |
dddd |
用全局變量LongDayNames定義的名稱顯示日期(LongDayNames,缺省值爲:array[星期日..星期六]) |
ddddd |
用全局變量ShortDateNames定義的名稱顯示日期 |
dddddd |
用全局變量LongDateNames定義的名稱顯示日期 |
m |
將月份顯示爲1~12的格式,沒有前導0 |
mm |
將月份顯示爲1~12的格式,有前導0 |
mmm |
用全局變量ShortMonthNames定義的名稱顯示月份(ShortMonthNames缺省值爲:array[一月..十二月]) |
mmmm |
用全局變量LongMonthNames定義的名稱顯示月份(LongMonthNames缺省值爲:array[一月..十二月]) |
yy |
將年份顯示爲00~99的格式 |
yyyy |
將年份顯示爲0000~9999的格式 |
h |
將小時顯示爲0~23的格式,沒有前導0 |
hh |
將小時顯示爲0~23的格式,有前導0 |
n |
將分鐘顯示爲0~59的格式,沒有前導0 |
nn |
將分鐘顯示爲0~59的格式,有前導0 |
s |
將秒鐘顯示爲0~59的格式,沒有前導0 |
ss |
將秒鐘顯示爲0~59的格式,有前導0 |
t |
用全局變量ShortTimeFormat定義的格式顯示時間 |
tt |
用全局變量LongTimeFormat定義的格式顯示時間 |
AM/PM |
使用12h制顯示時間(h和hh),上午顯示AM下午顯示PM |
A/P |
使用12h制顯示時間(h和hh),上午顯示A下午顯示P |
Ampm |
使用12h制顯示時間(h和hh),上午顯示全局變量TimeAMString的內容,下午顯示全局變量TimePMString的內容。 |
/ |
顯示全局變量DateSeparator指定的日期分隔符 |
: |
顯示全局變量TimeSeparator指定的日期分隔符 |
‘xx’/”xx” |
單引號或雙引號中的字符串將原樣輸出 |
當Format參數爲空時,相當於取值爲“C”。
FormatDatetime(‘“今天是:”dddddd,ddd’,date)
1.3 字符串型
l 有限長字符序列的集合稱爲字符串類型。默認情況下,字符串類型變量最多可以包含255個字符,也可以在定義字符串變量時指明其所包含字符的最大個數。
l 定義的一般格式:
Var
VariableName:TypeName [number] ;
VariableName是字符串變量名,TypeName是字符串類型。
類型 |
名稱 |
最大長度 |
所需內存 |
用途 |
是否以Null結尾 |
字符串型 |
String |
255個字符或約231個字符 |
2~256bytes |
通用字符串型 |
是 |
短字符串型 |
ShortString |
255個字符 |
2~256bytes |
兼容以前版本的字符串類型 |
否 |
Ansi字符串型(長字符) |
AnsiString |
約231個字符 |
4bytes~ |
8字節的ANSi字符 |
是 |
寬字符串型 |
WideString |
約230個字符 |
4bytes~ |
Unicode字符 |
是 |
Function LowerCase(Const S:String):String;
返回小寫字符串。
Function UpperCase(Const S:String):String;
返回大寫字符串。
Function CompareStr(Const S1,S2:String): Integer;
Function CompareText(Const S1,S2:String): Integer;
(1)S1>S2返回函數值大於0,S1<S2返回函數值小於0,S1=S2返回函數值等於0
(2)CompareStr()區分大小寫,CompareText()不區分大小寫
Procedure AppendStr(Var Dest :string:const S:String);
相當於執行Dest:=Dest+S;
Function Concat(S1[,S2,S3,…]:String);
用來合併多個字符串
Function Pos(Substr:String;S:String):Integer;
Pos(S0,S)返回字符串S0在字符串S中的位置(整數值),若S0不在S中,則返回0。
Function Length(S:String):Integer;
返回字符串S的長度值(整數值)。
Function Copy(S:String,Index,Count:Integer):String;
如果Index大於字符串的長度,則返回一個空串,如果從Index開始到S的結尾不足Count個字符,則返回從Index開始到S結尾的所有字符。
Procedure Delete(Var S:String;Index,Count: Integer);
如果Index大於字符串的長度則不刪除任何字符,如果從Index開始到S的結尾不足Count個字符,則返回從Index開始到S結尾的所有字符。
Procedure Insert(Source:String ; Var S:String ; Integer:Integer);
Insert(S0,S,n)將字符串S0插入到字符串S中的第n個字符處。
Procedure SetLength(Var S; NewLength:Integer);
S ,NewLength是一個整形變量,用來確定長度,
SetLength(S0,3);表示從字符串S0中取出前三個字符再存入變量S0中。
Function Trim(Const S:String);String;
Function TrimLeft(Const S:String):String;
Function TrimRight(Const S:String):String;
Trim用來清除字符串兩端的空格。
TrimLeft用來清除字符串左邊的空格。
TrimRight用來清除字符串右邊的空格。
l 數值型轉換成字符串型
Procedure Str(Const X[:Width [:Decimals]],Var S:String);
參數Width與Decimals分別爲指定的寬度與小數位數。如果X爲整型,則S爲整型格式,如果X爲實型,則S爲科學計數格式。
l 字符串型轉換成數值型
Procedure Val(S:String,Var V,Var Code:Integer);
參數S爲字符串。V可以是整型,也可以是實型,Code爲整型。如果不爲0,則表示轉換過程出現錯誤。
l 整型數據轉換成字符串型
Function InttoStr(Value:Integer):String;
函數返回整型數據Value的10進制格式的字符串。
l 實型數據轉換成字符串型
Function FloattoStr(Value:Extended):String;
函數返回實型數據Value的普通數字格式的字符串。轉換的有效精度爲15位。
l 數字字符串轉換成整型數值
Function StrToInt(Const S:String):Integer;
函數的參數可以是10進制或16進制格式的字符串,若爲非法的數字字符串,系統將引發EconvertError錯誤。
l 數字字符串轉換成實型數值
Function StrToFloat(Const S:String):Extended;
函數的參數是定點或浮點格式的字符串,若爲非法的數字字符串,系統將引發EconvertError錯誤。
l 10進制轉換爲16進制格式函數
Function IntToHex(Value:Integer,Digits: Integer):String;
函數返回一個字符串,Digits爲字符串的最小位數。在位數不足時以0在左邊填充。
l 字符串格式化函數
Function Format(Const Format:String;Const Args:Array of Const):String;
Format是“格式字符串”,可以包括字符信息,也可以包含參數組Args中參數的類型和格式信息。
l 類型和格式信息由字符“%”開頭,格式入下:
%[<參數位置:>:][-][<所佔寬度>][.<小數位數>]<類型>
若缺省[<參數位置:>:],則從左到右依次分配各參數。“-”表示左對齊,若缺省則右對齊。<類型>爲參數的類型,其可能的取值和意義如下表:
取值 |
意義 |
d |
10進制整數,在<小數位數>中可以指定轉換後數的最小位數,若小於該位數則在其左邊填0 |
u |
無符號10進制整數,與d相似 |
e |
浮點類型 |
f |
定點類型 |
g |
實數,結果爲最短字符串型式,可以是浮點形式或定點形式 |
n |
數值格式實數:與f相似,但整數部分加上千位分隔符“,” |
m |
貨幣形式 |
p |
指針形式 |
s |
字符串形式 |
x |
16進制整數,與d相似 |
l Eg:
Format(‘%s申辦%d奧運會成功’,[‘北京’,2008])
附練習題:
1、創建一個delphi應用程序項目。在窗體中加入一個button1 和三個edit。第一個edit輸入圓的半徑,在edit2和edit3中分別輸出圓的周長和麪積。
var r : Integer; procedure TForm1.Button1Click(Sender: TObject); begin r := StrToInt(self.Edit1.Text); self.Edit2.Text := floattostr(r * Pi); self.Edit3.Text := floattostr(r*r*Pi); end; |
2、創建一個delphi應用程序項目。並使用隨機數,產生10題0-100的加法運算。
並能判斷結果的正誤和統計成績。
不太瞭解這個題目的意思,反正我是這麼寫
procedure TForm1.Button1Click(Sender: TObject); var Num,i,iCount,iRight,iR1,iR2 : integer; begin Num :=strtoint(self.Edit1.Text); iCount := 0; for i:=1 to 10 do begin iCount :=iCount + 1; iR1 := Random(50); iR2 := Random(50); if(Num = (iR1 + iR2)) then begin iRight := iRight + 1; end; end; showmessage('進行了:' + intTostr(iCount) + '次隨機運算' +#13 + '正確的次數爲' + intTostr(iRight)); end; |