菜鸟送分了,这里哪里错了?(100分)

  • 主题发起人 主题发起人 wxm337766
  • 开始时间 开始时间
W

wxm337766

Unregistered / Unconfirmed
GUEST, unregistred user!
unit Unit1;
interface
uses
windows, messages, sysutils, classes, graphics, controls, forms, dialogs,stdctrls, extctrls,mmsystem;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
procedure proendcount;
implementation
{$R *.dfm}
//timesetevent的回调函数
procedure proendcount;
begin
form1.edit1.Text:=inttostr(strtoint(form1.edit1.Text)+1);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
timesetevent(100,1000,@proendcount,1,1);
end;

end.

运行不了,错在哪里?
 
转至http://www.cnblogs.com/del/archive/2008/02/16/1070649.html
//如果回调过程是窗体类的一个方法, 需要这样:
var
i: Integer;
//先定义回调函数
procedure TForm1.MyTimerProc(hWnd: HWND;
uMsg: UINT;
idEvent: UINT;
Time: DWORD);
begin
Text := IntToStr(i);
Inc(i);
end;

//创建定时器
procedure TForm1.Button1Click(Sender: TObject);
begin
SetTimer(Handle, 1, 10, @TForm1.MyTimerProc);
{每 1/100 秒调用一次 MyTimerProc}
end;

//删除定时器
procedure TForm1.Button2Click(Sender: TObject);
begin
KillTimer(Handle, 1);
{创建时指定的定时器标识是 1, 这里必须要一致}
end;
 
procedure proendcount(utimerid, umessage: uint;dwuser, dw1, dw2: dword) stdcall;
才对
 
最明显的错误--没有声明proendcount啊
你编译时是不是提示未声明啊?
 
1、
把函数声明
procedure proendcount;放在private中试试。
实现部分应为:
procedure TForm1.proendcount;
begin
form1.edit1.Text:=inttostr(strtoint(form1.edit1.Text)+1);
end;

2、如果函数procedure proendcount;声明仍在现在位置,即
var
Form1: TForm1;
procedure proendcount;
则该函数必须在另外的单元中调用,未看到调用proendcount的语句。
另外,该函数的实现似乎少了创建Form1的语句:
procedure proendcount;
begin
with TForm1.Create(Application)do

try
form1.edit1.Text:=inttostr(strtoint(form1.edit1.Text)+1);
ShowModal;
finally
free;
end;
end;
 
回调函数是有固定的格式的,声明的时候不能只写个函数名。
应该按这种格式声明:
void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD)
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
763
import
I
I
回复
0
查看
778
import
I
I
回复
0
查看
686
import
I
I
回复
0
查看
499
import
I
I
回复
0
查看
673
import
I
后退
顶部