Delphi

Delphi XE7的蓝牙 Bluetooth

旧街凉风 提交于 2020-02-21 08:38:37
Delphi XE7已经内建了蓝牙功能,提供了System.Bluetooth.pas单元 顾名思义,System表示XE7的蓝牙功能可以在Windows,Android,IOS系统内使用 System.Bluetooth单元中主要包含一下几个类,其中带LE的支持所有系统,不带LE的类不支持Ios系统,带与不带LE功能是一样的。 TBluetoothManager TBluetoothDeviceList TBluetoothAdapter TBluetoothDevice TBluetoothService TBluetoothServiceList TBluetoothSocket TBluetoothLEManager TBluetoothLEDeviceList TBluetoothLEAdapter TBluetoothLEDevice TBluetoothLEService TBluetoothLEServiceList TBluetoothLESocket 其中: TBluetoothManager是蓝牙管理器,用于蓝牙设备管理,包括发现蓝牙设备,获取配对设备,处理远程配对请求等功能 TBluetoothDeviceList是蓝牙设备列表,TBluetoothDeviceList = class(TObjectList<TBluetoothDevice>)

IdHTTP how to send raw body

强颜欢笑 提交于 2020-02-21 02:55:50
问题 How i can use IdHTTP to send message as PostMan dos below: My first attempt was as follow: function TIdFoo.SendIM(const AID, AMessage: string): Boolean; const _URL = 'https://URL.com/SendMessage'; var Params : TStringStream; Response : string; LMsg : string; begin Result := False; LMsg := '-----------------------------13932'+ 'Content-Type: application/json; charset=utf-8'+ 'Content-Description: message'+ sLineBreak+ '{"message":{"Type":1,"body":"'+AMessage+'"},"to":["'+AID+'"]}'+ '----------

delphi 编写dll

半世苍凉 提交于 2020-02-20 18:56:58
开使你的第一个DLL专案 1.File->Close all->File->New﹝DLL﹞ 代码: //自动产生Code如下: ibrary Project2; //这有段废话。 uses SysUtils, Classes; {$R *.RES} begin end. 2.加个Func进来: 代码: library Project2; uses SysUtils, Classes; Function MyMax ( X , Y : integer ) : integer ; stdcall ; begin if X > Y then Result := X else Result := Y ; end ; //切记:Library 的名字大小写没关系,可是DLL-Func的大小写就有关系了。 // 在 DLL-Func-Name写成MyMax与myMAX是不同的。如果写错了,立即的结果是你调用到此DLL的AP根本开不起来。 //参数的大小写就没关系了。甚至不必同名。如原型中是 (X,Y:integer)但引用时写成(A,B:integer),那是没关系的。 //切记:要再加个stdcall。书上讲,如果你是用Delphi写DLL,且希望不仅给 Delphi-AP也希望BCB/VC-AP等使用的话,那你最好加个Stdcall ; //参数型态:Delphi有很多种它自己的变量型态

利用Delphi编写Socket通信程序2

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-20 14:13:35
  笔者在工作中遇到对局域网中各工作站与服务器之间进行Socket通信的问题。现在将本人总结出来的TServerSocket和TClientSocket两个组件的基本用法写出来,希望与您分享。   ClientSocket组件为客户端组件。它是通信的请求方,也就是说,它是主动地与服务器端建立连接。   ServerSocket组件为服务器端组件。它是通信的响应方,也就是说,它的动作是监听以及被动接受客户端的连接请求,并对请求进行回复。   ServerSocket组件可以同时接受一个或多个ClientSocket组件的连接请求,并与每个ClientSocket组件建立单独的连接,进行单独的通信。因此,一个服务器端可以为多个客户端服务。   设计思路   本例包括一个服务器端程序和一个客户端程序。客户端程序可以放到多个计算机上运行,同时与服务器端进行连接通信。   本例的重点,一是演示客户端与服务器端如何通信;二是当有多个客户端同时连接到服务器端时,服务器端如何识别每个客户端,并对请求给出相应的回复。为了保证一个客户端断开连接时不影响其它客户端与服务器端的通信,同时保证服务器端能够正确回复客户端的请求,在本例中声明了一个记录类型:    type  client_record=record  CHandle: integer; //客户端套接字句柄  CSocket

用Delphi制作DLL的方法-

北慕城南 提交于 2020-02-20 12:44:20
用Delphi制作DLL的方法 文前: 一本介绍电子书籍 http://www.cnblogs.com/Files/liangqihui/DelphiDLL.rar 一 Dll的制作一般步骤   二 参数传递   三 DLL的初始化和退出清理[如果需要初始化和退出清理]   四 全局变量的使用   五 调用静态载入   六 调用动态载入   七 在DLL建立一个TForM   八 在DLL中建立一个TMDIChildForM   九 示例:   十 Delphi制作的Dll与其他语言的混合编程中常遇问题:   十一 相关资料   一 Dll的制作一般分为以下几步:   1 .在一个DLL工程里写一个过程或函数   2 .写一个Exports关键字,在其下写过程的名称。不用写参数和调用后缀。   二 参数传递   1 .参数类型最好与window C++的参数类型一致。不要用DELPHI的数据类型。   2 .最好有返回值[即使是一个过程],来报出调用成功或失败,或状态。成功或失败的返回值最好为1[成功]或0[失败].一句话,与windows c++兼容。   3 .用stdcall声明后缀。   4 .最好大小写敏感。   5 .无须用far调用后缀,那只是为了与windows 16位程序兼容。   三 DLL的初始化和退出清理[如果需要初始化和退出清理]   1 .DLLProc

