mormot接口封装
mormot接口封装
mormot基于http.sys通讯,支持海量并发,用mormot开发的服务端,长时间运行非常稳定。
经常有人说mormot晦涩难懂,但经过封装以后的MORMOT接口,调用异常简单。支持DELPHI7及以上版本调用哦!
1 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 | procedure TForm1.DownFile(filename: string ); // 下载文件 var url: SockString; i: integer; serial: TynSerial; ms: TMemoryStream; begin serial := TynSerial.Create; ms := TMemoryStream.Create; try url := 'downfile' ; serial.WriteString( 'filename' , filename); i := FHttp.Post(url, serial.Text, FDataType); if i = 200 then begin serial.Text := FHttp.Content; serial.ReadFile( 'filecontent' , ms); ms.SaveToFile('d:\' + filename); end else ShowMessage(i.ToString + ' error' ); finally serial.Free; ms.Free; end; end; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | procedure TForm1.Qry(accountno, sql: string ; DataSet: TFDMemTable); // TFDMemTable查询 var url: SockString; i: integer; serial: TynSerial; begin serial := TynSerial.Create; try url := 'query2' ; serial.WriteString( 'accountno' , accountno); serial.WriteString( 'sql' , sql); i := FHttp.Post(url, serial.Text, FDataType); if i = 200 then begin serial.Text := FHttp.Content; serial.ReadFDDataSet( 'dataset' , DataSet); end else ShowMessage(i.ToString + ' error' ); finally serial.Free; end; end; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | procedure TForm1.Qry(accountno, sql: string ; DataSet: TClientDataSet); // TClientDataSet查询 var url: SockString; i: integer; serial: TynSerial; begin serial := TynSerial.Create; try url := 'query3' ; serial.WriteString( 'accountno' , accountno); serial.WriteString( 'sql' , sql); i := FHttp.Post(url, serial.Text, FDataType); if i = 200 then begin serial.Text := FHttp.Content; serial.ReadClientDataSet( 'dataset' , DataSet); end else ShowMessage(i.ToString + ' error' ); finally serial.Free; end; end; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | procedure TForm1.redisQry(cacheKey, accountno, sql: string ; DataSet: TFDMemTable); // redis缓存 查询 var url: SockString; i: integer; serial: TynSerial; begin serial := TynSerial.Create; try url := 'redis' ; serial.WriteString( 'accountno' , accountno); serial.WriteString( 'sql' , sql); serial.WriteString( 'cachekey' , cacheKey); i := FHttp.Post(url, serial.Text, FDataType); if i = 200 then begin serial.Text := FHttp.Content; serial.ReadFDDataSet( 'dataset' , DataSet); end else ShowMessage(i.ToString + ' error' ); finally serial.Free; end; end; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | procedure TForm1.Qry(middleMark, accountno, sql: string ; DataSet: TFDMemTable); // 中间件桥接查询 var url: SockString; i: integer; serial: TynSerial; begin serial := TynSerial.Create; try url := 'bridgequery' ; serial.WriteString( 'accountno' , accountno); serial.WriteString( 'sql' , sql); serial.WriteString( 'middlemark' , middleMark); i := FHttp.Post(url, serial.Text, FDataType); if i = 200 then begin serial.Text := FHttp.Content; serial.ReadFDDataSet( 'dataset' , DataSet); end else ShowMessage(i.ToString + ' error' ); finally serial.Free; end; end; |
1 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 | procedure TForm1.Qrys(accountno, sql, sql2: string ; DataSet, DataSet2: TClientDataSet); // TClientDataSet主从表查询 var url: SockString; i: integer; serial: TynSerial; begin serial := TynSerial.Create; try url := 'querys2' ; serial.WriteString( 'accountno' , accountno); serial.WriteString( 'sql' , sql); serial.WriteString( 'sql2' , sql2); i := FHttp.Post(url, serial.Text, FDataType); if i = 200 then begin serial.Text := FHttp.Content; serial.ReadClientDataSet( 'dataset' , DataSet); serial.ReadClientDataSet( 'dataset2' , DataSet2); end else ShowMessage(i.ToString + ' error' ); finally serial.Free; end; end; |
1 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 | procedure TForm1.Qrys(accountno, sql, sql2: string ; DataSet, DataSet2: TFDMemTable); // TFDMemTable主从表查询 var url: SockString; i: integer; serial: TynSerial; begin serial := TynSerial.Create; try url := 'querys' ; serial.WriteString( 'accountno' , accountno); serial.WriteString( 'sql' , sql); serial.WriteString( 'sql2' , sql2); i := FHttp.Post(url, serial.Text, FDataType); if i = 200 then begin serial.Text := FHttp.Content; serial.ReadFDDataSet( 'dataset' , DataSet); serial.ReadFDDataSet( 'dataset2' , DataSet2); end else ShowMessage(i.ToString + ' error' ); finally serial.Free; end; end; |
1 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 | function TForm1.Save(accountno, tablename: string ; dataset: TClientDataSet): string ; // clientDataSet提交 var url: SockString; i: Integer; serial: TynSerial; begin serial := TynSerial.Create; try url := 'save' ; serial.WriteString( 'accountno' , accountno); serial.WriteString( 'tablename' , tablename); serial.WriteDelta( 'delta' , dataset); i := FHttp.Post(url, serial.Text, FDataType); if i = 200 then begin serial.Text := FHttp.Content; if serial.ReadBool( 'result' ) then dataset.MergeChangeLog; end else ShowMessage(i.ToString + ' error' ); finally serial.Free; end; end; |
1 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 | function TForm1.Save(accountno, tablename: string ; dataset: TFDMemTable): string ; // TFDMemTable提交 var url: SockString; i: Integer; serial: TynSerial; begin serial := TynSerial.Create; try url := 'save2' ; serial.WriteString( 'accountno' , accountno); serial.WriteString( 'tablename' , tablename); serial.WriteFDDelta( 'delta' , dataset); i := FHttp.Post(url, serial.Text, FDataType); if i = 200 then begin serial.Text := FHttp.Content; if serial.ReadBool( 'result' ) then dataset.MergeChangeLog else ShowMessage( '提交失败' ); end else ShowMessage(i.ToString + ' error' ); finally serial.Free; end; end; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | procedure TForm1.StoredProc(accountno, spname, params : string ; DataSet: TClientDataSet); // 存储过程 var url: SockString; i: Integer; serial: TynSerial; begin serial := TynSerial.Create; try url := 'spopen3' ; serial.WriteString( 'accountno' , accountno); serial.WriteString( 'spname' , spname); serial.WriteString( 'params' , params ); i := FHttp.Post(url, serial.Text, FDataType); if i = 200 then begin serial.Text := FHttp.Content; serial.ReadClientDataSet( 'dataset' , DataSet); end else ShowMessage(i.ToString + ' error' ); finally serial.Free; end; end; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | procedure TForm1.UpFile(filename: string ); // 上传文件 var url: SockString; i: Integer; serial: TynSerial; begin serial := TynSerial.Create; try url := 'upfile' ; serial.WriteFile( 'filecontent' , filename); serial.WriteString( 'filename' , filename); i := FHttp.Post(url, serial.Text, FDataType); if i = 200 then begin end else ShowMessage(i.ToString + ' error' ); finally serial.Free; end; end; |
本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/12297854.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2012-02-12 XE2 LSUPER LITE安装提示item not found
2012-02-12 sql工厂类
2012-02-12 远程方法的定义和调用
2012-02-12 xe 最大连接数限制、记录客户连接、心跳