自定函数
# Smart 自定函数
# 1. DM类函数
# 1.1. CheckFieldEmpty
function CheckFieldEmpty(QField: TField): Boolean;
说明: 判断字段是否为空。 返回值: 布尔Boolean类型。
- CheckFieldEmpty函数语法中各部分说明
部分 | 说明 |
---|---|
QDataSet | 数据集对象 |
- 示例
Begin
If DM.CheckFieldEmpty (FThis.dts0.FieldByName('FBiller')) then
Begin
Showmessage('数据集字段FBiller 内容为空。');
End;
end;
2
3
4
5
6
# 1.2. DataSetIsEdit
function DataSetIsEdit(const QDataSet: TRFDataSet): Boolean;
说明: 判断数据集是否处理编辑状态。 返回值: 布尔Boolean类型。
- DataSetIsEdit函数语法中各部分说明
部分 | 说明 |
---|---|
QDataSet | 数据集对象 |
- 示例
Begin
If DM.DataSetIsEdit(FThis.dts0) then
Begin
Showmessage('数据集dts0处理编辑状态。');
End;
end;
2
3
4
5
6
# 1.3. ExecProcedureFast
function ExecProcedureFast(const QstoreName: string; QParams: String): Boolean;
说明: 执行存储过程。 返回值: 布尔Boolean类型。
- ExecProcedureFast函数语法中各部分说明
部分 | 说明 |
---|---|
QstoreName | 存储过程名称 |
QParams | 存储过程参数 |
- 示例
var
tempVar: String;
begin
//通过提示对话框询问用户
if not PaxFunc.YesNoMsg ('提示','确定删除资料吗?') then Abort();
//存储过程参数赋值
tempVar:='10001,Delete,,';
//执行存储过程
If DM.ExecProcedureFast ('sp_Basic_Item',tempVar) then
Begin
Msg('执行成功!')
End;
end;
2
3
4
5
6
7
8
9
10
11
12
13
# 1.4. ExecProcedureRStr
function ExecProcedureRStr(const QstoreName: string; QParams: String): string;
说明: 执行存储过程。 返回值: 字符串Srtring类型。
- ExecProcedureRStr函数语法中各部分说明
部分 | 说明 |
---|---|
QstoreName | 存储过程名称 |
QParams | 存储过程参数 |
- 示例
var
tempVar:String;
vResult:String;
begin
//通过提示对话框询问用户
if not PaxFunc.YesNoMsg ('提示','确定删除资料吗?') then Abort();
//存储过程参数赋值
tempVar:='10001,Delete,,';
//执行存储过程
vResult := DM.ExecProcedureRStr('sp_Basic_Item',tempVar);
if vResult <> '' then
begin
//显示返回值内容
Showmessage(vResult);
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 1.5. OpenData
function OpenData(QDataSet: TRFDataSet): Boolean;
说明: 打开数据集。 返回值: 布尔Boolean类型。
- OpenData函数语法中各部分说明
部分 | 说明 |
---|---|
QDataSet | 数据集对象 |
- 示例
var
vDataSet:TRFDataSet;
begin
//创建数据集对象
DM.CreateDataSet(vDataSet);
Try
//对数据集SQL赋值
vDataSet.SQL.Text := 'Select * from Baisc_Whs';
//打开数据集,以下二种方法都可行
//打开方式1
vDataSet.Open;
//打开方式2
DM.OpenData(vDataSet);
If vDataSet.RecordCount > 0 then
Begin
Showmessage('数据集不为空!');
End;
Finally
vDataSet.Free;
End;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 1.6. OpenDatas
function OpenDatas(QDataSetList: TList<TRFDataSet>): Boolean;
说明: 批量打开数据集。 返回值: 布尔Boolean类型。
- OpenDatas函数语法中各部分说明
部分 | 说明 |
---|---|
QDataSetList | 数据集对象 |
- 示例
脚本中暂不支持TList<>对象。
# 1.7. QueryValue
function QueryValue(const SQLStr: string; SQLParams: string): Variant;
说明: 执行SQL获取返回值。 返回值: 变体Variant类型。
- QueryValue函数语法中各部分说明
部分 | 说明 |
---|---|
SQLStr | SQL语句 |
SQLParams | SQL参数 |
- 示例
# 1.8. SaveData
function SaveData(QDataSet: TRFDataSet): Boolean;
说明: 数据集提交。 返回值: 布尔Boolean类型。
- SaveData函数语法中各部分说明
部分 | 说明 |
---|---|
QDataSet | 数据集对象 |
- 示例
var
vDataSet: TRFDataSet;
begin
//创建数据集对象
DM.CreateDataSet(vDataSet ,nil);
Try
//对数据集SQL赋值
vDataSet.SQL.Text := 'Select Top 0 * from Baisc_Whs';
//打开数据集
vDataSet.Open;
//新增一条数据
vDataSet.Append;
vDataSet.FieldByName('FInterID').asInteger := DM.GetNodeID;
vDataSet.FieldByName('FWhsCode').asString := '0101';
vDataSet.FieldByName('FWhsName').asString := '白坯仓库';
vDataSet.Post;
If DM.SaveData(vDataSet) then
Begin
Showmessage('数据提交成功!');
End;
Finally
vDataSet.Free;
End;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 1.9. SaveDatas
function SaveDatas(QDataSetList: TList<TRFDataSet>): Boolean;
说明: 批量提交数据集。 返回值: 布尔Boolean类型。
- SaveDatas函数语法中各部分说明
部分 | 说明 |
---|---|
QDataSetList | 数据集对象 |
- 示例
脚本中暂不支持TList<>对象。
# 1.10. GetBillNo
function GetBillNo(QBillID: string; QDate: TDateTime; QPreview: Boolean): string;
说明: 获取单据流水号。 返回值: 字符String类型。
- GetBillNo函数语法中各部分说明
部分 | 说明 |
---|---|
QBillID | 单据流水号规则编号 |
QDate | 日期 |
QPreview | 是否预览模式 |
- 示例
//数据集dts1新增记录时,生成流水号
// 参数QPreview为true时,流水号生成只是预览模式,还未正式产生
procedure TMyHandler.dts1OnNewRecord(DataSet: TDataSet);
begin
FThis.dts1.Edit;
FThis.dts1FBatchNo.AsString := DBFUN.GetBillNo ('17020004',Now(),false);
end;
2
3
4
5
6
7
# 1.11. GetGUID
function GetGUID: String;
说明: 获取唯一ID。 返回值: 字符String类型。
- 示例
ShowMessage(DM.GetGUID);
# 1.12. GetNodeID
function GetNodeID: Integer;
说明: 获取唯一ID **返回值: ** 整型Integer类型。
- 示例
//数据集dts1新增记录时,生成唯一ID
procedure TMyHandler.dts1OnNewRecord(DataSet: TDataSet);
begin
FThis.dts1.Edit;
FThis.dts1FInterID.AsInteger := DM.GetNodeID;
end;
2
3
4
5
6
# 1.13. GetNewID
function GetNewID:String;
说明: 获取64位唯一ID 雪花算法 返回值: 字符String类型。
- 示例
//数据集dts1新增记录时,生成唯一ID
procedure TMyHandler.dts1OnNewRecord(DataSet: TDataSet);
begin
FThis.dts1.Edit;
FThis.dts1FInterID.AsString := DM.GetNewID;
end;
2
3
4
5
6
# 1.14. GetServerDate
function GetServerDate:String;
说明: 获取服务器日期。 返回值: 字符String类型。
- 示例
//数据集dts1新增记录时,获取服务器日期
procedure TMyHandler.dts1OnNewRecord(DataSet: TDataSet);
begin
FThis.dts1FDate.AsString := DM.GetServerDate;
end;
2
3
4
5
# 1.15. GetServerDateTime
function GetServerDateTime:String;
说明: 获取服务器日期时间。 返回值: 字符String类型。
- 示例
//数据集dts1新增记录时,获取服务器日期时间
procedure TMyHandler.dts1OnNewRecord(DataSet: TDataSet);
begin
FThis.dts1FCeateDateTime.AsString := DM.GetServerDateTime;
end;
2
3
4
5
# 1.16. GetDBConnection
function: GetDBConnection(const ADefName: UnicodeString): TFDConnection;
说明: 获取数据库连接设置。 返回值: TFDConnection 类型,可用于 TFDQuery 的连接。
- GetDBConnection函数语法中各部分说明
部分 | 说明 |
---|---|
ADefName | 数据库连接设置的名称 |
- 示例
FThis.FDQUery1.Connection := DM.GetDBConnection('Smart');
FThis.FDQuery1.SQL.Text := 'SELECT * FROM Table_Test';
FThis.FDQuery1.Open;
2
3
# 2. PaxFunc类函数
该章节中的函数需以PaxFunc.
开头。
# 2.1. AddMarker
function AddMarker(AMapView:TVCLCCAMapView):TCCAMapMarker;
说明: 增加一个地图标记 返回值: 地图标记TCCAMapMarker对象
- AddMarker函数语法中各部分说明
部分 | 说明 |
---|---|
AMapView | 高德地图控件 |
- 示例
procedure TMyHandler.VCLCCAMAPVIEW1MAPCLICKEVENT(ASender: TObject; APos: TCCLngLat);
var
vTCCAMapMarker:TCCAMapMarker;
begin
//点击地图时的经纬坐标
FPos:=APos;
//显示经纬度到标签上
FThis.lbJW.Caption := FloatToStr(APos.Longitude)+','+ FloatToStr(APos.Latitude);
FThis.TagString := '';
//获取经纬度的地址
paxfunc.GetMarkerAddress(FThis.VCLCCAMapView1,APos,FThis);
//清除地图标记
FThis.VCLCCAMapView1.Markers.Clear;
//增加一个标记到地图上
vTCCAMapMarker := paxfunc.AddMarker(FThis.VCLCCAMapView1);
if FThis.VCLCCAMapView1.MapLoadCompleted then
begin
with vTCCAMapMarker do
begin
//标记地图信息
Title := FThis.TagString;
Position.Longitude := APos.Longitude;
Position.Latitude := APos.Latitude;
// 设置了Content属性Icon属性失效。要自定义丰富的标记就用Content属性吧
Content:='<div>';
Content:=Content+'<image src="http://webapi.amap.com/theme/v1.3/markers/n/mark_r.png"></image>';
//Content:=Content+'<span style="white-space: nowrap;border:1px solid #fff;background-color:#ff0000;font-size: 12px;color:white; padding: 4px 10px;">'+FThis.TagString+'</span>';
// 图片19 x 31 pixels
Content:=Content+'</div>'; // 必须有根div元素 不然缩放时图标位置不会更新
// 绘制
draw;
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 2.2. Base64Get
function Base64Get(FileName:String):String;
说明: 文件转Base64 返回值: String支付类型
- Base64Get函数语法中各部分说明
部分 | 说明 |
---|---|
FileName | 文件路径包含文件名称 |
- 示例
# 2.3. BIG2cn
function BIG2cn(bigStr: string): string;
说明: 繁体转简体 返回值: 字符string类型
- BIG2cn函数语法中各部分说明
部分 | 说明 |
---|---|
bigStr | 指定繁体内容字符串 |
- 示例
var
s:String;
Begin
s := PaxFunc.BIG2cn('我是中國人!我自豪!我驕傲!');
End;
2
3
4
5
- 运行结果: 我是中国人!我自豪!我骄傲!
# 2.4. Cn2Big
function Cn2Big(CnStr: string): string;
说明: 简体转繁体 返回值: 字符string类型
- Cn2Big函数语法中各部分说明
部分 | 说明 |
---|---|
CnStr | 指定简体内容字符串 |
- 示例
var
s:String;
Begin
s := PaxFunc.Cn2Big('我是中国人!我自豪!我骄傲!');
End;
2
3
4
5
- 运行结果: 我是中國人!我自豪!我驕傲!
# 2.5. CreateStringStream
function CreateStringStream(Encoding:String='UTF8'):TStringStream;
说明: 指定编码类型创建字符串流 返回值: TStringStream 字符串流
- CreateStringStream函数语法中各部分说明
部分 | 说明 |
---|---|
Encoding | 编码类型 |
- 示例
procedure TMyHandler.IdHTTPServer1CommandGet;
var
aRequestContent: string;
reqstream:TStringStream;
APathInfo :String;
begin
AResponseInfo.CustomHeaders.Add('Access-Control-Allow-Origin:*');
AResponseInfo.CustomHeaders.Add('Access-Control-Allow-Headers:*');
AResponseInfo.CustomHeaders.Add('Access-Control-Allow-Method:*');
AResponseInfo.ContentType := 'application/json;charset=utf-8'; //解决 AResponseInfo 返回中文乱码问题
APathInfo := ARequestInfo.Document;
if ARequestInfo.Command.ToLower = ('POST').ToLower then
begin
if APathInfo = '/api/dvrs' then
begin
if (ARequestInfo.PostStream <> nil) and (ARequestInfo.PostStream.Size > 0) then
begin
ARequestInfo.PostStream.Position := 0;
//创建UTF8编码的字符串流
reqstream:=paxfunc.CreateStringStream('UTF8');
try
ARequestInfo.PostStream.Position := 0;
reqstream.LoadFromStream(ARequestInfo.PostStream);
aRequestContent := reqstream.DataString;
FThis.Memo1.Lines.Insert(0, FormatDateTime('HH:NN:SS.ZZZ ', now) + '/api/dvrs->' + aRequestContent);
finally
reqstream.Free;
end;
AResponseInfo.ContentText := aRequestContent; //成功 响应201
AResponseInfo.WriteContent;
end;
end;
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 2.6. DigitToEn
function DigitToEn(strDigits: String; intRMB: Boolean): String;
说明: 转换成英文金额 返回值: 字符string类型
- DigitToEn函数语法中各部分说明
部分 | 说明 |
---|---|
strDigits | 数字字符串 |
intRMB | 是否RMB |
- 示例
var
s:String;
Begin
s := DigitToEn('10058.5',false);
End;
2
3
4
5
- 运行结果: TEN THOUSAND FIFTY-EIGHT DOLLARS AND FIVE CENTS ONLY
# 2.7. GetBarcode
function GetBarcode(Graphic: TGraphic): string;
说明: 获取图片中的条码内容 返回值: string字符串类型
- GetBarcode函数语法中各部分说明
部分 | 说明 |
---|---|
Graphic | 图片中的图形对象 |
- 示例
var
v:string;
begin
v:=paxfunc.GetBarcode(FThis.image1.Picture.Graphic);
FThis.memo1.Lines.Add(v);
end;
2
3
4
5
6
# 2.8. GetChinaMoney
function GetChinaMoney(small: Variant): string;
说明: 将数字金额转成中文大写金额 返回值: 字符string类型
- GetChinaMoney函数语法中各部分说明
部分 | 说明 |
---|---|
small | 数字金额 |
- 示例
var
s:String;
Begin
s := PaxFunc.GetChinaMoney('10058.56');
End;
2
3
4
5
- 运行结果: 壹万零仟零佰伍拾捌元伍角陆分
# 2.9. GetControlsImage
function GetControlsImage(ACtrl: TWinControl;AFile:string=''): TBitmap;
说明: 截取当前运行界面存为图片文件 返回值: TBitmap类型
- GetControlsImage函数语法中各部分说明
部分 | 说明 |
---|---|
ACtrl | 需要截屏的窗体 |
AFile | 输出文件名称带路径 |
- 示例
Begin
PaxFunc.GetControlsImage(FThis,'c:\123.bmp');
end;
2
3
# 2.10. GetFirstDayofMonth
function GetFirstDayofMonth(const DT: TDateTime): TDateTime;
说明: 获取指定日期所在月份的第一天。 返回值: 日期TDateTime类型。
- GetFirstDayofMonth函数语法中各部分说明
部分 | 说明 |
---|---|
DT | 指定的一个日期类型 |
- 示例
Var
vMonthFirstDay:TDateTime;
Begin
vFirstEndDay := PaxFunc.GetFirstDayofMonth('2019-07-10');
end;
2
3
4
5
- 运行结果: 2019-07-01
# 2.11. GetHostIP
function GetHostIP: string;
说明: 获取计算机IP地址 返回值: 字符String类型
- 示例
var
vHostIP:string;
Begin
vHostIP:= PaxFunc.GetHostIP;
End;
2
3
4
5
- 运行结果: 192.168.1.100
# 2.12. GetHostName
function GetHostName: string;
说明: 获取计算机名称 返回值: 字符string类型
- 示例
var
vHostName:string;
Begin
vHostName := PaxFunc.GetHostName;
End;
2
3
4
5
- 运行结果: I-PC
# 2.13. GetLastDayofMonth
function GetLastDayofMonth(const DT: TDateTime): TDateTime;
说明: 获取指定日期所在月份的第后一天。 返回值: 日期TDateTime类型。
- GetLastDayofMonth函数语法中各部分说明
部分 | 说明 |
---|---|
DT | 指定的一个日期类型 |
- 示例
Var
vMonthEndDay:TDateTime;
Begin
vMonthEndDay := PaxFunc.GetFirstDayofMonth('2019-07-10');
end;
2
3
4
5
- 运行结果: 2019-07-31
# 2.14. GetMacAddress
function GetMacAddress: string;
说明: 获取计算机网卡地址 返回值: 字符String类型
- 示例
var
vHostMacAddress:string;
Begin
vHostMacAddress:= GetMacAddress;
End;
2
3
4
5
- 运行结果: 01:1A:1B:EF:0A:BC
# 2.15. GetPropValue
function GetPropValue(QControl:TComponent; QControlProp: string): Variant;
说明: 获取控件属性值 返回值: 变体Variant 类型
- GetPropValue函数语法中各部分说明
部分 | 说明 |
---|---|
QControl | 需要获取属性的控件 |
QControlProp | 控件属性名称 |
- 示例
var
vPropValue:variant;
begin
//获取窗体FThis.dbdts0FItemName对象的Name名称
vPropValue := PaxFunc.GetPropValue(FThis.dbdts0FItemName,'Name');
Showmessage(vPropValue);
end;
2
3
4
5
6
7
# 2.16. GetNumber
function GetNumber(S: string): string;
说明: 截取字符串中的数字 返回值: 字符String类型
- GetNumber函数语法中各部分说明
部分 | 说明 |
---|---|
S | 指定一个包含数字的字符串 |
- 示例
var
v:string;
begin
v:= PaxFunc.GetNumber ('12A56B.A11');
//显示返回的SQL内容
Showmessage(v);
end;
2
3
4
5
6
7
- 运行结果: 125611
# 2.17. GetJSONObject
function GetJSONObject(const QJSONObject: TJSONValue; const QPath:String):TJSONObject;
说明: 获取JSON对象中指定的嵌套对象。 返回值: TJSONObject类型。
- GetJSONObject 函数语法中各部分说明
部分 | 说明 |
---|---|
QJSONObject | 要进行获取对象操作的JSON对象名称 |
QPath | 对象在JSON中的路径名称,路径的名称之间以"."作为分隔标志 |
- 示例
假设需要对以下JSON进行解析。
{
"status": "OK",
"Language":{
"DefaultLanguage": 1
}
}
2
3
4
5
6
//PasScript
Var
J:TJSONObject;
s: String;
begin
J:=TJSONObject.Create;
s:= '{"status": "OK","Language":{"DefaultLanguage": 1}}';
Try
j := TJSONObject(paxfunc.ParseJSONValue(s));
j := paxfunc.GetJSONObject(j,'Language');
ShowMessage(paxfunc.GetJSONNumber(j,'DefaultLanguage'));
//上述两句程序也可改写为
//ShowMessage(paxfunc.GetJSONNumber(j,'Language.DefaultLanguage'));
Finally
j.Free;
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
以上程序运行后获取到的值为1。
# 2.18. GetJSONArray
function GetJSONArray(const QJSONObject: TJSONValue; const QPath:String):TJSONArray;
说明: 获取JSON对象中指定的数组列。 返回值: TJSONArray类型。
- GetJSONArray 函数语法中各部分说明
部分 | 说明 |
---|---|
QJSONObject | 要进行获取对象操作的JSON对象名称 |
QPath | 对象在JSON中的路径名称,路径的名称之间以"."作为分隔标志 |
- 示例
假设需要对以下JSON进行解析。
{
"status": "OK",
"Language":{
"DefaultLanguage": 1,
"options":[
{"options":1},
{"options":2}
]
}
}
2
3
4
5
6
7
8
9
10
//PasScript
Var
J:TJSONObject;
A:TJSONArray;
s: String;
begin
J:= TJSONObject.Create;
A:= TJSONArray.Create;
s:= '{"status": "OK","Language":{"DefaultLanguage": 1,"options":[{"options":1},{"options":2}]}}';
Try
j := TJSONObject(paxfunc.ParseJSONValue(s));
A := paxfunc.GetJSONArray(j,'Language.options');
J := TJSONObject(A.Items[1]);
ShowMessage(paxfunc.GetJSONNumber(j,'options'));
Finally
j.Free;
A.Free;
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
以上程序运行后获取到的值为2。
# 2.19. GetJSONString
function GetJSONString(const QJSONObject: TJSONValue; const QPath:String):String;
说明: 获取JSON对象中指定键值的字符串。 返回值: String类型。
- GetJSONString 函数语法中各部分说明
部分 | 说明 |
---|---|
QJSONObject | 要进行获取对象操作的JSON对象名称 |
QPath | 对象在JSON中的路径名称,路径的名称之间以"."作为分隔标志 |
假设需要对以下JSON进行解析。
{
"status": "OK",
"Language":{
"DefaultLanguage": 1
}
}
2
3
4
5
6
//PasScript
Var
J:TJSONObject;
s: String;
begin
J:=TJSONObject.Create;
s:= '{"status": "OK","Language":{"DefaultLanguage": 1}}';
Try
j := TJSONObject(paxfunc.ParseJSONValue(s));
ShowMessage(paxfunc.GetJSONString(j,'status'));
Finally
j.Free;
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
以上程序运行后获取到的值为OK。
# 2.20. GetJSONNumber
function GetJSONNumber(const QJSONObject: TJSONValue; const QPath:String):String;
说明: 获取JSON对象中指定的键值中的数值。 返回值: String类型。
- GetJSONNumber 函数语法中各部分说明
部分 | 说明 |
---|---|
QJSONObject | 要进行获取对象操作的JSON对象名称 |
QPath | 对象在JSON中的路径名称,路径的名称之间以"."作为分隔标志 |
- 示例
假设需要对以下JSON进行解析。
{
"status": "OK",
"Language":{
"DefaultLanguage": 1
}
}
2
3
4
5
6
//PasScript
Var
J:TJSONObject;
s: String;
begin
J:=TJSONObject.Create;
s:= '{"status": "OK","Language":{"DefaultLanguage": 1}}';
Try
j := TJSONObject(paxfunc.ParseJSONValue(s));
j := paxfunc.GetJSONObject(j,'Language');
ShowMessage(paxfunc.GetJSONNumber(j,'DefaultLanguage'));
//上述两句程序也可改写为
//ShowMessage(paxfunc.GetJSONNumber(j,'Language.DefaultLanguage'));
Finally
j.Free;
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
以上程序运行后获取到的值为1。
# 2.21. GetJSONInteger
function GetJSONInteger(const QJSONObject: TJSONValue; const QPath:String):Integer;
说明: 获取JSON对象中指定的键值中的整数数值,并以整数的形式返回。 返回值: Integer类型。
- GetJSONInteger 函数语法中各部分说明
部分 | 说明 |
---|---|
QJSONObject | 要进行获取对象操作的JSON对象名称 |
QPath | 对象在JSON中的路径名称,路径的名称之间以"."作为分隔标志 |
- 示例
假设需要对以下JSON进行解析。
{
"status": "OK",
"Language":{
"DefaultLanguage": 1
}
}
2
3
4
5
6
//PasScript
Var
J:TJSONObject;
s: String;
i: Integer;
begin
J:=TJSONObject.Create;
s:= '{"status": "OK","Language":{"DefaultLanguage": 1}}';
Try
j := TJSONObject(paxfunc.ParseJSONValue(s));
i := paxfunc.GetJSONInteger(j,'Language.DefaultLanguage');
ShowMessage(IntToStr(i));
Finally
j.Free;
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
以上程序运行后获取到的值为1。
# 2.22. GetJSONFloat
function GetJSONFloat(const QJSONObject: TJSONValue; const QPath:String):Double;
说明: 获取JSON对象中指定的键值中的浮点数数值,并以浮点数的形式返回。 返回值: Double类型。
- GetJSONFloat 函数语法中各部分说明
部分 | 说明 |
---|---|
QJSONObject | 要进行获取对象操作的JSON对象名称 |
QPath | 对象在JSON中的路径名称,路径的名称之间以"."作为分隔标志 |
- 示例
假设需要对以下JSON进行解析。
{
"status": "OK",
"Language":{
"DefaultLanguage": 1.1
}
}
2
3
4
5
6
//PasScript
Var
J:TJSONObject;
s: String;
i: Double;
begin
J:=TJSONObject.Create;
s:= '{"status": "OK","Language":{"DefaultLanguage": 1.1}}';
Try
j := TJSONObject(paxfunc.ParseJSONValue(s));
i := paxfunc.GetJSONFloat(j,'Language.DefaultLanguage');
ShowMessage(FloatToStr(i));
Finally
j.Free;
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
以上程序运行后获取到的值为1.1。
# 2.23. GetJSONBool
function GetJSONBool(const QJSONObject: TJSONValue; const QPath:String):Boolean;
说明: 获取JSON对象中指定的键值中的布尔数值,并以布尔值的形式返回。 返回值: Boolean类型。
- GetJSONBool 函数语法中各部分说明
部分 | 说明 |
---|---|
QJSONObject | 要进行获取对象操作的JSON对象名称 |
QPath | 对象在JSON中的路径名称,路径的名称之间以"."作为分隔标志 |
假设需要对以下JSON进行解析。
{
"status": true,
"Language":{
"DefaultLanguage": 1
}
}
2
3
4
5
6
//PasScript
Var
J:TJSONObject;
s: String;
begin
J:=TJSONObject.Create;
s:= '{"status": true,"Language":{"DefaultLanguage": 1}}';
Try
j := TJSONObject(paxfunc.ParseJSONValue(s));
if (paxfunc.GetJSONBool(j,'status')) then
ShowMessage('{"status": true}');
Finally
j.Free;
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
以上程序运行后获取到的值为{"status": true}
。
# 2.24. GetJSONValue
function GetJSONValue(const QJSONObject: TJSONValue; const QPath:String):TJSONValue;
说明: 获取JSON对象中指定的键值中的值。 返回值: TJSONValue类型。
- GetJSONBool 函数语法中各部分说明
部分 | 说明 |
---|---|
QJSONObject | 要进行获取对象操作的JSON对象名称 |
QPath | 对象在JSON中的路径名称,路径的名称之间以"."作为分隔标志 |
# 2.25. JSONArray_AddJSONObject
function JSONArray_AddJSONObject(QJSONArray:TJSONArray;const QJSONObject: TJSONValue):TJSONArray;
说明: 在原有的JSON队列中添加一个新的JSON对象 返回值: TJSONArray类型。
- GetJSONBool 函数语法中各部分说明
部分 | 说明 |
---|---|
QJSONArray | 要进行获取对象操作的JSON队列名称 |
QJSONObject | 要添加的JSON对象名称 |
假设有以下的队列:
[{"status":"ok"}]
需要向其中添加以下的json对象:
{"status":"no"}
Var
J:TJSONValue;
A:TJSONArray;
s1,s2: String;
begin
s1:= '[{"status":"ok"}]';
s2:= '{"status":"no"}';
A := TJSONArray(paxfunc.ParseJSONValue(s1));
J := paxfunc.ParseJSONValue(s2);
A := paxfunc.JSONArray_AddJSONObject(A,J);
ShowMessage(A.ToString);
end;
2
3
4
5
6
7
8
9
10
11
12
执行以上程序,输出的结果为 [{"status","ok"},{"status":"no"}]
# 2.26. JSONObject_AddJSONArray
function JSONObject_AddJSONArray(QJSONObject: TJSONObject; const Str: string; const Val: TJSONValue):TJSONObject;
说明: 在原有的JSON对象中添加一个新的JSON值以获取一个新的JSON对象 返回值: TJSONObject类型。
部分 | 说明 |
---|---|
QJSONObject | 要获取的JSON对象名称 |
Str | 要添加的键名 |
Val | 要添加的键值 |
假设有以下的json对象:
{"status":"ok"}
需要合并以下的json队列作为子对象
[{"status":"no"}]
Var
J1:TJSONValue;
J2:TJSONValue;
A: TJSONValue;
s1,s2: String;
begin
s1:= '{"status":"ok"}';
s2:= '[{"status":"no"}]';
J1 := paxfunc.ParseJSONValue(s1);
A := paxfunc.ParseJSONValue(s2);
J2 := paxfunc.JSONObject_AddJSONArray(TJSONObject(J1),'array',A);
ShowMessage(j2.ToString);
end;
2
3
4
5
6
7
8
9
10
11
12
13
执行以上程序,输出的结果为 [{"status","ok"},"array":[{"status":"no"}]}
# 2.27. JSONParse
function JSONParse(QType, QPath, QJson: string): string;
说明: 解析JSON,获取JSON中的单元的取值。 返回值: string类型。
部分 | 说明 |
---|---|
QType | 要获取的JSON对象类型 GetJSONObject ,GetJSONArray ,GetJSONNumber 、GetJSONObject 、GetJSONValue 、GetJSONBool 、GetJSONPair |
QPath | 获取的JSON对象的路径名称 |
QJSON | 要解析的JSON对象文本 |
- 示例
```JSON
{
"status": true,
"Language":{
"DefaultLanguage": 1
}
}
2
3
4
5
6
7
//PasScript
Var
s: String;
begin
s:= '{"status": "OK","Language":{"DefaultLanguage": 1}}';
ShowMessage(paxfunc.JSONParse('GetJSONString','status',s));
end;
2
3
4
5
6
7
# 2.28. ParseJSONValue
function ParseJSONValue(QJson: string): TJSONValue;
说明: 获取字符串形式的JSON对象中指定的键值中的值。 返回值: TJSONValue类型。
- GetJSONBool 函数语法中各部分说明
部分 | 说明 |
---|---|
QJSONObject | 要进行获取对象操作的JSON对象名称 |
QPath | 对象在JSON中的路径名称,路径的名称之间以"."作为分隔标志 |
# 2.29. InputNumber
function InputNumber(AField: TField; ACantion: string = ''): Boolean;
说明: 显示数字输入小键盘 返回值: 布尔Boolean类型
- InputNumber函数语法中各部分说明
部分 | 说明 |
---|---|
AField | 指定数据集字段,数值型的字段 |
ACantion | 小键盘标签 |
- 示例
Begin
PaxFunc.InputNumber(FThis.RFDataSet1.FieldByName('FInterID'),'请输入一个数字');
End;
2
3
- 运行结果:
# 2.30. InputNumberR
function InputNumberR(var vStr: string; ACantion: string = ''): Boolean;
说明: 显示字符型变量输入小键盘 返回值: 布尔Boolean类型
- 函数语法中各部分说明
部分 | 说明 |
---|---|
vStr | 一个字符型变量 |
ACantion | 小键盘标签 |
- 示例
Var
vStr:String;
Begin
//带变量
vStr := '1234';
PaxFunc.InputNumberR(vStr,'请输入字符串');
End;
2
3
4
5
6
7
- 运行结果:
# 2.31. InputNumberStr
function InputNumberStr(AField: TField; ACantion: string = ''): Boolean;
说明: 显示用于数据库字符串输入的小键盘 返回值: 布尔Boolean类型
- InputNumberStr函数语法中各部分说明
部分 | 说明 |
---|---|
AField | 指定数据集字段,字段需要是字符型的 |
ACantion | 小键盘标签 |
- 示例
Begin
//字符型字段
PaxFunc.InputNumberStr (FThis.dts0.FieldByName('FItemCode'),'请输入字符串');
End;
2
3
4
- 运行结果:
# 2.32. MACToStr
function MACToStr(ByteArr: PByte; Len: Integer): String;
说明: MAC地址转字符串 返回值: 字符Srting类型
- MACToStr函数语法中各部分说明
部分 | 说明 |
---|---|
ByteArr | MAC地址 |
Len | 长度 |
# 2.33. NetHttpDelete
function NetHttpDelete(const Qurl: string; const QSource:string = ''): string;
说明 获取Http请求(Delete方法)。 返回值 字符string类型
- NetHttpDelete函数语法中各部分说明
部分 | 说明 |
---|---|
Qurl | Http URL内容 |
QSource | Http请求体的内容 |
# 2.34. NetHttpGet
function NetHttpGet(Qurl: string; QSource: string = ''): string;
说明: 获取Http请求 返回值: 字符string类型
- NetHttpGet函数语法中各部分说明
部分 | 说明 |
---|---|
Qurl | Http URL内容 |
QSource | Http请求体的内容 |
- 示例
var
vValue:string;
begin
//获取一个64位唯一ID
vValue := PaxFunc.NetHttpGet('http://192.168.1.100:8809/system/newid','');
Showmessage(vValue) ;
end;
2
3
4
5
6
7
- 运行结果:
# 2.35. NetHttpPut
function NetHttpPut(const Qurl: string; const QSource: string = ''; const QResponseContent: string = ''; const QContentType: string = ''; const QHeaders:TStringList = nil): string;
说明: 提交Http请求 返回值: 字符string类型
- NetHttpPut函数语法中各部分说明
部分 | 说明 |
---|---|
Qurl | Http 内容 |
QSource | 请求体内容 |
QResponseContent | 响应的内容的格式类型 |
QContentType | Http请求的内容类型 4种 application/json,application/xml, multipart/form-data,application/x-www-form-urlencoded |
QHeaders | Http请求头 |
# 2.36. NetHttpPost
function NetHttpPost(const Qurl: string; const QSource: string = ''; const QResponseContent: string = ''; const QContentType: string = ''; const QHeaders:TStringList = nil): string;
说明: 提交Http请求 返回值: 字符string类型
- NetHttpPost函数语法中各部分说明
部分 | 说明 |
---|---|
Qurl | Http 内容 |
QSource | 请求体内容 |
QResponseContent | 响应的内容的格式类型 |
QContentType | Http请求的内容类型 4种 application/json,application/xml, multipart/form-data,application/x-www-form-urlencoded |
QHeaders | Http请求头 |
- 示例
var
JsonObject:TJSONObject;
vJson:String;
begin
//通过Http请求,提交数据,JSon格式
JsonObject := TJSONObject.Create
.AddPair('customerName', 'XX科技有限公司')
.AddPair('documentDate', '2019-07-30 00:00:00')
.AddPair('documentNo', 'WUR20190730001')
.AddPair('makerPeople', '小王')
.AddPair('makerDate', '2019-07-30 23:01:01')
.AddPair('materialCode', '01001')
.AddPair('materialName', '牛津布')
.AddPair('piece', '12')
.AddPair('quantity','122' )
.AddPair('remark', '备注1')
.AddPair('status', '审核')
.AddPair('specification', '180D')
.AddPair('makerPeople', '小王')
.AddPair('storehouse', 'A-12')
.AddPair('unit', '米')
.AddPair('warehouse', '白坯仓库');
vJson:= '['+JsonObject.ToString+']';
PaxFunc.NetHttpPost('http://127.0.1.1/printing/tofoProdUse/add',vJson ,
'application/json','application/json',nil);
End;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 2.37. NextMonth
Function NextMonth(ADateTime: Variant): string;
说明: 获取指定日期下一个月第一天 返回值: 字符string类型
- NextMonth函数语法中各部分说明
部分 | 说明 |
---|---|
ADateTime | 指定的一个变体类型 |
- 示例
Var
vNextMonth:String;
Begin
vNextMonth:= PaxFunc.NextMonth ('2019-07-10');
end;
2
3
4
5
- 运行结果: 2019-08-01
# 2.38. OpenForm
function OpenForm(QFormName: string) :TBaseForm;
说明: 打开Smart项目中的窗体 返回值: TBaseForm窗体类型
- OpenForm函数语法中各部分说明
部分 | 说明 |
---|---|
QFormName | 窗体Name名称 |
- 示例
begin
paxfunc.OpenForm('Frm002');
end;
2
3
# 2.39. ParseJSONObject
function ParseJSONObject(QJsonStr:string):TJsonObject;
说明: 解析Json对象 返回值: TJsonObject对象类型
- ParseJSONObject函数语法中各部分说明
部分 | 说明 |
---|---|
QJsonStr | Json格式字符串 |
- 示例
var
v:string;
JSONObject: TJSONObject;
LItem: TJSONValue;
LJPair: TJSONPair;
LJSONArray: TJSONArray;
StrJson: string;
result: string;
i: Integer;
begin
FThis.Memo1.Lines.Add(paxfunc.urlDecode(APAYLOAD));
StrJson := paxfunc.urlDecode(APAYLOAD); //假定是上面那个json
JSONObject := paxfunc.ParseJSONObject(StrJson);
LJSONArray := JSONObject.GetValue('data') as TJSONArray;
FTHis.cbb_PrinterS.Items.Clear;
for i := 0 to LJSONArray.size - 1 do
begin
LItem := (LJSONArray.Get(i) as TJSONObject).GetValue('name'); //得到LJSONArray的值
FTHis.cbb_PrinterS.Items.Add(LItem.Value);
end;
FTHis.cbb_PrinterS.ItemIndex := 0;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 2.40. RoundToCH
function RoundToCH(const AValue: Double; const ADigit: Integer): Double;
说明: 四舍五入函数 返回值: 双精度Double类型
- 函数语法中各部分说明
部分 | 说明 |
---|---|
AValue | 指定一个Double类型的数值 |
ADigit | 指定一个小数点保留位数 |
- 示例
Var
vValue: Double;
Begin
vValue:= PaxFunc.RoundToCH (12.357,2);
end;
2
3
4
5
- 运行结果: 12.36
# 2.41. SendArticleMessage
function SendArticleMessage(const AccountName, AOpenID: string; AContent: String): Boolean;
说明: 发送图文信息 返回值: 布尔Boolean类型
- SendArticleMessage函数语法中各部分说明
部分 | 说明 |
---|---|
AccountName | 微信公众号 |
AOpenID | 微信用户AOpenID,OpenID为微信用户唯一标识ID |
AContent | 微信消息内容 |
- 示例
var
j: TJSONObject;
WechatArticle:TWechatArticle;
i:integer;
begin
//组装JSON
j := TJSONObject.Create;
j.Addpair('title', '爱招飞是什么?');
j.AddPair('description', '爱招飞是信息化与物联网整合专家。');
j.AddPair('URL', 'https://www.isoface.cn');
j.AddPair('picurl', 'http://ppic.meituba.com/uploads/allimg/2019/04/15/92_9257.jpg');
//发送模板消息
if paxfunc.SendArticleMessage('测试号','oTpfe0VB-9vClZ4uSpTD05XbBNyI',j.ToJson) Then
showmessage('发送成功!');
j.free;
End;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 2.42. SendCustomMessage
function SendCustomMessage(const AccountName, AOpenID, AContent: string): Boolean;
说明: 发送文本消息 返回值: 布尔Boolean类型
- SendCustomMessage函数语法中各部分说明
部分 | 说明 |
---|---|
AccountName | 微信公众号 |
AOpenID | 微信用户AOpenID,OpenID为微信用户唯一标识ID |
AContent | 微信消息内容 |
- 示例
Begin
if paxfunc.SendCustomMessage ('测试号','oTpfe0VB-9vClZ4uSpTD05XbBNyI','这是由Smart发出的一条消息!') Then
showmessage('发送成功!');
End;
2
3
4
# 2.43. SendEmail
function SendEmail(AParam, AAttFile: TStringList): Boolean;
说明: 发送邮件 返回值: 布尔Boolean类型
- SendEmail函数语法中各部分说明
部分 | 说明 |
---|---|
AParam | 邮件的参数,详见示例 |
AAttFile | 附件的地址,详见示例 |
- 示例
procedure TMyHandler.Button2Click;
//使用函数的方式发送
var
Param: TStringlist;
AttFile: TStringlist;
begin
if demo then exit;
Param := TStringlist.Create;
AttFile := TStringlist.Create;
Try
Param.Values['Host'] := FThis.Edit7.Text;
Param.Values['Port'] := FThis.Edit8.Text;
Param.Values['Username'] := FThis.Edit5.Text;
Param.Values['Password'] := FThis.Edit6.Text;
Param.Values['Address'] := FThis.Edit1.Text;
Param.Values['Body'] := FThis.Memo1.Lines.text;
Param.Values['Subject'] := FThis.Edit3.Text;
Param.Values['CCAddressList'] := FThis.Edit2.Text;
Param.Values['Receipt'] := '1';
if FThis.CheckBox1.Checked then
Param.Values['Bodyhtml'] := '1'
else
Param.Values['Bodyhtml'] := '0';
AttFile.Add(FThis.Edit4.Text);
if paxfunc.SendEmail(Param, AttFile) then
ShowMessage(FThis.siLang1.GetTextW('success'))
else
ShowMessage(FThis.siLang1.GetTextW('failed'));
Finally
FreeAndNil(Param);
FreeAndNil(AttFile);
End;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 2.44. SendTemplateMessage
function SendTemplateMessage(const AccountName, AJsonContent: string): Boolean;
说明: 发送模板消息 返回值: 布尔Boolean类型
- SendTemplateMessage函数语法中各部分说明
部分 | 说明 |
---|---|
AccountName | 微信公众号 |
AJsonContent | Json格式化字符串 |
- 示例
var
JsonObject:TJSONObject;
Begin
//组装JSON
JsonObject := TJSONObject.Create
.AddPair('touser', 'oTpfe0VB-9vClZ4uSpTD05XbBNyI')
.AddPair('template_id', 'vX0v1WgEMjUwRhv8EsdeD1diwXm1CRZ5v5bty7hHHMs')
.AddPair('url', 'www.isoface.cn')
.AddPair('topcolor', '#FF0000')
.AddPair('data', TJSONObject.Create
.AddPair('Caption', TJSONObject.Create
.AddPair('value', '这是由Smart发出的一条消息!')
.AddPair('color', '#173177')
)
);
//发送模板消息
paxfunc.SendTemplateMessage('测试号', JsonObject.ToJson);
JsonObject.free;
End;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 2.45. SendWechatMsg
function SendWechatMsg(const AccountName, AOpenID, ATemplateID, AContent: string): Boolean;
说明: 发送模板消息 返回值: 布尔Boolean类型
- SendWechatMsg函数语法中各部分说明
部分 | 说明 |
---|---|
AccountName | 微信公众号 |
AOpenID | 微信用户AOpenID,OpenID为微信用户唯一标识ID |
ATemplateID | 微信消息模板ID |
AContent | 微信消息内容 |
- 示例
Begin
if paxfunc.SendWechatMsg('测试号','oTpfe0VB-9vClZ4uSpTD05XbBNyI',
'vX0v1WgEMjUwRhv8EsdeD1diwXm1CRZ5v5bty7hHHMs','这是由PInToo发出的一条消息!') Then
showmessage('发送成功!');
End;
2
3
4
5
# 2.46. ShowHandWrite
function ShowHandWrite(QData:string): string;
说明: 显示字符串手写板 返回值: 布尔Boolean类型
- ShowHandWrite函数语法中各部分说明
部分 | 说明 |
---|---|
QData | 一个默认的字符串,可以是原文本 |
- 示例
Var
vStr:String;
Begin
//显示手写板功能
vStr := PaxFunc.ShowHandWrite ('');
End;
2
3
4
5
6
- 运行效果:
# 2.47. StreamToBase64
function StreamToBase64(AStream:TStream):String;
说明: 流转base64 返回值: String字符串类型
- StreamToBase64函数语法中各部分说明
部分 | 说明 |
---|---|
AStream | 流对象 |
- 示例
var
aBase64String:string;
AStream:TMemoryStream;
begin
//将图片转换成Base64
AStream:=TMemoryStream.Create;
AStream.Position := 0;
FThis.image1.Picture.SaveToStream(AStream);
aBase64String := paxfunc.StreamToBase64(AStream);
AStream.Free;
end;
2
3
4
5
6
7
8
9
10
11
# 2.48. UrlDecode
function UrlDecode(const Qurl: string): string;
说明: Url解码 返回值: Word类型
- UrlDecode函数语法中各部分说明
部分 | 说明 |
---|---|
Qurl | 需要编码的内容 |
- 示例
var
v:string;
begin
v:=paxfunc.NetHttpPost('http://192.168.1.100:8808/getprinterlist','','application/xml');
FThis.Memo1.Lines.Add(paxfunc.urlDecode(v));
end;
2
3
4
5
6
# 2.49. UrlEncode
function UrlEncode(const Qurl: string): String;
说明: Url编码 返回值: String字符类型
- UrlEncode函数语法中各部分说明
部分 | 说明 |
---|---|
Qurl | 需要编码的内容 |
- 示例
//*可选。邮件主题*/
vList.Values['EMailSubject'] := paxfunc.URLEncode('客户基本信息清单');
2
# 2.50. YesNoMsg
function YesNoMsg(aMsg: string; aTitle: string = ''): Boolean;
说明: 是否选择对话框 返回值: 布尔Boolean类型
- YesNoMsg函数语法中各部分说明
部分 | 说明 |
---|---|
aMsg | 对话框消息内容 |
aTitle | 对话框标题 |
- 示例
Begin
If PaxFunc.YesNoMsg ('确认删除吗?', '提示') then
Begin
Showmessage('OK')
End;
end;
2
3
4
5
6
- 运行结果:
# 2.51. ToJSONObjectString
function ToJSONObjectString(ADataSet:TDataSet;const AOnlyUpdatedRecords: Boolean = False; const AChildRecords: Boolean = True; const AValueRecords: Boolean = True; const AEncodeBase64Blob: Boolean = True): string;
说明:将数据集中当前选择的的数据行转换为JSON对象的数据集。输出的格式为字段名称与字段值组成的键值对。 返回值: string类型。
{"code":"Code1","name":1}
- ToJSONObjectString函数中语法各部分说明
部分 | 说明 |
---|---|
ADataSet | 要转换的数据集控件名称 |
AOnlyUpdatedRecords | 设置是否只存储更新的记录 |
AChildRecords | 设置是否包含子记录 |
AValueRecords | 是否包含数值记录 |
AEncodeBase64Blob | 是否使用Base64编码二进制数据 |
# 2.52. ToJSONArrayString
function ToJSONArrayString(ADataSet:TDataSet;const AOnlyUpdatedRecords: Boolean = False; const AChildRecords: Boolean = True; const AValueRecords: Boolean = True; const AEncodeBase64Blob: Boolean = True): string;
说明: 将数据集中的数据转换为JSONArray。是由JSON对象组成的队列。 返回值: string类型。
[{"code":"Code1","name":1},{"code":"Code2","name":2}]
- ToJSONArrayString函数中语法各部分说明
部分 | 说明 |
---|---|
ADataSet | 要转换的数据集控件名称 |
AOnlyUpdatedRecords | 设置是否只存储更新的记录 |
AChildRecords | 设置是否包含子记录 |
AValueRecords | 是否包含数值记录 |
AEncodeBase64Blob | 是否使用Base64编码二进制数据 |
# 2.53. ToJSONObject
function ToJSONObject(ADataSet:TDataSet;const AOnlyUpdatedRecords: Boolean = False; const AChildRecords: Boolean = True; const AValueRecords: Boolean = True; const AEncodeBase64Blob: Boolean = True): TJSONObject;
说明: 将数据集中当前指向的数据行转换为JSON对象类型。 返回值: TJSONObject类型。
- ToJSONObject函数中语法各部分说明
部分 | 说明 |
---|---|
ADataSet | 要转换的数据集控件名称 |
AOnlyUpdatedRecords | 设置是否只存储更新的记录 |
AChildRecords | 设置是否包含子记录 |
AValueRecords | 是否包含数值记录 |
AEncodeBase64Blob | 是否使用Base64编码二进制数据 |
# 2.54. ToJSONArray
function ToJSONArray(ADataSet:TDataSet;const AOnlyUpdatedRecords: Boolean = False; const AChildRecords: Boolean = True; const AValueRecords: Boolean = True; const AEncodeBase64Blob: Boolean = True): TJSONArray;
说明: 将数据集中的数据转换为JSON对象序列类型。 返回值: TJSONArray类型。
- ToJSONObject函数中语法各部分说明
部分 | 说明 |
---|---|
ADataSet | 要转换的数据集控件名称 |
AOnlyUpdatedRecords | 设置是否只存储更新的记录 |
AChildRecords | 设置是否包含子记录 |
AValueRecords | 是否包含数值记录 |
AEncodeBase64Blob | 是否使用Base64编码二进制数据 |
# 2.55. SaveStructure
function SaveStructure(ADataSet:TDataSet): TJSONArray;
说明: 获取当前的数据集的结构信息,以JSONArray的方式输出,包括数据表的字段名称、数据类型、大小等信息。 返回值: TJSONArray类型。
部分 | 说明 |
---|---|
ADataSet | 要转换的数据集控件名称 |
# 2.56. ValidateJSONObject
function ValidateJSONObject(ADataSet:TDataSet;const AJSONObject: TJSONObject; const ALang: TLanguageType = enUS; const AOwns: Boolean = True): TJSONArray;
说明: 用于验证JSON对象组件是否有效。 返回值:TJSONArray类型
- ValidateJSONObject程序语法中各部分说明
部分 | 说明 |
---|---|
ADataSet | 要转换的数据集控件名称 |
AJSONObject | 要验证的JSON对象 |
ALang | 语言类型 |
AOwns | 设置是否占用 |
# 2.57. ValidateJSONString
function ValidateJSONString(ADataSet:TDataSet;const AJSONString: string; const ALang: TLanguageType = enUS): TJSONArray;
说明: 用于验证JSON对象字符串是否有效。 返回值:TJSONString类型
- ValidateJSONString程序语法中各部分说明
部分 | 说明 |
---|---|
ADataSet | 要转换的数据集控件名称 |
AJSONString | 要验证的JSON字符串 |
ALang | 语言类型 |
# 3. IOT类函数
该章节中的函数需以Iot.
开头。
# 3.1. BTACreateServerSocket
function BTACreateServerSocket(ABluetoothAdapter: TBluetoothAdapter; AServerName, AUUID: string; ASecure: Boolean = false): TBluetoothServerSocket;
说明: 创建服务端套接字 返回值: TBluetoothServerSocket类型
- BTACreateServerSocket函数语法中各部分说明
部分 | 说明 |
---|---|
ABluetoothAdapter | 蓝牙适配器 |
AServerName | 蓝牙服务名称 |
AUUID | 蓝牙服务UUID |
ASecure | True=可靠的 |
- 示例
# 3.2. BTDCreateClientSocket
function BTDCreateClientSocket(ABluetoothDevice: TBluetoothDevice; AUUID: string; ASecure: Boolean = false): TBluetoothSocket;
说明: 创建客户端套接字 返回值: TBluetoothSocket类型
- BTDCreateClientSocket函数语法中各部分说明
部分 | 说明 |
---|---|
ABluetoothDevice | 蓝牙设备 |
AUUID | 蓝牙服务UUID |
ASecure | 蓝牙服务UUID |
- 示例
var
LDevice: TBluetoothDevice;
begin
if (FSocket = nil) or (ItemIndex <> FThis.ComboboxPaired.ItemIndex) then
begin
if FThis.ComboboxPaired.ItemIndex > -1 then
begin
// 创建客户端套接字
LDevice := IOT.GetBluetoothDevice(FPairedDevices,FThis.ComboboxPaired.ItemIndex) as TBluetoothDevice;
FSocket := IOT.BTDCreateClientSocket(LDevice,ServiceGUI,false);
if FSocket <> nil then
begin
ItemIndex := FThis.ComboboxPaired.ItemIndex;
FSocket.Connect;
IOT.BTSKSendData(FSocket,FThis.ASendData.Text);
FThis.DisplayR.Lines.Add('发送数据:'+FThis.ASendData.Text);
end
else
ShowMessage('Out of time -15s-');
end
else
ShowMessage('No paired device selected');
end
else
begin
IOT.BTSKSendData(FSocket,FThis.ASendData.Text);
FThis.DisplayR.Lines.Add('发送数据:'+FThis.ASendData.Text);
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 3.3. BTMConnectionState
function BTMConnectionState(ABluetoothManager: TBluetoothManager): Boolean;
说明: 判断蓝牙状态 返回值: Boolean类型
- BTMConnectionState函数语法中各部分说明
部分 | 说明 |
---|---|
ABluetoothManager | 当前蓝牙管理器 |
- 示例
if IOT.BTMConnectionState(FBluetoothManager) then
begin
Labeldiscoverable.Text := 'Device discoverable as "'+FBluetoothManager.CurrentAdapter.AdapterName+'"';
Result := True;
end
else
begin
Result := False;
DisplayR.Lines.Add('No Bluetooth device Found');
DisplayR.GoToTextEnd;
end;
2
3
4
5
6
7
8
9
10
11
# 3.4. BTMCurrent
function BTMCurrent: TBluetoothManager;
说明: 获取当前蓝牙管理器 返回值: TBluetoothManager类型
- 示例
FBluetoothManager := IOT.BTMCurrent;
# 3.5. BTSKSendData
procedure BTSKSendData(ABluetoothSocket: TBluetoothSocket; ASendText: string);
说明: 发送信息 *BTSKSendData函数语法中各部分说明
部分 | 说明 |
---|---|
ABluetoothSocket | 客户端套接字 |
ASendText | 发送的内容 |
- 示例
var
LDevice: TBluetoothDevice;
begin
if (FSocket = nil) or (ItemIndex <> FThis.ComboboxPaired.ItemIndex) then
begin
if FThis.ComboboxPaired.ItemIndex > -1 then
begin
LDevice := IOT.GetBluetoothDevice(FPairedDevices,FThis.ComboboxPaired.ItemIndex) as TBluetoothDevice;
FSocket := IOT.BTDCreateClientSocket(LDevice,ServiceGUI,false);
if FSocket <> nil then
begin
ItemIndex := FThis.ComboboxPaired.ItemIndex;
//客户端套接字连接
FSocket.Connect;
//发送数据
IOT.BTSKSendData(FSocket,FThis.ASendData.Text);
FThis.DisplayR.Lines.Add('发送数据:'+FThis.ASendData.Text);
end
else
ShowMessage('Out of time -15s-');
end
else
ShowMessage('No paired device selected');
end
else
begin
//发送数据
IOT.BTSKSendData(FSocket,FThis.ASendData.Text);
FThis.DisplayR.Lines.Add('发送数据:'+FThis.ASendData.Text);
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 3.6. BTSKReadData
function BTSKReadData(ABluetoothSocket: TBluetoothSocket): string;
说明: 读取蓝牙套接字返回的内容 返回值: Word类型
- BTSKReadData函数语法中各部分说明
部分 | 说明 |
---|---|
ABluetoothSocket | 客户端套接字 |
- 示例
var
FData:String;
begin
//发送数据
SendData;
//读取数据
FData := IOT.BTSKReadData(FSocket);
FData := Trim(FData);
if FData <> '' Then
begin
if length(FData)=10 Then
begin
FThis.DisplayR.Lines.Add('湿度:'+Copy(FData,1,5)+' %, 温度:'+Copy(FData,6,4)+' ℃');
End
else
begin
FThis.DisplayR.Lines.Add('返回数据:'+FData);
End;
end
else
begin
FThis.DisplayR.Lines.Add('返回数据:无数据!');
end
End;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 3.7. BTSKReceiveData
function BTSKReceiveData(ABluetoothSocket: TBluetoothSocket): string;
说明: 接收信息 返回值: string类型
- BTSKReceiveData函数语法中各部分说明
部分 | 说明 |
---|---|
ABluetoothSocket | 客户端套接字 |
- 示例
var
FData:String;
begin
//发送数据
SendData;
//读取数据
FData := IOT.BTSKReceiveData(FSocket);
FData := Trim(FData);
if FData <> '' Then
begin
if length(FData)=10 Then
begin
FThis.DisplayR.Lines.Add('湿度:'+Copy(FData,1,5)+' %, 温度:'+Copy(FData,6,4)+' ℃');
End
else
begin
FThis.DisplayR.Lines.Add('返回数据:'+FData);
End;
end
else
begin
FThis.DisplayR.Lines.Add('返回数据:无数据!');
end
End;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 3.8. BTSLGetServicesCount
function BTSLGetServicesCount(ABluetoothServiceList: TBluetoothServiceList): Integer;
说明: 统计蓝牙服务个数 **返回值:**Integer类型
- BTSLGetServicesCount函数语法中各部分说明
部分 | 说明 |
---|---|
ABluetoothServiceList | 蓝牙服务端列表 |
- 示例
var
LServices: TBluetoothServiceList;
LDevice: TBluetoothDevice;
I: Integer;
begin
FThis.ComboBoxServices.Clear;
if ManagerConnected then
if FThis.ComboboxPaired.ItemIndex > -1 then
begin
//获取蓝牙设备
LDevice := FPairedDevices[FThis.ComboboxPaired.ItemIndex] as TBluetoothDevice;
//获取蓝牙设备服务
LServices := LDevice.GetServices;
//遍历蓝牙服务列表
for I := 0 to IOT.BTSLGetServicesCount(LServices) - 1 do
begin
FThis.ComboBoxServices.Items.Add(IOT.BTSLGetServicesName(LServices,I) + '-->' + IOT.BTSLGetServicesUUID(LServices,I));
End;
FThis.ComboBoxServices.ItemIndex := 0;
end
else
ShowMessage('No paired device selected');
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 3.9. BTSLServicesName
function BTSLServicesName(ABluetoothServiceList: TBluetoothServiceList; AIndex: Integer): string;
说明: 获取蓝牙服务名称 返回值: string字符类型
- BTSLServicesName函数语法中各部分说明
部分 | 说明 |
---|---|
ABluetoothDeviceList | 配对蓝牙列表 |
AIndex | 蓝牙索引号 |
- 示例
var
LServices: TBluetoothServiceList;
LDevice: TBluetoothDevice;
I: Integer;
begin
FThis.ComboBoxServices.Items.Clear;
if ManagerConnected then
if FThis.ComboboxPaired.ItemIndex > -1 then
begin
LDevice := IOT.GetBluetoothDevice(FPairedDevices,FThis.ComboboxPaired.ItemIndex) as TBluetoothDevice;
LServices := LDevice.GetServices;
for I := 0 to LServices.Count - 1 do
begin
FThis.ComboBoxServices.Items.Add(IOT.BTSLServicesName(LServices,I) + '-->' + IOT.BTSLServicesUUID(LServices,I));
End;
if LServices.Count > 0 then
FThis.ComboBoxServices.ItemIndex := 0;
end
else
ShowMessage('No paired device selected');
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 3.10. BTSLServicesUUID
function BTSLServicesUUID(ABluetoothServiceList: TBluetoothServiceList; AIndex: Integer): string;
说明: 获取蓝牙服务UUID 返回值: string字符类型
- BTSLServicesUUID函数语法中各部分说明
部分 | 说明 |
---|---|
ABluetoothDeviceList | 配对蓝牙列表 |
AIndex | 蓝牙索引号 |
- 示例
var
LServices: TBluetoothServiceList;
LDevice: TBluetoothDevice;
I: Integer;
begin
FThis.ComboBoxServices.Items.Clear;
if ManagerConnected then
if FThis.ComboboxPaired.ItemIndex > -1 then
begin
LDevice := IOT.GetBluetoothDevice(FPairedDevices,FThis.ComboboxPaired.ItemIndex) as TBluetoothDevice;
LServices := LDevice.GetServices;
for I := 0 to LServices.Count - 1 do
begin
FThis.ComboBoxServices.Items.Add(IOT.BTSLServicesName(LServices,I) + '-->' + IOT.BTSLServicesUUID(LServices,I));
End;
if LServices.Count > 0 then
FThis.ComboBoxServices.ItemIndex := 0;
end
else
ShowMessage('No paired device selected');
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 3.11. BTSSAccept
function BTSSAccept(ABluetoothServerSocket: TBluetoothServerSocket): TBluetoothSocket;
说明: 接收一个蓝牙套接字 **返回值:**TBluetoothSocket类型 *BTSSAccept函数语法中各部分说明
部分 | 说明 |
---|---|
ABluetoothServerSocket | 服务端套接字 |
- 示例
var
ASocket:TBluetoothSocket;
begin
ASocket := nil;
ASocket := IOT.BTSSAccept(FServerSocket);
end;
2
3
4
5
6
# 3.12. ComReadAnsiString
function ComReadAnsiString(AComPort:TComPort): AnsiString;
说明: 读取串口返回的字符串 返回值: AnsiString字符串类型
- ComReadAnsiString函数语法中各部分说明
部分 | 说明 |
---|---|
AComPort | 需要操作的串口通讯控件对象 |
# 3.13. ComReadString
function ComReadString(AComPort:TComPort): String;
说明: 读取串口返回的字符串 返回值: String字符串类型
- ComReadString函数语法中各部分说明
部分 | 说明 |
---|---|
AComPort | 需要操作的串口通讯控件对象 |
# 3.14. GetBluetoothDevice
function GetBluetoothDevice(ABluetoothDeviceList: TBluetoothDeviceList; AIndex: Integer): TBluetoothDevice;
说明: 获取已配对蓝牙 返回值: TBluetoothDevice类型
- GetBluetoothDevice函数语法中各部分说明
部分 | 说明 |
---|---|
ABluetoothDeviceList | 配对蓝牙列表 |
AIndex | 蓝牙索引号 |
- 示例
var
I: Integer;
begin
FThis.ComboboxPaired.Items.Clear;
FPairedDevices := FBluetoothManager.GetPairedDevices;
if FPairedDevices.Count > 0 then
begin
for I:= 0 to FPairedDevices.Count - 1 do
begin
FBluetoothDevice := IOT.GetBluetoothDevice(FPairedDevices,I);
FThis.ComboboxPaired.Items.Add(FBluetoothDevice.DeviceName);
end;
end
else
FThis.ComboboxPaired.Items.Add('No Paired Devices');
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 3.15. IdTCPClientSendCmd
function IdTCPClientSendCmd(AIdTCPClient: TIdTCPClient; QAOut: string): Int16;
说明: 发送TCP命令 返回值: Int16类型
- IdTCPClientSendCmd函数语法中各部分说明
部分 | 说明 |
---|---|
AIdTCPClient | 需要操作的IdTCPClient对象 |
QAOut | 发送的内容 |
- 示例
//发送TCP命令
IOT.IdTCPClientSendCmd(FThis.IdTCPClient1,'1');
2
# 3.16. ModbusTCPReadCoils
function ModbusTCPReadCoils(const RegNo, Blocks: Word; Modbus: TIdModBusClient): string;
说明: 读取输出数位讯号 返回值: String字符串类型
- ModbusTCPReadCoils函数语法中各部分说明
部分 | 说明 |
---|---|
RegNo | 起始位址 |
Blocks | 数据长度 |
Modbus | 需要操作的ModbusTCP对象 |
# 3.17. ModbusTCPReadHoldingRegisters
function ModbusTCPReadHoldingRegisters(const RegNo, Blocks: Word; Modbus: TIdModBusClient): string;
说明: 读取输出类比讯号 返回值: String字符串类型
- ModbusTCPReadHoldingRegisters函数语法中各部分说明
部分 | 说明 |
---|---|
RegNo | 起始位址 |
Blocks | 数据长度 |
Modbus | 需要操作的ModbusTCP对象 |
# 3.18. ModbusTCPWriteCoils
function ModbusTCPWriteCoils(const RegNo, Blocks: Word; const RegisterData: string; Modbus: TIdModBusClient): boolean;
说明: 写入数位(多个)讯号 返回值: boolean布尔类型
- ModbusTCPWriteCoils函数语法中各部分说明
部分 | 说明 |
---|---|
RegNo | 起始位址 |
Blocks | 数据长度 |
RegisterData | 需要写入的内容 |
Modbus | 需要操作的ModbusTCP对象 |
# 3.19. ModbusTCPWriteRegisters
function ModbusTCPWriteRegisters(const RegNo, Blocks: Word; const RegisterData: string; Modbus: TIdModBusClient): boolean;
说明: 写入类比(多个)讯号 返回值: boolean布尔类型
- ModbusTCPWriteRegisters函数语法中各部分说明
部分 | 说明 |
---|---|
RegNo | 起始位址 |
Blocks | 数据长度 |
RegisterData | 需要写入的内容 |
Modbus | 需要操作的ModbusTCP对象 |
# 4. BaseFrom基类函数
基类程序在脚本中调用时,必须以FThis.开头。
# 4.1. GetData
function GetData(QIndex: Integer): TRFDataSet;
说明: 获取基类数据集 返回值: 数据集TRFDataSet类型
- GetData函数语法中各部分说明
部分 | 说明 |
---|---|
QIndex | 数据集索引 |
- 示例
Var
vData:TRFDataSet;
begin
//获取基类DataSetList中第0号数据集
vData :=FThis.GetData (0);
vData.Open;
end;
2
3
4
5
6
7