Delphi: How to get (current code line, current unit, current function) without using Assertion?

别来无恙 提交于 2020-02-20 09:07:04
问题 I am trying to create a log system on my program that will log debugging messages on text files, and I want to save the exact place in the code where the log message called, but I don't want to use Assert function because it creates exceptions and this system is not for logging exceptions only, also I have to write some debugging info. example usning assert: procedure AnyProcedure(); begin try Assert(1=0); except on E: Exception do Log.AddLine('Log occurred is '+E.Message+' : Start');//Log

Record 与 Class, Delphi有部分类改为记录了,他们是怎么释放的!

孤人 提交于 2020-02-20 07:49:48
记得我是在delphi2005里面看到Record可以和Class一样定义方法(Function、Procedure)的,最近几年不像年轻时太爱看语言新特性了。Delphi XE2将正则表达式加入到了系统,成为体系的一部分 System.RegularExpressions,但是它表现出来的是TRegEx记录,对,是记录,不是类,也许是为了效率考虑,之后也从没有看过实现,虽然我们大家都知道Delhpi是最大的开源软件(从1~现在26既 DX10.3所有的代码都是公开的)! 最近想将一小片lazarus代码转回Delhpi,由于Lazarus系统自带正则表达式目前主推的是 RegExpr 类(很早就开源),将其转换到TRegEx记录,在实现上确实有改动较大举个列子,至少没有释放! function FindOutRex(const aString: string; const aRex: string): string; var {$IFDEF fpc} RegEx: TRegExpr; {$ELSE} RegEx: TRegEx; vM:TMatch; {$ENDIF} begin Result := ''; // 表示没有匹配的,Indicates that there is no match. {$IFDEF fpc} try RegEx := TRegExpr.Create;

delphi在dll调用过程中出现的access violation问题

无人久伴 提交于 2020-02-20 02:19:50
问题描述: 在delphi编程过程中,用delphi封装了一个动态链接库,将常用功能函数封装到dll,在delphi主工程文件中调用此dll,调用过程没有任何问题,但是在释放动态链接库handle的时候,即到FreeLibrary函数时,主工程与DLL之间有指针来往的时候,总是报access violation错误,将指针调用注释,即不报错,也就是内存管理的问题。 解决办法: delphi有一个共享内存管理单元ShareMem,在主工程与dll工程的工程文件中,在uses模块第一个引用位置,均加入对ShareMem单元的引用,问题随之解决。 这个问题很早之前就碰到过,可惜很久不用delphi,结果给忘了,为了下次不至于再到处找办法,做个笔记。 来源: https://www.cnblogs.com/martian6125/archive/2010/04/11/9631234.html

转一篇Delphi下写DLL的文章

爱⌒轻易说出口 提交于 2020-02-19 17:41:15
Delphi制作DLL 一 Dll的制作一般步骤 二 参数传递 三 DLL的初始化和退出清理[如果需要初始化和退出清理] 四 全局变量的使用 五 调用静态载入 六 调用动态载入 七 在DLL建立一个TForM 八 在DLL中建立一个TMDIChildForM 九 示例: 十 Delphi制作的Dll与其他语言的混合编程中常遇问题: 十一 相关资料 一 Dll的制作一般分为以下几步: 1 在一个DLL工程里写一个过程或函数 2 写一个Exports关键字,在其下写过程的名称。不用写参数和调用后缀。 二 参数传递 1 参数类型最好与window C++的参数类型一致。不要用DELPHI的数据类型。 2 最好有返回值[即使是一个过程],来报出调用成功或失败,或状态。成功或失败的返回值最好为1[成功]或0[失败].一句话,与windows c++兼容。 3 用stdcall声明后缀。 4 最好大小写敏感。 5 无须用far调用后缀,那只是为了与windows 16位程序兼容。 三 DLL的初始化和退出清理[如果需要初始化和退出清理] 1 DLLProc[SysUtils单元的一个Pointer]是DLL的入口。在此你可用你的函数替换了它的入口。但你的函数必须符合以下要求[其实就是一个回调函数]。如下: procedure DllEnterPoint(dwReason: DWORD);far

Delphi – 愤怒的接口

孤者浪人 提交于 2020-02-19 17:38:51
大家好,我是DH,技术交流. 最近我再写程序中需要用到接口,在使用中发现几个问题,这里拿出来说说,希望和大家交流,也希望得到大家的建议. 第一个非常严重的问题就是 查询一个类或者一个接口是否实现了某一个接口. 在delphi里面的方法有个Supports,但这些所有的方法最终都是调用的TObject.GetInterface(). 1: function GetInterface(const IID: TGUID; out Obj): Boolean; 从这个函数的参数,我们就能看出来,接口必须要有IID,也就是GUID.丫的,软件工程里面的接口哪有什么GUID呀.真麻烦,这主要是Delphi早期接口就是为了实现COM的,所以接口都有GUID.现在接口可以没有GUID,但是这接口就不是一个完整的接口了,根本不能查询某个类是否实现了它,这还叫接口么? 来看看第二个 委托吧. 1: const 2: IID_IA: TGUID = '{489D2CC5-D6D6-4683-8EB4-BE7AE8B58586}'; 3: IID_IB: TGUID = '{7DFBFAC3-98F7-4716-85EE-FBD404C906AC}'; 4: 5: type 6: IA = interface 7: ['{489D2CC5-D6D6-4683-8EB4-BE7AE8B58586}'] 8: