1、应单位需要,我要做一个微型的数据库系统(嵌入式系统用),想了解一下一般数据文件的存贮结构,请问哪儿有相关的资料?2、我用Delphi做了个带窗体的dll库(一个硬件仿真器),然后我在C中调用它,不过用的是控制台界面,没有窗口(当然没有窗口句柄了),问题是我如何激活这个dll库中的窗体并使它能接收系统消息(用Form.ShowModal会停止C中代码的执行直到并闭Form,而如果用Form.Show没法使Form接收系统消息),我该如何进行设置?下面是dll的接口代码:library VirDevice;
uses
SysUtils,
Classes,
Forms,
V_LCD12232 in 'V_LCD12232.pas' {LCD_12232};{$R *.res}typevar
Bak_ExitProc: Pointer;procedure DoExit;
begin
LCD_12232.Free;
ExitProc := Bak_ExitProc;
end;procedure ProcessCommand(Command: Word); stdcall;
begin
LCD_12232.ProcessCommand(Command);
end;Exports
ProcessCommand;// 因为是仿真器,所以我希望在初始化时就建好窗口,而后可以在C代码的控制下进行仿真操作
begin
Bak_ExitProc := ExitProc;
ExitProc := @DoExit;
LCD_12232 := TLCD_12232.Create(Application);
LCD_12232.Show;
// LCD_12232.ShowModal;
end.
uses
SysUtils,
Classes,
Forms,
V_LCD12232 in 'V_LCD12232.pas' {LCD_12232};{$R *.res}typevar
Bak_ExitProc: Pointer;procedure DoExit;
begin
LCD_12232.Free;
ExitProc := Bak_ExitProc;
end;procedure ProcessCommand(Command: Word); stdcall;
begin
LCD_12232.ProcessCommand(Command);
end;Exports
ProcessCommand;// 因为是仿真器,所以我希望在初始化时就建好窗口,而后可以在C代码的控制下进行仿真操作
begin
Bak_ExitProc := ExitProc;
ExitProc := @DoExit;
LCD_12232 := TLCD_12232.Create(Application);
LCD_12232.Show;
// LCD_12232.ShowModal;
end.
解决方案 »
- Unidac3.5直连oracle10g导入图片出错,连客户端没问题
- 两个dbgrideh间行的移动
- 各位高人 请帮忙看一下这个简单的登录程序,在线等
- 向各位大侠求助~ 关于报表问题
- 百分求商品购销系统(DELPHI+SQL),在线等,急啊,如果满意即结贴。
- 如何在 ActiveX 中调用 COM 接口?(贴错地方了,结贴110分)
- 怎样把一个表的纪录复制到另一个表中
- 请高人帮忙!
- ActiveForm
- 我看到有的人用Delphi编的程序只有一、二百K甚至只有几十K。到底是怎么做的???
- 救救我啊!都三天了!!!分不够另开帖!!TSQLStoredProc执行MSSQLserver2000中的存储过程,出现“list index out of bounds(0)”的错误!
- database or fpt
如果只是在linux系统下可能这是个不错的选择,可如果我用在无操作系统的环境中如何办呢?(比方说我用Flash来直接存数据)我的目的是要小,通用性好,速度快,只是简单的单机使用,不用SQL……
什么意思? 这里星级大虾应该不少啊?!
完全的嵌入式db也有很多,到sourceforge.net上找一找就有了。
作为Delphi,你该到Delphi专区去,而不是在这里。
另外,这里的人对你的问题并不了解:你是要改你手中Delphi代码呢,还是要提供C的代码?
在有一点,C的控制台程序是什么概念,不甚了了。因为到这里来的人他会告诉你直接用BCB来完成你得Form及数据库操作,根本无须其它,除非你有足够明确的理由,不然很少有人愿意跟在你后面绕弯子。
CommFunc = (pCommand)GetProcAddress(hLibrary, "ProcessCommand");
if(CommFunc!=NULL){
(*CommFunc)(IOData);
(*CommFunc)(IOData&(~IO_EN));
}Form.Show能显示,用Application.ProcessMessage()也能被动地接收一下消息,但调用完成后窗口就无法继续获得交点了.我该如何做?
我觉得,如果单一的方法你可以实现,那么多次的就不该很困难,至少你可以采用这样两种方法:一是采用计数器定时地检查数据更新情况,二是采用消息机制来追踪数据更新;另外,就是你的数据获取的方式,你可以将其放入独立的刷新函数里,这样,不仅可以被Show事件触发,也可以被计数器、鼠标、键盘等等一系列的希望响应的事件所触发。
由于不能确定你的问题实际出在何处,仅能提供一个简单的思路,供参考。
再有,我用的是DLL,它没有自已的堆栈空间,它必须挂在另一个进程中执行,如果我不能把进程的句柄给他,我如何让它独立的获得系统消息?我试过,在DLL中放置的定义器或是独立线程中使用Application.ProcessMessage()是不可能有作用的.