這一期呢,來整理下PB
常用的函數,包括系統的和一些自己封裝好的函數
獲取字串長度
① 語法
Len(string)
②引數
string
-->string 型別變數
③ 返回值
Long
擷取字串
① 語法
Mid(string,start,length)
② 引數
③ 返回值
String
string
字串中從start位置開始、長度為length的子串length
引數或length
引數的值大於從start
開始、string
字串中餘下字元的長度,函數返回所有餘下的字元NULL
,函數返回NULL
在一個字串中查詢所包含的另一個字串的起始位置
①語法
Pos ( string1, string2, start )
② 引數
string1
-->string型別,目標字串string2
-->string型別,指定要在string1
中查詢的字串start
-->long型別,可選項,指定從string1
的第幾個字元開始查詢 預設值為1③ 返回值
Long
start
位置後string2
在string1
中第一次出現的起始位置。string1
中按指定要求未找到string2
、或start
的值超過了string1
的長度,那麼Pos()
函數返回0。NULL
,函數返回NULL
Pos()
函數在字串查詢時區分大小寫,因此,xiezhr
不匹配XIEZHR
得到字串左部指定個數的字元
①語法
Left ( string, n )
② 引數
string
-->string型別,指定要提取子串的字串n
-->long型別,指定子串長度③ 返回值
String
string
字串左邊n
個字元,發生錯誤時返回空字串""NULL
,Left()
函數返回NULL
n
的值大於string
字串的長度,函數返回整個string
字串,但並不增加其它字元從字串右端取指定個數位符
① 語法
Right ( string, n )
② 引數
string
-->string型別,指定要提取子串的字串n
-->long型別,指定子串長度③ 返回值
String
string
字串右邊n個字元,發生錯誤時返回空字串""NULL
,Right()
函數返回NULL
string
字串的長度,函數返回整個string
字串,並且不增加其它字元刪除字串首部和尾部的空格
① 語法
Trim ( string )
② 引數
string
-->string型別,要刪除空格的目標字串
③返回值
String
NULL
,函數返回NULL
字串中是否包含指定模式的字元
① 語法
Match ( string, textpattern )
② 引數
string
-->string
型別,要檢查是否匹配指定模式的目標字串textpattern
-->string
型別,指定文字匹配模式③ 返回
Boolean
string
與模式textpattern
相匹配,則函數返回true
,否則返回false
Match()
函數返回false
NULL
,函數返回NULL
生成一個由指定字串填充的指定長度的新字串
① 語法
Fill ( string, n )
② 引數
string
--> string
型別,指定用於重複填充的字串n
-->long
型別,指定由該函數返回的字串的長度③ 返回
String
n
個字元的字串,該字串以引數string
中的字串重複填充而成string
中的字元個數多於n
個,那麼使用string
字串的前n個字元填充函數返回的字串string
中的字元個數少於n
個,那麼使用string
字串反覆填充,直到返回的字串長度達到n
為止NULL
,函數返回NULL
將字串中的大寫字母轉換為小寫字母
① 語法
Lower ( string )
② 引數
string
-->需要轉換的目標字串
③ 返回
String
string
引數的值為NULL
,函數返回NULL
將字串中的小寫字母轉換為大寫字母
① 語法
Upper( string )
② 引數
string
--> 需要轉換的目標字串
③ 返回
String
string
引數的值為NULL
,函數返回NULL
將一個字串中指定個數的字串替換為另一個字串
① 語法
Replace ( string1, start, n, string2 )
② 引數
string1
--> string型別,指定要使用string2替換其中一部分內容的字串start
--> long型別,指定要從哪個字元位置開始替換字串,字串中第一個字元的位置為1n
--> long型別,指定要替換多少個字元string2
-->string型別,指定用哪個字串替換string1的部分字元③ 返回
String
string1
的長度,函數把將string2
拼接到string1
的後n
的值為0,函數把string2
插入到string1
指定位置後形成的字串返回NULL
,函數返回NULL生成一個由空格組成的指定字元個數的字串
① 語法
Space ( n )
② 引數
n
-->long
型別,指定要填充的空格個數,即填充後返回的字串的長度
③ 返回
String
n
個空格組成的字串,發生錯誤時返回空字串""n
的值為NULL
,函數返回NULL
刪除字串左邊空格
① 語法
LeftTrim ( string )
② 引數
string
-->string型別,需要處理的字串
③ 返回
String
NULL
,函數返回NULL
刪除字串右邊空格
① 語法
RightTrim ( string )
② 引數
string
-->string型別,需要處理的字串
③ 返回
String
string
字串右部空格的字串,發生錯誤時返回空字串""NULL
,函數返回NULL
獲取日期中的年份
① 語法
Year(date)
② 引數
date
--> date
型別的值
③ 返回
Integer
date
引數中的年份(四位數位),發生錯誤時返回1900date
引數的值為NULL
,則函數返回null
獲取日期中的月份
① 語法
Month ( date )
② 引數
date
--> date
型別的值
③ 返回
Integer
date
引數中的月份(1到12之間)date
引數的值為NULL
,函數返回NULL
獲取日期中的號數(1到31之間的整數值)
① 語法
Day (date)
② 引數
date
--> date
型別的值
③ 返回
Integer
date
引數的值為NULL
,函數返回NULL
獲取時間值中的小時,採用24小時制
① 語法
Hour (time)
② 引數
time
-->time
型別的值
③ 返回
Integer
time
引數中的小時(00到23之間)time
引數的值為NULL
,函數返回NULL
獲取時間值中的分鐘,00~59之間
① 語法
Minute (time)
② 引數
time
-->time
型別的值
③ 返回
Integer
time
引數中的分鐘(00到59之間)time
引數的值為NULL
,函數返回NULL
獲取時間值中的秒,在00~59之間
① 語法
Second (time)
② 引數
time
-->time
型別的值
③ 返回
Integer
time
引數中的秒(00到59之間)NULL
,函數返回NULL
獲取當前系統日期,在某些情況下,同時得到當前系統時間
① 語法
Today()
② 引數
無
③ 返回
DateTime
型別的值時,函數能夠在返回當前系統日期的同時返回當前系統時間獲取客戶機的當前系統時間
① 語法
Now()
② 引數
無
③ 返回
獲取指定日期前多少天或後多少天的日期
① 語法
RelativeDate(date,n)
② 引數
date
-->Date
型別,指定基準日期n
-->integer
型別,指定天數③ 返回
Date
n>0
時返回指定日期後第n天的日期;n<0
時返回指定日期前第n天的日期。NULL
,函數返回NULL
獲取指定時間前多少秒或後多少秒的時間,採用24小時制
① 語法
RelativeTime (time, n)
② 引數
time
--> time型別,指定基準時間n
--> long型別,指定秒數③ 返回
Time
n>0
時返回指定時間後第n秒的時間;n<0
時返回指定時間前第n秒的時間。NULL
,函數返回NULL
獲取兩個日期間的天數
① 語法
DaysAfter ( date1, date2 )
② 引數
date1
-->date
型別,指定開始日期date2
-->date
型別,指定截止日期③ 返回
Long
date2
的日期在date1
的前面,函數返回負值。NULL
,函數返回NULL獲取指定日期是一週中的星期幾(例如,Sunday, Monday...)
① 語法
DayName ( date )
② 引數
date
--> date
型別值或變數
③ 返回
String
date
引數的值為NULL
,函數返回NULL
獲取指定日期是一星期中的第幾天(用1到7之間的整數表示,星期天為1,星期一為2,...)。
① 語法
DayNumber ( date )
② 引數
date
-->date
型別值或變數
③ 返回
Integer
NULL
,函數返回NULL組態檔xiezhr.ini 內容如下
[transaction]
DBMS =O84 Oracle8/8i (8.x.4+)
username =xiezhr
password =xiezhr
servername =127.0.0.1:1521/orcl
獲取組態檔中指定節點內容
① 語法
ProfileString(filename,nodename,default_value)
② 引數
filename
--> 組態檔名稱nodename
--> 組態檔中的節點名稱default_value
--> 未找到指定的節或鍵,則返回的預設值③ 返回
④ 舉個栗子
我們來獲取專案根目錄下xiezhr.in組態檔中的資料庫使用者名稱、密碼、連線資訊
ls_username = ProfileString("xiezhr.ini","transaction","username","scott")
ls_password = ProfileString("xiezhr.ini","transaction","password","tiger")
ls_servername = ProfileString("xiezhr.ini","transaction","servername","127.0.0.1:1521/orcl")
設定組態檔中指定節點內容
① 語法
SetProfileString(filename,nodename,sourcename,value)
② 引數
filename
--> 組態檔名稱nodename
-->節點名稱sourcename
-->節點下目標位置名稱value-->
需要設定的值③ 返回
Integer
④ 舉個栗子
我們修改專案更目錄下xiezhr.ini組態檔內容,將username值設定成xiezhr
SetProfileString('xiezhr.ini','transaction','username',xiezhr')
string ls_arr[]
獲取陣列長度
① 語法
upperbound(array)
② 引數
array
-->陣列名 ls_arr
③ 返回
獲取指定陣列陣列的下界
① 語法
lowerbound(array)
② 引數
array
-->陣列名 ls_arr
③ 返回
小技巧
怎麼將陣列置空?
string ls_arr[],ls_null[]
int i
for i=1 to 10
ls_arr[i]=string(i)
next
messagebox('陣列長度',UpperBound(ls_arr))
ls_arr = ls_null
messagebox('陣列長度',UpperBound(ls_arr))
按照指定格式將資料轉換成字串
① 語法
String(data,{format})
② 引數
data
--> 指定需要轉換的資料,據型別可以是Date
、DateTime
、數值型別、Time
format
--> 可選項,指定轉換的資料格式
資料格式說明如下
Ⅰ 需要轉換的資料data 為數值
語法格式為:正數格式;負數格式;零的顯示格式
注意:除小數點(.)、逗號(,)能夠出現在格式字元#和0之間外,其它字元只能放置在格式串的前面或後面
如果顯示格式有多個部分,各部分之間的分號(;)不能省略
Ⅱ 需要轉換的資料data 為字串
語法格式為:正常字串格式
舉個栗子
string("0166767593",(@@)@@@@-@@@@)
//顯示為(01)6676-7593
Ⅲ 需要轉換的資料data為日期
1)年份
yy
兩位數位表示的年份(如92)
yyyy
四位數位表示的年份(如1992)
2)月份
m
開頭不帶0的月份(如9)
mm
開頭帶0的月份(如09)
mmm
月份的英文縮寫(如Feb)
mmmm
月份的英文全稱(如February)
3)日
d
開頭不帶0的日數(如9)
dd
開頭帶0的日數(如09)
ddd
星期的英文縮寫(如Mon)
dddd
星期的英文全稱(如Monday)
[General]
Windows系統中定義的短日期格式[LongDate]
Windows系統中定義的長日期格式[ShortDate]
Windows系統中定義的短日期格式Ⅳ 需要轉換的資料data為時間
1) 小時
h開頭不帶0的小時(比如6)
hh開頭帶0的小時(比如06)
2) 分鐘
h開頭不帶0的小時(比如6)
hh開頭帶0的小時(比如06)
3) 秒
s開頭不帶0的秒(比如6)
ss開頭帶0的秒(比如06)
4)上午下午
把其他型別資料轉換成Time型別的值
① 語法
Ⅰ 將DateTime型別或第一個值是DateTime或Time的Blob值轉換成Time型別的值
Time ( datetime )
Ⅱ 將其值是個有效時間的字串轉換成Time型別的值
Time ( string )
Ⅲ 將表示時、分、秒、以及微秒的整陣列合成一個時間值
Time(hour, minute, second {, microsecond })
② 引數
datetime
--> DateTime
型別的值或第一個值是DateTime
或Time
的Blob
型別的值
string
--> string
型別,其值包括一個有效的以字串形式表示的時間(比如9am或10:25)
hour, minute, second {, microsecond }
③ 返回
Ⅰ datetime
轉換
返回值:Time
成功時返回相應的Time型別值
如果datetime
引數中的值不是有效時間或資料型別不相容,函數返回00:00:00.000000
如果datetime
引數的值為NULL
,函數返回NULL
Ⅱ 字串轉換
返回值:Time
成功時返回相應的Time型別值
string引數中的值不是有效格式時間,函數返回00:00:00.000000
如果string引數的值為NULL
,函數返回NULL
Ⅲ 時分秒毫秒合成時間
返回值:Time
成功時返回由hour、minute、second、microsecond 四個引數確定的時間
如果這四個引數中任何一個引數使用了無效值,函數返回NULL
將其它型別的資料轉換為Date型別的資料
① 語法
Ⅰ將DateTime型別或第一個值是DateTime或Date的Blob值轉換成Date型別的值
Date ( datetime )
Ⅱ 將有效日期的字串轉換成Date型別的值
Date ( string )
Ⅲ 將年、月、日合成一個日期
Date ( year, month, day )
② 引數
datetime
--> DateTime
型別的值或第一個值是DateTime
或Time
的Blob
型別的值
string
--> string
型別,有效字串形式的日期(比如1992-09-23)
year, month, day
③ 返回
Ⅰ datetime
轉換日期
datetime
引數中的值不是有效日期或資料型別不相容,函數返回1900-01-01
datetime
引數的值為NULL
,函數返回NULL
Ⅱ 字串轉換日期
string
引數中的值不是有效日期或資料型別不相容,函數返回1900-01-01
string
引數的值為NULL
,函數返回NULL
Ⅲ 年月日合成日期
year
、month
、day三個引數確定的日期1900-01-01
NULL
,函數返回NULL
將其它型別的資料轉換為DateTime型別的資料
① 語法
Ⅰ 把日期和時間值組合成DateTime型別的值
DateTime ( date {, time } )
Ⅱ 將Blob型別的值轉換成DateTime型別的值
DateTime ( blob )
② 引數
Ⅰ日期和時間值組合成DateTime
型別的值
date
-->Date型別的日期值time
-->可選引數,Time型別的時間值,省略時,時間預設是00:00:00.000000
Ⅱ Blob
型別的值轉換成DateTime
型別的值
blob
-->Blob型別變數 把該變數第一個值轉換為DateTime
型別的值 ,blob
引數也可以是包含blob
型別資料的Any型別變數③ 返回
Ⅰ 日期和時間值組合成DateTime
型別的值
DateTime
DateTime
型別的值NULL
,函數返回NULL
Ⅱ 將Blob型別的值轉換成DateTime
型別的值
DateTime
DateTime
型別值blob
引數的值為NULL
,函數返回NULL
獲取字串第一個字元的ASCII碼整數值
① 語法
Asc ( string )
② 引數
string
-->目標字串
③ 返回
integer
string
引數第一個字元的ascii
值string
引數的值為null
,函數返回null將字串的第一個字元、Blob變數的第一個值、或一個整數轉換成字元
① 語法
Char ( any )
② 引數
any
-->字串、Blob
變數或整數,也可以是包含上述型別資料的Any型別變數
③ 返回
Char
any
的第一個字元any
引數的值為NULL
,函數返回NULL
將字串或Blob值轉換成Decimal型別的值
① 語法
Dec ( strorblob )
② 引數
strorblob
-->string型別變數或Blob型別變數
③ 返回
Decimal
Decimal
型別值strorblo
b引數中的值不是有效數位或資料型別不相容,函數返回0strorblob
引數的值為NULL
,函數返回NULL
字串或Blob值轉換成Double型別的值
① 語法
Double(strorblob)
② 引數
strorblob
-->string型別變數或Blob型別變數
③ 返回
Double
Double
型別值strorblob
引數中的值不是有效數位或資料型別不相容,函數返回0strorblob
引數的值為NULL
,函數返回NULL
將字串或Blob值轉換成Integer型別的值
① 語法
Integer ( strorblob )
② 引數
strorblob
-->string型別變數或Blob型別變數
③ 返回
Integer
Integer
型別值strorblob
引數中的值不是有效數位或資料型別不相容,函數返回0strorblob
引數的值為NULL
,函數返回NULL
將其它型別的資料轉換為Long型別的值
① 語法
Ⅰ 將兩個無符號整陣列合成一個長整數值
Long ( lowword, highword )
Ⅱ 字串或Blob值轉換成Long型別的值
Long ( strorblob )
② 引數
Ⅰ 將兩個無符號整陣列合成一個長整數值
lowword
-->UnsignedInteger
型別,指定長整數中的低位值highword
-->UnsignedInteger
型別,指定長整數中的高位值Ⅱ 字串或Blob值轉換成Long型別的值
strorblob
-->string型別變數或Blob型別變數
③ 返回
Ⅰ 將兩個無符號整陣列合成一個長整數值
Long
NUL
L,函數返回NULL
Ⅱ 字串或Blob值轉換成Long型別的值
Long
NULL
,函數返回NULL
將字串或Blob值轉換成Real型別的值
① 語法
Real ( strorblob )
② 引數
strorblob
-->string
型別變數或Blob
型別變數
③ 返回
Real
Real
型別值strorblob
引數中的值不是有效數位或資料型別不相容,函數返回0stringorblob
引數的值為NULL
,函數返回NULL
判斷指定的字串是否包含有效的日期
① 語法
IsDate ( strvalue )
② 引數
strvalue
-->string
型別,指定要判斷的字串
③ 返回
Boolean
strvalue
包含了有效的日期,函數返回TRUE
,否則返回FALSE
strvalue
引數的值為NULL
,函數返回NULL
判斷字串是否是有效的數值
① 語法
IsNumber ( strvalue )
② 引數
strvalue
-->string
型別,指定要判斷的字串
③ 返回
Boolean
strvalue
的值為有效數位,函數返回TRUE
,否則返回FALSE
strvalue
引數的值為NULL
,函數返回NULL
判斷字串的值是否是有效的時間
① 語法
IsTime ( strvalue )
② 引數
strvalue
-->string
型別,指定要判斷的字串
③ 返回
Boolean
strvalue
的值為有效的時間,函數返回TRUE
,否則返回FALSE
strvalue
引數的值為NULL
,函數返回NULL
判斷值是否是NULL
① 語法
IsNull(any)
② 引數
any
:任何變數或表示式
③ 返回
Boolean
NULL
,函數返回TRUE
,否則返回FALSE
判斷物件變數是否已經範例化
① 語法
IsValid ( objectname )
② 引數
objectname
-->要檢測的物件名
③ 返回
Boolean
TRUE
,否則返回FALSE
objectname
的值為NULL
,函數返回NULL
將指定變數的值設定為NULL。這裡的變數可以是除陣列、結構、自動範例化物件之外的任何資料型別
① 語法
SetNull ( anyvariable )
② 引數
anyvariable
-->要將其值設定為NULL
的變數
③ 返回
Integer
NULL
,函數返回NULL
計算絕對值
① 語法
Abs ( n )
② 引數
n
-->要求絕對值的數值型變數 或 返回值為數值的表示式
③ 返回
n
的絕對值NULL
,返回NULL
返回大於n的最小整數
① 語法
Ceiling ( n )
② 引數
n
-->數值型變數 或 返回值為數值的表示式
③ 返回
NULL
,函數返回NULL
計算餘弦
① 語法
Cos ( n )
② 引數
n
-->數值型變數 或 返回值為數值的表示式
③ 返回
NULL
,返回NULL
計算e的n次方
① 語法
Exp ( n )
② 引數
n
-->指定冪值
③ 返回
Double
NULL
,返回NULL
計算n的階乘
① 語法
Fact ( n )
② 引數
n
-->數值型變數 或 返回值為數值的表示式
③ 返回
Double
NULL
,返回NULL
得到小於等於n的最大整數
① 語法
Int ( n )
② 引數
n
-->數值型變數 或 返回值為數值的表示式
③ 返回
Integer
NULL
,返回NULL
計算n的自然對數
① 語法
Log ( n )
② 引數
n
-->數值型變數 或 返回值為數值的表示式值必須大於0
③ 返回
Double
NULL
,返回NULL
計算n的常用對數(以10為底)
① 語法
LogTen ( n )
② 引數
n
-->數值型變數 或 返回值為數值的表示式值必須大於0
③ 返回
Double
NULL
,函數返回NULL
求兩個數中最大值
① 語法
Max ( x, y )
② 引數
x
-->數值型變數或表示式,參加比較的第一個數y
-->數值型變數或表示式,參加比較的第二個數③ 返回
NULL
,返回NULL
兩個數中的最小值
① 語法
Min( x, y )
② 引數
x
-->數值型變數或表示式,參加比較的第一個數
y
-->數值型變數或表示式,參加比較的第二個數
③ 返回
NULL
,返回NULL
求餘數
① 語法
Mod ( x, y )
② 引數
x
-->數值型變數或表示式,被除數
y
-->數值型變數或表示式,除數
③ 返回
NULL
,數返回NULL
計算n與Pi(3.14159265358979323...)的乘積
① 語法
Pi ( n )
② 引數
n
-->數值型變數或表示式
③ 返回
Double
NULL
,返回NULL
得到1與n之間的一個偽亂數
① 語法
Rand ( n )
② 引數
n
:數值型變數或表示式 產生亂數的最大值 1到32,767之間
③ 返回
NULL
初始化偽亂數發生器,這樣讓應用程式每次使用不同的偽亂數序列
① 語法
Randomize ( n )
② 引數
n
-->數值型變數或表示式,指定偽亂數生成器使用的起始值,不同的起始值可以生成不同的偽亂數序列
注:n的值在0到32,767之間
③ 返回
Integer
將x四捨五入到n位
① 語法
Round ( x, n )
② 引數
x
-->要四捨五入的數值型資料
n
-->整數型別,指定從哪個小數位上四捨五入x。
注:有效值在0到18之間
③ 返回
Decimal
NULL
,函數返回NULL
確定n是整數、負數還是零
① 語法
Sign ( n )
② 引數
n
-->數值型變數或表示式
③ 返回
NULL
,函數返回NULL
計算正弦,其中引數以弧度為單位
① 語法
Sin( n )
② 引數
n
-->數值型變數或表示式
③ 返回
Double
NULL
,返回NULL
計算平方根
① 語法
Sqrt ( n )
② 引數
n
-->數值型變數或表示式 n的值大於0
③ 返回
Double
NULL
,返回NULL
計算正切,其中引數以弧度為單位
① 語法
Tan( n )
② 引數
n
-->數值型變數或表示式
③ 返回
Double
NULL
,返回NULL
截斷數值到指定的小數位 , 所謂截斷就是捨棄指定位之後的數值
① 語法
Truncate ( x, n )
② 引數
x
-->要截斷的數值型資料n
-->整數型別,指定從哪個小數位上截斷x注:有效值在0到18之間
③ 返回
Decimal
到自當前應用程式啟動後開始CPU所消耗的時間,以毫秒為單位
① 語法
CPU()
② 引數
無
③ 返回
Long
在指定的時間間隔內反覆觸發指定視窗的定時器事件
① 語法
Timer ( interval {, windowname } )
② 引數
interval
-->指定兩次觸發Timer
事件之間的時間間隔,有效值在0到65之間windowname
-->視窗名,指定時間間隔到時要觸發哪個視窗的Timer事件。省略該引數時,觸發當前視窗的Timer事件注:
引數的值指定為0,那麼關閉定時器,不再觸發指定視窗的Timer事件
該函數在使用者每次活動(例如,按鍵盤、移動滑鼠等)後重置定時器,n秒後觸發應用物件的Idle事件
① 語法
Idle ( n )
② 引數
n
-->指定空閒時間間隔,以秒為單位
引數的值設定為0時,停止空閒檢測,不再觸發應用物件的Idle事件
③ 返回
Integer
NULL
,返回NULL
在系統註冊庫中設定或建立指定鍵
① 語法
RegistrySet ( key, valuename, valuetype, value )
② 引數
key
-->string
型別,指定鍵名valuename
-->string
型別,指定要存取值的名稱
valuetype
-->RegistryValueType
列舉型別,指定值的資料型別。有效取值請參看用法value
-->要設定的值,其資料型別應該與valuetype
引數指定的型別相匹配③ 返回
Integer
valuevariable
的資料型別與valuetype
引數指定的型別不匹配,將引發執行錯誤④ 舉個栗子
//利用登入檔修改ODBC設定資訊
RegistrySet( 'HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources','localdb',REGSTRING!,'Driver do Microsoft Access (*.mdb)')
從系統註冊庫中得到指定鍵的值
① 語法
RegistryGet ( key, valuename, valuetype, valuevariable )
② 引數
key
-->string
型別,指定鍵名valuename
-->string
型別,指定要存取值的名稱。每個鍵可以有一個未命名的值和多個命名的值。要存取未valuetype
-->RegistryValueType
列舉型別,指定值的資料型別。有效取值請參看用法valuevariable
-->用於儲存鍵值的變數,其資料型別應該與valuetype
引數指定的型別相匹配③ 返回
Integer
valuevariable
的資料型別與valuetype
引數指定的型別不匹配,將引發執行錯誤④ 舉個栗子
//取得印表機驅動程式名稱 RegistryGet("HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Printers\"+str_printername,"Printer Driver", RegString!,str_driver)
刪除Windows系統註冊庫中的一個鍵或鍵的某個值
① 語法
RegistryDelete ( key, valuename )
② 引數
key
-->string
型別,指定鍵名,將刪除該鍵或刪除該鍵的某個值
valuename
-->string
型別,指定要刪除的值的名稱
注:如果想刪除鍵、鍵的值、以及其下的所有子鍵,那麼將該引數指定為空字串
③ 返回
Integer
④ 舉個栗子
event clicked;Registrydelete( "HKEY_LOCAL_MACHINE\Software\NEUHIS", "")
從系統註冊庫中得到指定鍵的有效子鍵
① 語法
RegistryKeys ( key, subkeys )
② 引數
key
-->string
型別,指定鍵名subkeys
-->字串陣列變數,用於儲存各子鍵③ 返回
Integer
④ 舉個栗子
string str_printer[] //定義一個字串型陣列
int_return = RegistryKeys("HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Printers", str_printer)
得到與指定鍵相關的一組值名
① 語法
RegistryValues ( key, valuename )
② 引數
key
-->string型別,指定鍵名valuename
-->字串陣列變數,用於儲存值名③ 返回
Integer
以指定的讀寫方式開啟指定的檔案,同時返回該檔案的控制程式碼
① 語法
FileOpen(filename{,filemode{,fileaccess{,filelock{,writemode,{creator,filetype}}}}})
② 引數
filename
-->string
型別,指定要開啟檔案的名稱,其中可以包含路徑
filemode
-->FileMode
列舉型別,可選項,指定檔案開啟方式
fileaccess
-->FileAccess
列舉型別,可選項,指定檔案存取方式。
filelock
-->FileLock
列舉型別,可選項,指定檔案加鎖方式
writemode
-->WriteMode
列舉型別,可選項
creator
-->可選項,用於Macintosh機,使用四個字元的字串指定檔案的建立者。指定該引數後,必須同時
指定filetype
引數
filetype
-->可選項,用於Macintosh機,使用四個字元的字串指定檔案型別
③ 返回
Integer
NULL
,函數返回NULL
④ 舉個栗子
int li_file_no
string ls_getpath_data
ls_getpath_data = "F:\xiezhr.txt"
li_file_no = FileOpen(ls_getpath_data,LineMode!,Write!,Shared!,Append!)
向指定檔案中寫資料
① 語法
FileWrite (fileno , variable )
② 引數
fileno
-->integer
型別,指定檔案控制程式碼(由FileOpen()
函數得到)
variable
-->string
或blob
型別,其值將寫入fileno
引數指定的檔案
③ 返回
Integer
NULL
,函數返回NULL
④ 舉個栗子
int li_file_no
string ls_getpath_data
string ls_writed
string ls_err
ls_writed = "個人公眾號:XiezhrSpace"
ls_getpath_data = "F:\xiezhr.txt"
li_file_no = FileOpen(ls_getpath_data,LineMode!,Write!,Shared!,Append!)
if li_file_no = 0 then
ls_err ="不能開啟檔案!"
FileClose(li_file_no)
return -1
else
if FileWrite(li_file_no, ls_writed) < 0 then
ls_err = "寫檔案出錯!"
FileClose(li_file_no)
return -1
end if
end if
從指定檔案中讀取資料
① 語法
FileRead ( fileno, variable )
② 引數
fileno
-->integer
型別,指定檔案控制程式碼(由FileOpen()
函數得到)
variable
-->string
或blob
型別的變數,用於儲存讀取的資料
③ 返回
Integer
EOF
),函數返回-100CR
)或換行(LF
)字元,函數返回0NULL
,函數返回NULL
④ 舉個栗子
將xiezhr.txt 檔案中的內容讀取出來放到變數ls_Input 中
int li_FileNum
string ls_path
string ls_Input
ls_path = "F:\xiezhr.txt"
li_FileNum = FileOpen(ls_path, LineMode!)
FileRead(li_FileNum, ls_Input)
關閉先前用FileOpen()函數開啟的檔案
① 語法
FileClose ( fileno )
② 引數
fileno
-->integer
,指定要關閉檔案的檔案控制程式碼,該控制程式碼使用FileOpen()
函數開啟檔案時得到
③ 返回
Integer
fileno
引數的值為NULL
,函數返回NULL
檢查指定的檔案是否存在
① 語法
FileExists ( filename )
② 引數
filename
-->string
型別,指定要檢查存在性的檔案的檔名,其中可以包含路徑
③ 返回
Boolean
TRUE
,不存在時返回FALSE
filename
引數的值為NULL
,函數返回NULL
刪除指定的檔案
① 語法
FileDelete ( filename )
② 引數
filename
-->string
型別,指定要刪除檔案的檔名,其中可以包含路徑
③ 返回
Boolean
TRUE
,發生錯誤時返回FALSE
NULL
,函數返回NULL
得到指定檔案的長度(以位元組為單位)
① 語法
FileLength ( filename )
② 引數
filename
-->string
型別,指定要得到其長度的檔案的檔名,其中可以包含路徑
③ 返回
Long
filename
引數的值為NULL
,函數返回NULL
將檔案指標移動到指定位置。讀寫檔案時相應函數會自動移動檔案指標
① 語法
FileSeek ( fileno, position, origin )
② 引數
fileno
-->integer
型別,指定檔案控制程式碼(由FileOpen()
函數得到)position
-->long
型別,指定相對於origin引數指定位置的新位置偏移量,以位元組為單位origin
-->eekType
列舉型別,指定從哪裡開始移動檔案指標,即指標移動的基準
顯示開啟檔案對話方塊,讓使用者選擇要開啟的檔案
① 語法
GetFileOpenName(title,pathname,filename{,extension{,filter}})
② 引數
title
-->string
型別,指定對話方塊的標題pathname
-->string
型別變數,用於儲存該對話方塊返回的檔案路徑及檔名filename
-->string
型別變數,用於儲存該對話方塊返回的檔名extension
-->string
型別,可選項,使用1到3個字元指定預設的擴充套件檔名filter
-->string
型別,可選項,其值為檔名掩碼,指定顯示在該對話方塊的列表框中供使用者選擇的檔名滿③ 返回
Integer
NULL
,函數返回NULL
顯示儲存檔案對話方塊,讓使用者選擇要儲存到的檔案
① 語法
GetFileSaveName(title,pathname,filename{,extension{,filter}})
② 引數
title
-->string
型別,指定對話方塊的標題
pathname
-->string
型別變數,用於儲存該對話方塊返回的檔案路徑及檔名
filename
-->string
型別變數,用於儲存該對話方塊返回的檔名
extension
-->string
型別,可選項,使用1到3個字元指定預設的擴充套件檔名
filter
-->string
型別,可選項,其值為檔名掩碼,指定顯示在該對話方塊的列表框中供使用者選擇的檔名滿
足的條件(比如.,.TXT,.EXE等)
③ 返回
Integer
NULL
,函數返回NULL
啟動列印作業並返回作業號
① 語法
PrintOpen ( { jobname } )
② 引數
jobname
-->string
型別,可選項,指定要開啟列印作業的名稱,該名稱將顯示在列印管理器視窗中
③ 返回
Long
NULL
,函數返回NULL
注:
PrintOpen()
函數後,啟動新的列印作業並走紙到下一頁,同時將印表機預設字型設定為該列印PrintOpen()
函數開啟列印作業、使用同組的其它函數完成列印任務後,必須使用PrintClose()
關閉列印作業,或根據需要使用PrintCancel()
函數取消列印作業關閉列印作業並把列印頁面傳送到印表機上
① 語法
PrintClose ( printjobnumber )
② 引數
printjobnumber
-->要關閉的列印作業的作業號
③ 返回
Integer
printjobnumber
的值為NULL
,函數返回NULL
注意:應用程式使用PrintOpen()
函數啟動列印作業後,必須使用PrintClose()
在完成列印任務後關閉列印作
業,或根據需要使用PrintCancel()
函數取消列印作業
取消用PrintOpen()函數啟動的列印作業
① 語法
PrintCancel ( printjobnumber )
② 引數
printjobnumber
-->要取消的列印作業的作業號
③ 返回
Integer
printjobnumber
的值為NULL
,函數返回NULL
以當前字型在開啟的列印作業中列印一行或多行文字
① 語法
Print(printjobnumber,{tab1,}string{,tab2})
② 引數
printjobnumber
-->用PrintOpen()
函數開啟的列印作業號tab1
-->Integer
型別,可選項,指定文字開始列印的位置,在開始列印字串之前將列印遊標移動到該位置,string
-->string
型別,指定要列印的字串。如果字串中包括回車換行字元(rn),那麼該字串將被tab2
-->Integer
型別,可選項,指定字串列印結束後列印遊標移動到的位置,從列印區的左邊界開始計算,③ 返回
Integer
NULL
,函數返回NULL
④ 具體說明
在列印區域的指定位置列印點陣圖
① 語法
PrintBitmap ( printjobnumber, bitmap, x, y, width, height )
② 引數
printjobnumber
-->用PrintOpen()
函數開啟的列印作業號
bitmap
-->string
型別,指定要列印的點陣圖檔案的檔名
x
-->integer
型別,指定點陣圖起始列印位置的x座標,以千分之一英寸為單位
y
-->integer
型別,指定點陣圖起始列印位置的y座標,以千分之一英寸為單位
width
-->integer
型別,指定點陣圖的列印寬度,以千分之一英寸為單位。如果該引數的值指定為0,那麼按圖
像的原始寬度列印
height
-->integer
型別,指定點陣圖的列印高度,以千分之一英寸為單位。如果該引數的值指定為0,那麼按圖
像的原始高度列印
③ 返回
Integer
NULL
,函數返回NULL
列印資料視窗控制元件的內容,用該函數可以在一個列印作業中列印多個資料視窗控制元件的內容,每個都從新的一頁開始列印
① 語法
PrintDataWindow ( printjobnumber, dwcontrol )
② 引數
printjobnumber
-->用PrintOpen()
函數開啟的列印作業號
dwcontrol
-->要列印其內容的資料視窗控制元件名或子資料視窗控制元件名
③ 返回
Integer
printjobnumber
的值為NULL
,函數返回NULL
定義列印作業使用的字型,對每個列印作業PB支援八種字型。
① 語法
PrintDefineFont(printjobnumber,fontnumber,facename,height,weight,fontpitch,fontf
amily, italic,underline)
② 引數
printjobnumber
-->用PrintOpen()
函數開啟的列印作業號
fontnumber
-->指定賦給當前定義字型的編號,有效值在1到8之間
facename
-->string
型別,指定字型名稱,該字型應該是你的印表機支援的字型,比如「宋體」
height
-->Integer
型別,使用正值指定字型的高度,以千分之一英寸為單位;使用負值指定字型點數,比
如,-18代表18點。一般來說,使用點數更精確些
weight
:指定字型的磅數,正常字型為400磅,粗體為700磅
fontpitch
:FontPitch
列舉型別,指定字型標準
fontfamily
:FontFamily列舉型別,指定字型系列
italic
:boolean
型別,指定是否使用斜體樣式。有效取值為:
underline
-->boolean
型別,指定是否加下劃線。
③ 返回
Integer
NULL
,函數返回NULL
在當前列印頁上繪出指定厚度的一條線
① 語法
PrintLine ( printjobnumber, x1, y1, x2, y2, thickness )
② 引數
printjobnumber
-->用PrintOpen()
函數開啟的列印作業號x1
-->integer
型別,指定直線起點的x座標,以千分之一英寸為單位y1
-->integer
型別,指定直線起點的y座標,以千分之一英寸為單位x2
-->integer
型別,指定直線終點的x座標,以千分之一英寸為單位y2
-->integer
型別,指定直線終點的y座標,以千分之一英寸為單位thickness
-->integer
型別,指定直線的厚度,以千分之一英寸為單位③ 返回
NULL
,函數返回NULL
在指定位置以指定線寬繪製橢圓或圓
① 語法
PrintOval ( printjobnumber, x, y, width, height, thickness )
② 引數
printjobnumber
-->用PrintOpen()
函數開啟的列印作業號x1
-->integer
型別,指定直線起點的x座標,以千分之一英寸為單位y1
-->integer
型別,指定直線起點的y座標,以千分之一英寸為單位x2
-->integer
型別,指定直線終點的x座標,以千分之一英寸為單位y2
-->integer
型別,指定直線終點的y座標,以千分之一英寸為單位thickness
-->integer
型別,指定直線的厚度,以千分之一英寸為單位③ 返回
NULL
,函數返回NULL
將當前頁傳送給印表機或列印池並在當前列印作業中啟動一個新的列印頁
① 語法
PrintPage ( printjobnumber )
② 引數
printjobnumber
-->用PrintOpen()
函數開啟的列印作業號
③ 返回
Integer
NULL
,函數返回NULL
在指定位置以指定線寬列印矩形
① 語法
PrintRect ( printjobnumber, x, y, width, height, thickness )
② 引數
printjobnumber
-->用PrintOpen()
函數開啟的列印作業號x1
-->integer
型別,指定直線起點的x座標,以千分之一英寸為單位y1
-->integer
型別,指定直線起點的y座標,以千分之一英寸為單位x2
-->integer
型別,指定直線終點的x座標,以千分之一英寸為單位y2
-->integer
型別,指定直線終點的y座標,以千分之一英寸為單位thickness
-->integer
型別,指定直線的厚度,以千分之一英寸為單位③ 返回
NULL
,函數返回NULL
在指定位置以指定線寬列印圓角矩形
① 語法
PrintRoundRect(printjobnumber,x,y,width,height,xradius,yradius,thickness)
② 引數
printjobnumber
-->用PrintOpen()
函數開啟的列印作業號x
-->integer
型別,指定圓角矩形左上角的x座標,以千分之一英寸為單位y
-->integer
型別,指定圓角矩形左上角的y座標,以千分之一英寸為單位width
-->integer
型別,指定圓角矩形的寬度,以千分之一英寸為單位height
-->integer
型別,指定圓角矩形的高度,以千分之一英寸為單位xradius
-->integer
型別,指定圓角矩形圓角部分的x半徑,以千分之一英寸為單位yradius
-->integer
型別,指定圓角矩形圓角部分的y半徑,以千分之一英寸為單位thickness
-->integer
型別,指定圓角矩形邊線的厚度,以千分之一英寸為單位③ 返回
Integer
NULL
,函數返回NULL
在列印作業中列印螢幕影象
① 語法
PrintScreen ( printjobnumber, x, y {, width, height } )
② 引數
printjobnumber
-->用PrintOpen()
函數開啟的列印作業號x
-->integer
型別,指定要列印螢幕影象左上角在列印頁上的x座標,以千分之一英寸為單位y
-->integer
型別,指定要列印螢幕影象左上角在列印頁上的y座標,以千分之一英寸為單位width
-->integer
型別,可選項,指定螢幕影象的列印寬度,以千分之一英寸為單位。如果省略了該引數,那height
-->integer
型別,可選項,指定螢幕影象的列印高度,以千分之一英寸為單位。如果省略了該引數,③ 返回
Integer
NULL
,函數返回NULL
直接向印表機傳送任意字串,通常用於傳送印表機的控制程式碼
① 語法
PrintSend ( printjobnumber, string {, zerochar } )
② 引數
printjobnumber
-->用PrintOpen()
函數開啟的列印作業號string
-->string
型別,指定傳送到印表機的字串。在該字串中,使用非列印字元的ASCII碼值表示非打zerochar
-->integer
型別,可選項,指定在string引數中用於表示數值0的ASCII碼值。有效取值在1到255③ 返回
Integer
NULL
,函數返回NULL
設定當前列印作業使用的字型
① 語法
PrintSetFont ( printjobnumber, fontnumber )
② 引數
printjobnumber
-->用PrintOpen()
函數開啟的列印作業號fontnumber
-->指定該列印作業使用字型的字型編號,該編號與PrintDefineFont()
函數中定義的編號應該③ 返回
Integer
NULL
,函數返回NULL
設定行間距因子,列印函數將使用該因子來決定行間距
① 語法
PrintSetSpacing ( printjobnumber, spacingfactor )
② 引數
printjobnumber
-->用PrintOpen()
函數開啟的列印作業號spacingfactor
-->指定行間距因子,用字元高度的倍數表示,預設值為1.2③ 返回
Integer
NULL
,函數返回NULL
開啟印表機設定對話方塊
① 語法
PrintSetup ( )
② 引數
無
③ 返回
NULL
,函數返回NULL
在指定位置列印一行文字
① 語法
PrintText ( printjobnumber, string, x, y {, fontnumber } )
② 引數
printjobnumber
-->用PrintOpen()
函數開啟的列印作業號string
-->string
型別,指定要列印的文字x
-->integer
型別,指定文字開始列印位置的x座標,以千分之一英寸為單位y
-->integer
型別,指定文字開始列印位置的y座標,以千分之一英寸為單位fontnumber
-->可選引數,指定列印文字使用的字型號,該編號由PrintDefineFont()
函數確定。省略該參③ 返回
Integer
NULL
,函數返回NULL
確定一個字串在指定列印作業中按當前字型所佔的寬度,以千分之一英寸為單位
① 語法
PrintWidth ( printjobnumber, string )
② 引數
printjobnumber
-->用PrintOpen()
函數開啟的列印作業號string
-->string
型別,指定要決定其列印寬度的字串③ 返回
Integer
NULL
,函數返回NULL
返回列印遊標的x座標位置
① 語法
PrintX ( printjobnumber )
② 引數
printjobnumber
-->用PrintOpen()
函數開啟的列印作業號
③ 返回
Integer
NULL
,函數返回NULL
返回列印遊標的y座標位置
① 語法
PrintY ( printjobnumber )
② 引數
printjobnumber
-->用PrintOpen()
函數開啟的列印作業號
③ 返回
Integer
NULL
,函數返回NULL
功能將控制權轉移給其它圖形物件,包括非PB物件。該函數檢測訊息佇列,如果有訊息,就把消
息取出。利用該函數可以在執行耗時較長的操作時把控制權轉讓給其它應用。
① 語法
Yield()
② 引數
無
③ 返回
Boolean
TRUE
,否則返回FALSE
④ 使用說明
正常情況下,PowerBuilder應用程式在執行一段程式碼(比如函數或事件處理程式)的過程中不響應使用者的操
作。
對耗時短暫的程式碼段來說,這種處理方式沒有什麼不妥的地方
但是,如果某個程式碼段的執行耗時較長,應用程式又希望為使用者提供更多的控制權,那麼需要在這段程式碼中插
入Yield()函數,讓使用者能夠進行其它操作,特別在迴圈執行的程式碼中更應該如此。
應用程式執行Yield()函數後,如果發現訊息佇列中存在訊息,它將允許物件處理這些訊息,處理之後,繼續
Yield()函數後面程式碼的執行。
因此,程式碼中插入Yield()函數將降低應用程式的執行效率
提取或替換Windows系統剪貼簿的文字內容。
① 語法
Clipboard ( { string } )
② 引數
string
-->string
型別,可選項,指定要複製到系統剪貼簿上的文字。
如果剪貼簿上已有內容的話,該文字將取代剪貼簿的當前內容
③ 返回
String
NULL
,返回NULLstring
引數時,剪貼簿的原有內容被string
引數的值取代;得到應用程式執行時指定的命令引數
① 語法
CommandParm()
② 引數
無
③ 返回
String
執行AppleScript程式段,該函數只在Macintosh平臺上有效
① 語法
DoScript ( script, result )
② 引數
script
-->string
型別,指定要執行的程式段(script)result
-->string
型別,由AppleScript
程式段返回的結果資訊或出錯資訊③ 返回
Integer
AppleScript
返回的結果程式碼。NULL
,函數返回NULL
得到當前應用物件的控制程式碼,這樣你可以查詢或設定應用物件的屬性(通常用於編寫通用程式碼)
① 語法
GetApplication ( )
② 引數
無
③ 返回
Application
得到作業系統、處理器、螢幕顯示等與系統相關的資訊
① 語法
GetEnvironment ( environmentinfo )
② 引數
environmentinfo
-->Environment
物件名,用於儲存系統環境資訊
③ 返回
Integer
environmentinfo
的值為NULL
,函數返回NULL
確定當前焦點位於哪個控制元件上
① 語法
GetFocus ( )
② 引數
無
③ 返回
GraphicObject
將指定訊息加入到某個視窗的訊息佇列中,這個視窗既可以是PowerBuilder應用的視窗,也可以是其它應用
的視窗
① 語法
Post( handle, messageno, word, long )
② 引數
handle
-->long
型別,指定視窗的系統控制程式碼,將向該視窗郵寄訊息messageno
-->UnsignedInteger
型別,指定要郵寄的訊息號word
-->long
型別,指定與訊息一起郵寄的word類引數值。如果messageno引數指定的訊息不使用該引數,那long
-->long
型別或string,指定與訊息一起郵寄的long型引數值或字串③ 返回
Boolean
NUL
L,函數返回NULL
停止所有程式段的執行、關閉所有視窗、提交事務、斷開與資料庫的連線,然後重新啟動應用程式
① 語法
Restart()
② 引數
無
③ 返回
Integer
執行指定的應用程式
① 語法
Run ( string {, windowstate } )
② 引數
string
-->string
型別,指定要執行的應用程式的名稱,其中可以包括路徑以及相應的引數,就像在命令列中windowstate
-->WindowState
列舉型別,可選項,指定程式執行時的視窗狀態
③ 返回
Integer
NULL
,返回NULL④ 使用說明
向視窗傳送指定的訊息並立即執行相應的事件處理程式
① 語法
Send( handle, messageno, word, long )
② 引數
handle
:long
型別,指定視窗的系統控制程式碼,將向該視窗傳送訊息messageno
:UnsignedInteger
型別,指定要傳送的訊息號word
:long
型別,指定與訊息一起傳送的word類引數值。如果messageno
引數指定的訊息不使用該引數,那long
:long
型別或string,指定與訊息一起傳送的long型引數值或字串③ 返回
Long
SendMessage()
的返回值,發生錯誤時返回-1NULL
,函數返回NULL
④ 使用說明
Send()函數用於向視窗傳送非PB預定義事件的訊息,這個視窗可以是PB應用的視窗,也可以是其它應用的視窗
Send()函數直接觸發指定視窗相應的事件,執行事件處理程式後返回到呼叫應用中,這一點與Post()函數不
同,Post()函數把傳送的訊息放置在指定視窗訊息佇列的尾部,然後返回到應用程式中,它並不等待相應事件
事件處理程式的執行。因此,我們說Post()函數採用的是非同步方式,Send()函數採用的是同步方式。
Send()函數的引數handle指定接收訊息的視窗控制程式碼,對PowerBuilder視窗來說,使用Handle()函數可以得到該控制程式碼。對其它應用程式的視窗來說,可以呼叫系統API函數查詢視窗並得到相應視窗的控制程式碼。
實際上,Send()函數把它的各個引數直接傳送給Windows的系統呼叫SendMessage()。
在各種C++開發工具的WINDOWS.H檔案中可以查到各訊息編號。
如果應用程式要傳送PowerBuilder定義事件(包括預定義事件和使用者定義事件),那麼使用TriggerEvent()函數既簡單有方便。
當應用程式在long引數位置指定一個字串時,Send()函數複製一個該字串的副本,然後將副本的地址傳
送給指定視窗
顯示應用程式幫助,該幫助使用Microsoft Windows幫助系統進行操作
① 語法
ShowHelp ( helpfile, helpcommand {, typeid } )
② 引數
helpfile
-->string
型別,指定幫助檔案的名稱helpcommand
-->HelpCommand
列舉型別,指定顯示幫助的格式typeid
引數
③ 返回
Integer
NULL
,函數返回NULL
觸發應用物件的SystemError事件,通常用於程式碼偵錯
① 語法
SignalError ( { number }, { text } )
② 引數
number
-->integer
型別,可選項,其值將儲存到Error物件的number屬性中text
-->string
型別,可選項,其值將儲存到Error物件的text屬性中③ 返回
Integer
①定義函數
/*
\>====================================================================
\> function:gf_createDataStore
\>--------------------------------------------------------------------
\> 描述: 根據SQL建立DataStore
\>--------------------------------------------------------------------
\> 引數:
\> String 型別 sql語句
\>--------------------------------------------------------------------
\> 返回:
\> DataStore型別 (函數執行成功返回DataStore)
\> Integer 型別 (函數執行成功資料的總行數)
\> String 型別 (函數執行失敗時返回錯誤資訊)
\>====================================================================
*/
String ls_DwSyntax //建立資料儲存的語法
String ls_Errors //錯誤資訊
String ls_FunName //函數名稱
ls_FunName = '~r~nCreateDataStore()-'
//建立資料儲存語法
ls_DwSyntax = SQLCA.SyntaxFromSQL(as_SqlSelect, 'Style(Type=Grid)',ls_Errors)
If Len(ls_Errors) > 0 Then
as_ErrInfo = ls_FunName + '不能返回資料窗語法,錯誤資訊:' + ls_Errors
Return -1
End If
ads_DataStore.Create(ls_DwSyntax,ls_Errors)
If Len(ls_Errors) > 0 Then
as_ErrInfo = ls_FunName + '不能建立資料儲存物件,錯誤資訊:' + ls_Errors
Return -1
End If
//檢索資料
ads_DataStore.SetTransObject(SQLCA)
ai_RowCount = ads_DataStore.Retrieve()
If ai_RowCount < 0 Then
as_ErrInfo = ls_FunName + '資料儲存檢索錯誤!'
Return -1
End If
as_ErrInfo = ''
Return 1
② 呼叫函數
int li_count
string ls_sql
string ls_err
DataStore lds_Info
ls_sql = "select empno, ename, job, mgr, hiredate, sal, comm, deptno from emp where empno = '7369' "
lds_Info = Create DataStore
If gf_createDataStore(lds_RecipeInfo,ls_sql,li_count,ls_err) = -1 Then
goto Err
End If
return
Err:
messagebox('提示資訊',ls_err)
① 參照動態庫,定義外部函數
FUNCTION ulong GetModuleFileName(ulong hModule,ref string lpFileName,ulong
nSize) LIBRARY "kernel32.dll" ALIAS FOR "GetModuleFileNameA"
② 定義函數
/*
\>====================================================================
\> function:gf_file_getexe
\>--------------------------------------------------------------------
\> 描述: 獲取exe名稱
\>--------------------------------------------------------------------
\> 引數:
\> showexesuffix:integer型別 (0、不顯示exe字尾,1、顯示exe字尾)
\>--------------------------------------------------------------------
\> 返回: string型別 (函數執行成功返回exe的名稱)
\>====================================================================
*/
string str_temp,separator
string str_list[]
integer i = 1,ll_pos,ll_max
string ls_fileName
GetModuleFileName(handle(this),ls_fileName,100)
separator = '\'
ll_pos = pos(ls_fileName,separator,1)
do
if ll_pos = 0 then
str_list[i] = ls_fileName
else
str_list[i] = left(ls_fileName,ll_pos - 1)
i ++
ls_fileName = mid(ls_fileName,ll_pos + len(separator))
ll_pos = pos(ls_fileName,separator,1)
if ll_pos = 0 then str_list[i] = ls_fileName
end if
loop while ll_pos <> 0
ll_max = upperbound(str_list)
if showexesuffix = 1 then
return mid(str_list[ll_max],1,pos(str_list[ll_max],'.') - 1)
else
return str_list[ll_max]
end if
③ 呼叫函數
string ls_exe
ls_exe = gf_get_exe(0) //不顯示exe字尾
ls_exe = gf_get_exe(1) //顯示exe字尾
① 定義函數
/*
\>==================================================================
\> Function: gf_file_write
\>--------------------------------------------------------------------
\> 描述: 檔案寫入
\>--------------------------------------------------------------------
\> 引數:
\> string fileway (開啟檔案的方式)
\> string filepath (要寫入的檔案路徑和檔名稱)
\> string filecontent (要寫入的內容)
\>--------------------------------------------------------------------
\> 返回: integer (0:成功,-1:失敗。)
====================================================================
*/
long ll_file,ll_FLength,ll_i,ll_count
string ls_content
choose case fileway
case 'w'
//流模式、寫入、所有使用者均可讀寫該檔案、覆蓋
ll_file = fileopen(filepath,streamMode!,Write!,Shared!,Replace!)
case 'w+'
//流模式、寫入、所有使用者均可讀寫該檔案、追加
ll_file = fileopen(filepath,streamMode!,Write!,Shared!,append!)
case 'wl'
//行模式、寫入、所有使用者均可讀寫該檔案、覆蓋
ll_file = fileopen(filepath,LineMode!,Write!,Shared!,Replace!)
case 'wl+'
//行模式、寫入、所有使用者均可讀寫該檔案、追加
ll_file = fileopen(filepath,LineMode!,Write!,Shared!,append!)
case else
messagebox('提示','gf_file_write:傳入的引數錯誤!')
return - 1
end choose
IF ll_file > 0 THEN
ll_FLength = len(filecontent)
if ll_FLength > 32765 then
if mod(ll_FLength,32765) = 0 then
ll_count = ll_FLength / 32765
else
ll_count = ll_FLength / 32765 + 1
end if
else
ll_count = 1
end if
for ll_i = 1 to ll_count
ls_content = left(filecontent,32765)
FileWrite(ll_file,ls_content)
filecontent = right(filecontent,len(filecontent) - 32765)
next
FileClose(ll_file)
else
messagebox('提示','gf_file_write:檔案開啟失敗!')
return - 1
end if
return 0
② 呼叫函數
gf_file_write('w',getcurrentdirectory() + '\1.txt','流模式覆蓋')
gf_file_write('w+',getcurrentdirectory() + '\1.txt','流模式追加')
gf_file_write('wl',getcurrentdirectory() + '\1.txt','行模式覆蓋')
gf_file_write('wl+',getcurrentdirectory() + '\1.txt','行模式追加')
① 函數定義
/*
\>====================================================================
\> Function: gf_file_read
\>--------------------------------------------------------------------
\> 描述: 檔案讀取
\>--------------------------------------------------------------------
\> 引數:
\> string fileway (開啟檔案的方式)
\> string filepath (要讀取的檔案路徑和檔名稱)
\> ref string filecontent[] (要返回的內容)
\>--------------------------------------------------------------------
\> 返回: integer (0:成功,-1:失敗。)
\>====================================================================
*/
long ll_file,ll_FLength,ll_i,ll_j,ll_count
string ls_content
choose case fileway
case 'r'
//流模式、讀取、所有使用者均可讀寫該檔案
ll_file = fileopen(filepath,streamMode!,Read!,Shared!)
IF ll_file > 0 THEN
ll_FLength = len(filepath)
if ll_FLength > 32765 then
if mod(ll_FLength,32765) = 0 then
ll_count = ll_FLength / 32765
else
ll_count = ll_FLength / 32765 + 1
end if
else
ll_count = 1
end if
for ll_i = 1 to ll_count
FileRead(ll_file,ls_content)
filecontent[1] += ls_content
next
else
messagebox('提示','gf_file_read:檔案開啟失敗!')
return - 1
end if
case 'rl'
//行模式、讀取、所有使用者均可讀寫該檔案
ll_file = fileopen(filepath,LineMode!,Read!,Shared!)
IF ll_file > 0 THEN
ll_j = 1
ll_i = FileRead(ll_file,filecontent[ll_j])
do until string(ll_i) = '-100'
ll_j = ll_j + 1
ll_i = FileRead(ll_file,filecontent[ll_j])
loop
FileClose(ll_file)
else
messagebox('提示','gf_file_read:檔案開啟失敗!')
return - 1
end if
case else
messagebox('提示','gf_file_read:傳入的引數錯誤')
return - 1
end choose
return 0
② 呼叫函數
(1)、以流模式讀取檔案
string ls_data[]
gf_file_read('r',getcurrentdirectory() + '\1.txt',ls_data[] )
messagebox('流模式返回值',ls_data[1])
(2)、以行模式讀取檔案
string ls_data[]
gf_file_read('rl',getcurrentdirectory() + '\1.txt',ls_data[] )
messagebox('行模式返回值',ls_data[1])
messagebox('行模式返回值',ls_data[2])
messagebox('行模式返回值',ls_data[3])
① 定義函數
/*
\>====================================================================
\> function: gf_string_cut.
\>--------------------------------------------------------------------
\> 描述: 字串切割
\>--------------------------------------------------------------------
\> 引數:
\> way:string (可選引數:array:將字串分割並返回一個陣列。string:將字串分割並返回一個
字串)
\> data:string (要進行分割的字串資料)
\> conditions:string (字串分割的條件)
\> value[] (字串分割後的值)
\>--------------------------------------------------------------------
\> 返回: integer (0:成功,-1:失敗。)
\>====================================================================
*/
long ll_empty_pos,i = 1
string ls_value_string,ls_value_array[]
choose case way
case 'array'
ll_empty_pos = pos(data,conditions)
if ll_empty_pos > 0 then
do
ls_value_array[i] = trim(mid(data,1,ll_empty_pos - 1))
data = trim(mid(data,ll_empty_pos + 1))
ll_empty_pos = pos(data,conditions)
i++
if ll_empty_pos = 0 then
ls_value_array[i] = trim(mid(data,0))
end if
loop while ll_empty_pos > 0
value[] = ls_value_array[]
else
messagebox('提示','gf_string_cut傳入的字串未找到!')
return - 1
end if
case 'string'
ll_empty_pos = pos(data,conditions)
if ll_empty_pos > 0 then
do
ls_value_string += trim(mid(data,1,ll_empty_pos - 1))
data = trim(mid(data,ll_empty_pos + 1))
ll_empty_pos = pos(data,conditions)
if ll_empty_pos = 0 then
ls_value_string += trim(mid(data,0))
end if
loop while ll_empty_pos > 0
value[1] = ls_value_string
else
messagebox('提示','gf_string_cut傳入的字串未找到!')
return - 1
end if
case else
messagebox('提示','gf_string_cut傳入的引數錯誤!')
return - 1
end choose
return 0
② 呼叫函數
string ls_data,ls_value[]
ls_data = '123,456,789'
//1、切割字串,並返回切割後的字串
gf_string_cut('string',ls_data,',',ls_value[])
messagebox('',ls_value[1]) //123456789
//2、切割字串,並返回陣列
gf_string_cut('array',ls_data,',',ls_value[])
messagebox('',ls_value[1]) //123
messagebox('',ls_value[2]) //456
messagebox('',ls_value[3]) //789
① 定義函數
/*
\>====================================================================
\> function:gf_string_replace
\>--------------------------------------------------------------------
\> 描述: 字串替換
\>--------------------------------------------------------------------
// 引數:
// string data 字串資料
// string as_old 將要替換的字元
// string as_new 要替換的新值
\>--------------------------------------------------------------------
\> 返回: string 替換後的字元
\>====================================================================
*/
long ll_oldlen, ll_newlen, ll_pos
ll_pos = Pos(data,as_old)
IF ll_pos > 0 Then
ll_oldlen = Len(as_old)
ll_newlen = Len(as_new)
DO WHILE ll_pos > 0
data = Replace(data,ll_pos,ll_oldlen,as_new)
ll_pos = Pos(data,as_old,ll_pos + ll_newlen)
LOOP
END IF
RETURN data
② 呼叫函數
string ls_data
ls_data = gf_string_replace('1234561','1','6')
messagebox('返回值',ls_data) //6234566
① 函數定義
/*
\>====================================================================
\> function: gf_adodb_blob_write.
\>--------------------------------------------------------------------
\> 描述:大檔案寫入(二進位制資料流)
\>--------------------------------------------------------------------
\> 引數:
\> string filepath (要寫入的檔案路徑和檔名稱)
\> blob filecontent (要寫入的二進位制資料檔案內容)
\>--------------------------------------------------------------------
\> 返回:integer (0:成功,-1:失敗。)
\>====================================================================
*/
long li_rtn,ll_file
string ls_data
OLEObject ADODB
ADODB = CREATE OLEObject
li_rtn = ADODB.ConnectToNewObject("ADODB.Stream")
if li_rtn = 0 then
ADODB.Type = 1 //設定ADODB型別(1、二進位制資料,2、文字資料)
ADODB.Mode = 3 //設定讀寫模式(1、讀,2、寫,3、讀寫)
ADODB.open() //開啟ADODB
ADODB.Position = 0 //Position=0才能設定Charset
ADODB.Write(filecontent) //Write 和 WriteText 方法向 Stream 中輸入位元組或文字。
ADODB.savetofile(filepath,2) //savetofile(1、只寫入1次。2、可覆蓋寫入多次)
ADODB.flush() //清空緩衝區資料
ADODB.Close() //關閉流
destroy ADODB
else
messagebox('提示', '無法連線【ADODB.Stream】!~r~n讀取檔案失敗!')
return - 1
end if
return 0
② 呼叫函數
gf_adodb_blob_write(getcurrentdirectory()+'\a.txt',blob('123'))
① 函數定義
/*
\>====================================================================
\> function: gf_adodb_blob_read.
\>--------------------------------------------------------------------
\> 描述: 大檔案讀取(二進位制資料流)
\>--------------------------------------------------------------------
\> 引數:
\> string filepath (要讀取的檔案路徑和檔名稱)
\>--------------------------------------------------------------------
\> 返回: blob (從檔案中讀取到的blob資料)
\>====================================================================
*/
long li_rtn
blob lb_data
OLEObject ADODB
ADODB = CREATE OLEObject
li_rtn = ADODB.ConnectToNewObject("ADODB.Stream")
if li_rtn = 0 then
ADODB.Type = 1 //設定ADODB型別(1、二進位制資料,2、文字資料)
ADODB.Mode = 3 //設定讀寫模式(1、讀,2、寫,3、讀寫)
ADODB.Open() //開啟ADODB
ADODB.LoadFromFile(filepath) //載入檔案
ADODB.Position = 0 //Position=0才能設定Charset
lb_data = ADODB.Read() //Read 和 ReadText 方法向 Stream 中讀取位元組或文字。
ADODB.flush() //清空緩衝區資料
ADODB.Close() //關閉流
destroy ADODB
else
messagebox('提示', '無法連線【ADODB.Stream】!~r~n讀取檔案失敗!')
end if
return lb_data
② 函數呼叫
blob lb_data
lb_data = gf_adodb_blob_read(getcurrentdirectory()+'\a.txt')
messagebox('blob',string(lb_data))
① 函數定義
/*
\>====================================================================
\> function: gf_adodb_string_write.
\>--------------------------------------------------------------------
\> 描述:大檔案寫入(文字流)
\>--------------------------------------------------------------------
\> 引數:
\> string filepath (要寫入的檔案路徑和檔名稱)
\> string filecontent (要寫入的文字流內容)
\>--------------------------------------------------------------------
\> 返回:integer (0:成功,-1:失敗。)
\>====================================================================
*/
long li_rtn,ll_file
string ls_data
OLEObject ADODB
ADODB = CREATE OLEObject
li_rtn = ADODB.ConnectToNewObject("ADODB.Stream")
if li_rtn = 0 then
ADODB.Type = 2 //設定ADODB型別(1、二進位制資料,2、文字資料)
ADODB.Mode = 3 //設定讀寫模式(1、讀,2、寫,3、讀寫)
ADODB.open() //開啟ADODB
ADODB.Position = 0 //Position=0才能設定Charset
ADODB.WriteText(filecontent) //Write 和 WriteText 方法向 Stream 中輸入位元組或文字。
ADODB.savetofile(filepath,2) //savetofile(1、只寫入1次。2、可覆蓋寫入多次)
ADODB.flush() //清空緩衝區資料
ADODB.Close() //關閉流
destroy ADODB
else
messagebox('提示', '無法連線【ADODB.Stream】!~r~n讀取檔案失敗!')
return - 1
end if
return 0
② 函數呼叫
gf_adodb_string_write(getcurrentdirectory()+'\a.txt','123')
① 函數定義
/*
\>====================================================================
\> function: gf_adodb_string_read.
\>--------------------------------------------------------------------
\> 描述: 大檔案讀取(文字流)
\>--------------------------------------------------------------------
\> 引數:
\> string filepath (要讀取的檔案路徑和檔名稱)
\>--------------------------------------------------------------------
\> 返回: string (從檔案中讀取到的blob資料)
\>====================================================================
*/
long li_rtn
string ls_data
OLEObject ADODB
ADODB = CREATE OLEObject
li_rtn = ADODB.ConnectToNewObject("ADODB.Stream")
if li_rtn = 0 then
ADODB.Type = 2 //設定ADODB型別(1、二進位制資料,2、文字資料)
ADODB.Mode = 3 //設定讀寫模式(1、讀,2、寫,3、讀寫)
ADODB.Open() //開啟ADODB
ADODB.LoadFromFile(filepath) //載入檔案
ADODB.Position = 0 //Position= 0才能設定Charset
ls_data = ADODB.ReadText() //Read 和 ReadText 方法向 Stream 中讀取位元組或文字。
ADODB.flush() //清空緩衝區資料
ADODB.Close() //關閉流
destroy ADODB
else
messagebox('提示', '無法連線【ADODB.Stream】!~r~n讀取檔案失敗!')
end if
return ls_data
② 函數呼叫
string ls_data
ls_data = gf_adodb_string_read(getcurrentdirectory()+'\a.txt')
messagebox('string',ls_data)
① 函數定義
/*
\>====================================================================
\> Function: gf_remove_letter
\>--------------------------------------------------------------------
\> 描述: 移除字串中的字母
\>--------------------------------------------------------------------
\> 引數:
\> string ls_data 要去除字母的字串
\>--------------------------------------------------------------------
\> 返回: string
\>====================================================================
*/
string str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
string ls_data_new
long i
if ls_data = '' or isnull(ls_data) then
ls_data_new = ''
else
for i = 1 to len(ls_data)
if pos(str,mid(ls_data,i,1)) = 0 then
ls_data_new += mid(ls_data,i,1)
end if
next
end if
return ls_data_new
② 函數呼叫
gf_remove_letter('12abc3sdfsg4')
① 函數定義
/*
>====================================================================
> Function: gf_last_month
>--------------------------------------------------------------------
> 描述: 獲取上個月初到月底的時間
>--------------------------------------------------------------------
> 引數:
> ref string lrt_start
> ref string lrt_end
>--------------------------------------------------------------------
> 返回值: (none)
>====================================================================
*/
string ls_by2
string ls_by,ls_sy
ls_by2 = mid(string(date(today())),1,7) + '-01'
ls_by = string(RelativeDate(date(ls_by2), - 1))
ls_sy = string(Year(date(ls_by2))) + '-' + string(Month(date(ls_by2)) - 1) +
'-01'
lrt_start = ls_sy + ' 00:00:00'
lrt_end = ls_by + ' 23:59:59'
② 函數呼叫
//呼叫範例
string ls_start,ls_end
of_last_month(ls_start,ls_end)
messagebox('月初的(日期+時間)',ls_start)
messagebox('月底的(日期+時間)',ls_end)
① 函數定義
/*
>====================================================================
> Function: gf_datetime_string
>--------------------------------------------------------------------
> 描述: 時間轉字串
>--------------------------------------------------------------------
> 引數:
> string as_datetime
> string as_select
>--------------------------------------------------------------------
> 返回值: string
>====================================================================
*/
string ls_y,ls_m,ls_d,ls_h,ls_i,ls_s
long ll_y,ll_m,ll_d,ll_h,ll_i,ll_s
string ls_format,ls_return
as_datetime = trim(as_datetime)
if pos(as_datetime,'-') > 0 then
ls_format = '-'
ll_y = pos(as_datetime,'-')
ll_m = pos(as_datetime,'-',ll_y + 1)
ll_d = pos(as_datetime,' ',ll_m + 1)
ll_h = pos(as_datetime,':')
ll_i = pos(as_datetime,':',ll_h + 1)
elseif pos(as_datetime,'/') > 0 then
ls_format = '/'
ll_y = pos(as_datetime,'/')
ll_m = pos(as_datetime,'/',ll_y + 1)
ll_d = pos(as_datetime,' ',ll_m + 1)
ll_h = pos(as_datetime,':')
ll_i = pos(as_datetime,':',ll_h + 1)
elseif pos(as_datetime,'.') > 0 then
ls_format = '.'
ll_y = pos(as_datetime,'.')
ll_m = pos(as_datetime,'.',ll_y + 1)
ll_d = pos(as_datetime,' ',ll_m + 1)
ll_h = pos(as_datetime,':')
ll_i = pos(as_datetime,':',ll_h + 1)
end if
ls_y = mid(as_datetime,1,ll_y - 1)
ls_m = mid(as_datetime,ll_y + 1,ll_m - 1 - ll_y)
ls_d = mid(as_datetime,ll_m + 1,ll_d - 1 - ll_m)
ls_h = mid(as_datetime,ll_d + 1,ll_h - 1 - ll_d)
ls_i = mid(as_datetime,ll_h + 1,ll_i - 1 - ll_h)
ls_s = mid(as_datetime,ll_i + 1)
choose case lower(as_select)
case 'y' //年
ls_return = ls_y
case 'm' //月
ls_return = ls_m
case 'd' //日
ls_return = ls_d
case 'h' //時
ls_return = ls_h
case 'i' //分
ls_return = ls_i
case 's' //秒
ls_return = ls_s
case 'y-m' //年-月
ls_return = ls_y + ls_format + ls_m
case 'y-m-d' //年-月-日
ls_return = ls_y + ls_format + ls_m + ls_format + ls_d
case 'y-m-d h' //年-月-日 時
ls_return = ls_y + ls_format + ls_m + ls_format + ls_d + ' ' + ls_h
case 'y-m-d h:i' //年-月-日 時:分
ls_return = ls_y + ls_format + ls_m + ls_format + ls_d + ' ' + ls_h +':' + ls_i
case 'y-m-d h:i:s' //年-月-日 時:分:秒
ls_return = ls_y + ls_format + ls_m + ls_format + ls_d + ' ' + ls_h +':' + ls_i + ':' + ls_s
case 'lastday' //獲取當月最後一天
Integer li_year,li_month
li_year = Integer(ls_y)
li_month = Integer(ls_m)
if li_month = 12 then
li_month = 1
li_year ++
else
li_month = li_month + 1
end if
ls_return = string(RelativeDate(Date(String(li_year) + '-' +
String(li_month) + '-01'), - 1))
end choose
return ls_return
② 函數呼叫
string ls_datetime
ls_datetime = '2021-01-01 11:12:13'
gf_datetime_string(ls_datetime,'Y') //獲取年
gf_datetime_string(ls_datetime,'M') //獲取月
gf_datetime_string(ls_datetime,'D') //獲取日
gf_datetime_string(ls_datetime,'H') //獲取時
gf_datetime_string(ls_datetime,'I') //獲取分
gf_datetime_string(ls_datetime,'S') //獲取秒
gf_datetime_string(ls_datetime,'Y-M') //獲取年+月
gf_datetime_string(ls_datetime,'Y-M-D') //獲取年+月+日
gf_datetime_string(ls_datetime,'H-I') //獲取時+分
gf_datetime_string(ls_datetime,'H-I-S') //獲取時+分+秒
gf_datetime_string(ls_datetime,'Y-M-D H') //獲取年+月+日 時
gf_datetime_string(ls_datetime,'Y-M-D H:I') //獲取年+月+日 時+分
gf_datetime_string(ls_datetime,'Y-M-D H:I:S') //獲取年+月+日 時+分+秒
① 函數定義
/*
>====================================================================
> Function: gf_xml_get
>--------------------------------------------------------------------
> 描述: xml解析
>--------------------------------------------------------------------
> 引數:
> string data
> string label
>--------------------------------------------------------------------
> 返回值: string
>====================================================================
*/
long ll_start
string ls_data,ls_data2,ls_data3
ls_data = trim(data)
ll_start = pos(ls_data,'<' + label + '>')
if ll_start = 0 then
return ''
else
ls_data2 = mid(ls_data,ll_start + len('<' + label + '>'))
ls_data3 = mid(ls_data2,1,pos(ls_data2,'<') - len('<'))
return ls_data3
end if
② 函數呼叫
string ls_xml
ls_xml = '<?xml version="1.0" encoding="UTF-8"?>' + &
'<code>' + &
'<a>1</a>' + &
'<b>2</b>' + &
'<c>3</c>' + &
'<d>4</d>' + &
'</code>'
gf_xml_get(ls_xml,'a')
① 函數定義
/*
>====================================================================
>Function: gf_dir
>--------------------------------------------------------------------
> >
描述: 獲取指定路徑下的所有檔案和資料夾
>--------------------------------------------------------------------
>
>引數:
> string as_dir
> listbox lb_filelist
>
>ref st_dir astr_itemlist[]
>--------------------------------------------------------------------
> >
返回值: integer
>====================================================================
>*/
Long ll_i
Long ll_Count
Long ll_DirCount
If Not DirectoryExists ( as_Dir ) Then
Return -2 // 目錄不存在
End If
If Right(as_Dir, 1) <> '\' Then
as_Dir += '\'
End If
// 處理目錄
ll_DirCount = 0
lb_FileList.DirList( as_Dir + '*.*', 32784)
ll_Count = lb_FileList.TotalItems()
For ll_i = 1 To ll_Count
If lb_FileList.Text(ll_i) = '[..]' Then
Continue
End If
ll_DirCount ++
astr_ItemList[ll_DirCount].Item_Name = lb_FileList.Text(ll_i)
astr_ItemList[ll_DirCount].Item_Name = as_Dir +
Mid(astr_ItemList[ll_DirCount].Item_Name, 2,
Len(astr_ItemList[ll_DirCount].Item_Name) - 2) // 去除外部的[]
astr_ItemList[ll_DirCount].Item_Type = 2
Next
// 處理檔案
lb_FileList.DirList( as_Dir + '*.*', 0)
ll_Count = lb_FileList.TotalItems()
For ll_i = 1 To ll_Count
ll_DirCount ++
astr_ItemList[ll_DirCount].Item_Name = as_Dir + lb_FileList.Text(ll_i)
astr_ItemList[ll_DirCount].Item_Type = 1
Next
Return ll_DirCount
② 函數呼叫
st_dir astr_itemlist[]
gf_dir('D:\',lb_1,astr_itemlist)
① 函數定義
/*
>====================================================================
> Declare: gf_capital_amount
>--------------------------------------------------------------------
> 描述: 將數值轉換為大寫金額
>--------------------------------------------------------------------
> 引數:
> ac_money 要轉換的金額
>--------------------------------------------------------------------
> 返回: 大寫金額
>====================================================================
*/
string ls_numstr[10] = {"零","壹","貳","叄","肆","伍","陸","柒","捌","玖"}
string ls_monstr[20] =
{"元","拾","佰","仟","萬","拾","佰","仟","億","拾","佰","仟","萬","拾","佰","仟","億",
"拾","佰","仟"}
integer i
integer li_len
string ls_temp
string ls_char
string ls_intstr
string ls_decstr
string ls_rtnintstr
string ls_rtndecstr
ls_temp = string(abs(ac_money),"0.00")
ls_intstr = left (ls_temp,len(ls_temp) - 3)
ls_decstr = right(ls_temp,2)
li_len = len(ls_intstr)
for i = 1 to li_len
ls_char = mid(ls_intstr,li_len - i + 1,1)
if ls_char = "0" then
choose case i
case 1,9,17
ls_rtnintstr = ls_monstr[i] + ls_rtnintstr
case 5,13
if li_len > i + 3 then
if mid(ls_intstr,li_len - i - 2,3) <> "000" then
ls_rtnintstr = ls_monstr[i] + ls_rtnintstr
end if
else
ls_rtnintstr = ls_monstr[i] + ls_rtnintstr
end if
case else
if mid(ls_intstr,li_len - i + 2,1) <> "0" then
ls_rtnintstr = "零" + ls_rtnintstr
end if
end choose
else
ls_rtnintstr = ls_numstr[integer(ls_char) + 1] + ls_monstr[i] +
ls_rtnintstr
end if
next
if long(ls_intstr) = 0 then
if long(ls_decstr) > 0 then
ls_rtnintstr = ""
else
ls_rtnintstr = "零元"
end if
end if
if ls_decstr = "00" then
ls_rtndecstr = "整"
elseif mid(ls_decstr,1,1) = "0" then
ls_rtndecstr = ls_numstr[integer(mid(ls_decstr,2,1)) + 1] + "分"
if long(ls_intstr) > 0 then ls_rtndecstr = "零" + ls_rtndecstr
elseif mid(ls_decstr,2,1) = "0" then
ls_rtndecstr = ls_numstr[integer(mid(ls_decstr,1,1)) + 1] + "角"
else
ls_rtndecstr = ls_numstr[integer(mid(ls_decstr,1,1)) + 1] + "角" + &
ls_numstr[integer(mid(ls_decstr,2,1)) + 1] + "分"
end if
if ac_money >= 0 then
return ls_rtnintstr + ls_rtndecstr
else
return "負" + ls_rtnintstr + ls_rtndecstr
end if
② 函數定義
gf_capital_amount(11.22)
① 函數定義
/*
>====================================================================
> Function: gf_button_array
>--------------------------------------------------------------------
> 描述: 將按鈕迴圈新增到按鈕陣列裡
>--------------------------------------------------------------------
> 引數:
> commandbutton controls[]
> ref commandbutton lbt_btn[]
>====================================================================
*/
long i
for i = 1 to UpperBound(controls[])
if left(classname(controls[i]),3) = "cb_" then
lbt_btn[upperbound(lbt_btn) + 1] = controls[i]
end if
next
② 函數呼叫
commandbutton a[]
a[1] = cb_1
a[2] = cb_2
gf_button_array(a)
① 函數定義
/*
>====================================================================
> Function: gf_dw_ddlb
>--------------------------------------------------------------------
> 描述:動態新增資料視窗欄位下的ddlb下拉框
>--------------------------------------------------------------------
> 引數:
> datawindow as_dw 要新增下拉框的資料視窗
> string as_dw_column 要新增下拉框的列
> transaction as_affairs 要查詢的SQL事務
> string as_table 要查詢的表
> string as_table 要查詢的where條件
> string as_table_display 要在下拉框顯示的列
> string as_table_data 要在下拉框中指定的資料
>--------------------------------------------------------------------
> 返回值: integer
>====================================================================
*/
string dw_sql,dw_style
string dw_syntax,dw_syntax_error,dw_create_error
boolean lb_flag = false
string ls_data,ls_display
string ls_value
datastore dw_new
dw_new = create datastore
as_dw.Modify(as_dw_column + ".ddlb.case='any'")
as_dw.modify(as_dw_column + ".ddlb.vscrollbar='yes'")
if as_table_condition = '' or isnull(as_table_condition) then
dw_sql = "select distinct " + as_table_display + ',' + as_table_data + "
from " + as_table
else
dw_sql = "select distinct " + as_table_display + ',' + as_table_data + "
from " + as_table + ' where ' + as_table_condition
end if
dw_style = "style(type=grid)"
dw_syntax = sqlca.syntaxfromsql(dw_sql, dw_style, dw_syntax_error)
if len(dw_syntax_error) > 0 then
messagebox("提示", "構造sql資料來源錯誤: " + dw_syntax_error)
return - 1
end if
dw_new.create(dw_syntax,dw_create_error)
if len(dw_create_error) > 0 then
messagebox("提示", "建立資料視窗錯誤: " + dw_create_error)
return - 1
end if
dw_new.settransobject(sqlca)
dw_new.retrieve()
long i,ll_rowcount
ll_rowcount = dw_new.rowcount()
if ll_rowcount > 0 then
for i = 1 to ll_rowcount
ls_display = string(dw_new.GetItemString(i,as_table_display))
ls_data = string(dw_new.GetItemString(i,as_table_data))
if not lb_flag then
ls_value = as_dw_column + ".values='"
lb_flag = true
else
ls_value += "/"
end if
ls_value += Trim(ls_display) + "~t" + Trim(ls_data)
next
ls_value += "'"
if as_dw.Modify(ls_value) <> "" then
return - 1
end if
else
return - 1
end if
return 0
② 函數呼叫
gf_dw_ddlb(dw_1,'name',sqlca,'user','name','id')
一下整理了這麼多函數,這些函數呢不用都記住。有個印象就可以了,可以將文章當作工具書來查即可
本期內容到此就結束了,希望對你有所幫助。
我們下期再見~ (●'◡'●)