delphi类的相互引用
在写c++的接口时可以将两个相互引用的类放在两个.h文件中,然后将这个接口翻译到delphi时,放在两个文件里就不可能了。只能放在同一个unit中。并且要将这两个类都放在同一个type下面进行定义,当前面一个类要使用后面一个类时,需要在前面一个类的前面放置一个前置声明,并且前置声明只能是IVariantMap = class;这种格式而不能是IVariantMap = class(TObject);形式。
unit XXX_variant;
interface
use XXX,XXX;
type
IVariantMap = class;
IVariantArray = class;
IVariant = class(CBaseSerial)
public
function SetMap(val: IVariantMap): Boolean; virtual; stdcall; abstract;
function SetArray(val: IVariantArray): Boolean; virtual; stdcall; abstract;
// XXXX
end;
IVariantArray = class
public
function GetElement(index: Cardinal): IVariant; virtual; stdcall; abstract;
//XXXX
end;
IVariantMap = class
public
function GetValue(const name: PChar): IVariant; virtual; stdcall; abstract;
//XXXX
end;
相关文档:
Procedure OnMouseWheel(Var Msg :TMsg;var Handled:Boolean);
begin
if Msg.message = WM_MouseWheel then
begin
if Msg.wParam > 0 then
begin
if DBGrid.Focused then
......
近来发现一个Delphi莫名其妙的bug,当使用SetOptionalParam时,不能使用一连串数字的字符串,如'101',注意,是带引号的。在SaveToFile时,就会出现'Invalid field type'的异常,真是百思不得其解!连'001'这种串也不行,去掉引号,直接按数字赋值,则正常。
procedure TForm1.Button1Click(Sender: TObject);
var
  ......
//Delphi部分
//回调函数定义
type TOnMyCallBack = procedure(data:pchar; id:Integer);stdcall;
//DLL中的导出函数声明
procedure StartCall(param: TOnMyCallBack(data:pchar; id:Integer);stdcall;
begin
...
...
end;
&n ......
利用Windows API函数WritePrivateProfileString
和GetPrivateProfileString可对.INI文件进行读写操作。其实,对.INI文件的读写完全可以利用Delphi的内置函数来实
现。下面就介绍一些对.INI文件读写时相关的类及其属性方法。
1、TIniFile对象
以Delphi中,定义了一个TIniFile对象,将.INI文件封装在其中,并提供一些方法 ......
Delphi键盘按键伪码
用法:if key = chr(VK_RETURN) then...
常数名称 十六进制值 十进制值 对应按键
VK_LBUTTON 01 1 鼠标的左键
VK_RBUTTON 02 2 鼠标的右键
VK-CANCEL 03 3 Contol-break 执行
VK_MBUTTON 04 4 鼠标的中键(三按键鼠标)
VK_BACK 08 8 Backspace键
VK_TAB 09 9 Tab键
VK_CLEAR 0C 12 Clear键
VK ......