我想知道是否可以实现这样的事情:
procedure waitandcall(time,@MyProcedureOrFunction)
执行我创建的功能或程序?
我不确定它们是否被称为回调.
我是Delphi编程场景的新手,我在控制台应用程序中调用过程时遇到问题.
我的简单应用程序是通过Windows上的telnet服务器运行的项目库存.我使用旧的thinkpad作为我的瘦客户端运行linux和telnet客户端.
使用Delphi XE我遇到了鸡或蛋的情况.
我得到了addscreen未声明的标识符...它被声明但是在主屏幕下!如果我把addscreen程序放在主屏幕上,那么在addscreen程序中对mainscreen进行的任何调用都会让我误认为是unclared标识符主屏幕!
简单来说,如何让程序在程序中到处调用?
我已经尝试过接口和实现,但它在控制台应用程序中无效!
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, windows, messages, Console in 'Console.pas';
procedure mainscreen;
var
choice: string;
begin
clrscr;
writeln(' ------------------------------------------------------------------------------------------------------------------------------');
writeln(' | Inventory Management 0.1 ALPHA |');
writeln(' ------------------------------------------------------------------------------------------------------------------------------');
writeln('');
writeln('');
writeln('');
writeln('');
writeln('');
writeln(' Make a choice: Add(a), Remove(r), Edit(e), Backup Database(bd), Mass Add(ma), Mass Remove(mr)');
writeln('?:');
readln(choice);
if choice = 'a' then
addscreen
else
mainscreen;
end;
procedure addscreen;
var
choice: string;
begin
clrscr;
writeln(' ------------------------------------------------------------------------------------------------------------------------------');
writeln(' | Add an Item |'); …
Run Code Online (Sandbox Code Playgroud) 亲爱的德尔福程序员,
我正在寻找帮助如何编写一次性定时器(没有GUI,所以VCL定时器无可置疑)......
让我再解释一下.
在我的代码中(用VCL计时器解释但在这个特定项目中我没有表格):
procedure
通过串口发送char的aInterval
在OnTimer
事件中:
我有一个代码发送一个字符然后禁用计时器本身永远不会再次执行.
问题是我需要使这些计时器的创建动态化.我想到了函数SetTimer()
然后KillTimer()
在"OnTimer事件"中禁用它(释放它).
这是一种好的(安全的)方式吗?
谢谢!
当我尝试使用Windows SetTimer函数时,它会为计时器生成一个IDEvent,即使我已经指定了一个!
这个:
SetTimer(0,999,10000,@timerproc);
Run Code Online (Sandbox Code Playgroud)
在:
procedure timerproc(hwnd: HWND; uMsg: UINT; idEvent: UINT_PTR;dwTime: DWORD); stdcall;
begin
KillTimer(0, idEvent);
showmessage(inttostr(idevent));
end;
Run Code Online (Sandbox Code Playgroud)
返回:
随机数!
是否可以自己管理我的计时器而不是Windows为我选择?
非常感谢你!
我知道一些 Delphi 的基础知识(实际上我已经使用它几年了)......
我正在用 DLL 撞墙(从来没有真正玩过这个)。
考虑这个例子:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
Type FT_Result = Integer;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
FT_HANDLE : DWord = 0;
implementation
{$R *.dfm}
function I2C_GetNumChannels(numChannels: dword):FT_Result; stdcall; external 'libmpsse.dll' name 'I2C_GetNumChannels';
function I2C_OpenChannel(index:dword;handle:pointer):FT_Result; stdcall; external 'libmpsse.dll' name 'I2C_OpenChannel';
procedure TForm1.Button1Click(Sender: TObject);
var
numofchannels:dword;
begin
i2c_getnumchannels(numofchannels);
showmessage(inttostr(numofchannels));
end; …
Run Code Online (Sandbox Code Playgroud)