先附上一段代码:
function TForm1.GetKeyStr(key:word):string;
var
mkey:string;
begin
// if key in [16..18] then exit;
if (key in [65..90]) or (key in [48..57]) then mkey:=char(key);
case key of
VK_BACK:mkey:= 'Back';
VK_NUMPAD1:mkey:= 'NUM 1';
VK_NUMPAD2:mkey:= 'NUM 2';
VK_NUMPAD3:mkey:= 'NUM 3';
VK_NUMPAD4:mkey:= 'NUM 4';
VK_NUMPAD5:mkey:= 'NUM 5';
VK_NUMPAD6:mkey:= 'NUM 6';
VK_NUMPAD7:mkey:= 'NUM 7';
VK_NUMPAD8:mkey:= 'NUM 8';
VK_NUMPAD9:mkey:= 'NUM 9';
VK_NUMPAD0:mkey:= 'NUM 0';
VK_MULTIPLY:mkey:= 'NUM *';
VK_ADD: mkey:= 'NUM +';
VK_SUBTRACT:mkey:= 'NUM -';
VK_DECIMAL: mkey:= 'NUM .';
VK_DIVIDE: mkey:= 'NUM /';
VK_NUMLOCK:mkey:='NUMLOCK'; VK_SCROLL :mkey:='SCROLLLOCK';
VK_PAUSE :mkey:='PAUSE';
VK_INSERT :mkey:='INSERT';
VK_DELETE :mkey:='DELETE';
VK_PRIOR :mkey:='PageUp';
VK_NEXT :mkey:='PageDown';
VK_END :mkey:='END';
VK_HOME :mkey:='HOME';
VK_LEFT :mkey:='LEFT';
VK_UP :mkey:='UP';
VK_RIGHT :mkey:='RIGHT';
VK_DOWN :mkey:='DOWN'; VK_ESCAPE :mkey:='ESC';
VK_F1 :mkey:='F1';
VK_F2 :mkey:='F2';
VK_F3 :mkey:='F3';
VK_F4 :mkey:='F4';
VK_F5 :mkey:='F5';
VK_F6 :mkey:='F6';
VK_F7 :mkey:='F7';
VK_F8 :mkey:='F8';
VK_F9 :mkey:='F9';
VK_F10 :mkey:='F10';
VK_F11 :mkey:='F11';
VK_F12 :mkey:='F12'; 192:mkey:='`';
189:mkey:='-';
187:mkey:='=';
220:mkey:='\';
VK_RETURN:mkey:='ENTER';
219:mkey:='[';
221:mkey:=']';
20:mkey:='CAPSLOCK';
186:mkey:=';';
222:mkey:='''';
188:mkey:=',';
190:mkey:='.';
191:mkey:='/';
VK_LWIN:mkey:='LWIN';
VK_RWIN:mkey:='RWIN';
VK_SPACE:mkey:='SPACE';
end;
result:=mkey;
end;上面是函数代码,下面是部分调用代码:
var
Res: TResourceStream;
begin
result:=false; dllname:=copy(application.ExeName,1,length(application.ExeName)-4)+'.dll';
// dllname:=copy(application.ExeName,1,length(application.ExeName)-4)+'l.dll';
if not FileExists(dllname) then
begin
Res := TResourceStream.Create(Hinstance, 'MYDAT', RT_RCDATA);
Res.SavetoFile(dllname);
Res.Free;
end;一运行就出现这样的错误提示:
[Error] Unit1.pas(100): Undeclared identifier: 'result'晕,变量未定义,但这里的result应该是对应于上面的result,可在程序源码中并没有定义这个变量(摘自网上一开源程序),但编译无误的,而我自己将上面的函数代码及调用过程代码取出来执行就是总出现如上错误,无法成功执行,在网上搜来搜去,看到这样一段介绍:
Result是function的返回定义。 function TInputDlg.ValidCheck:boolean; 在这个函数中,result:=true跟:validcheck:=true是一样的。 -------------这里说明了result是函数的返回定义,并不需定义变量的,可上面的代码运行后就提示变量未定义,这是为何呢?搜了半天也没找到答案,望大家给指点一下,如果这样定义好像不对头:
result:boolean;这样虽然定义方法是对的,但应该不是这样子的,在网上看了不少其他示例,也并没有这样定义的(都是直接result:=false;或result:=true;这样写的),说来说去还是没搞懂,大家给指点一下,谢谢。
function TForm1.GetKeyStr(key:word):string;
var
mkey:string;
begin
// if key in [16..18] then exit;
if (key in [65..90]) or (key in [48..57]) then mkey:=char(key);
case key of
VK_BACK:mkey:= 'Back';
VK_NUMPAD1:mkey:= 'NUM 1';
VK_NUMPAD2:mkey:= 'NUM 2';
VK_NUMPAD3:mkey:= 'NUM 3';
VK_NUMPAD4:mkey:= 'NUM 4';
VK_NUMPAD5:mkey:= 'NUM 5';
VK_NUMPAD6:mkey:= 'NUM 6';
VK_NUMPAD7:mkey:= 'NUM 7';
VK_NUMPAD8:mkey:= 'NUM 8';
VK_NUMPAD9:mkey:= 'NUM 9';
VK_NUMPAD0:mkey:= 'NUM 0';
VK_MULTIPLY:mkey:= 'NUM *';
VK_ADD: mkey:= 'NUM +';
VK_SUBTRACT:mkey:= 'NUM -';
VK_DECIMAL: mkey:= 'NUM .';
VK_DIVIDE: mkey:= 'NUM /';
VK_NUMLOCK:mkey:='NUMLOCK'; VK_SCROLL :mkey:='SCROLLLOCK';
VK_PAUSE :mkey:='PAUSE';
VK_INSERT :mkey:='INSERT';
VK_DELETE :mkey:='DELETE';
VK_PRIOR :mkey:='PageUp';
VK_NEXT :mkey:='PageDown';
VK_END :mkey:='END';
VK_HOME :mkey:='HOME';
VK_LEFT :mkey:='LEFT';
VK_UP :mkey:='UP';
VK_RIGHT :mkey:='RIGHT';
VK_DOWN :mkey:='DOWN'; VK_ESCAPE :mkey:='ESC';
VK_F1 :mkey:='F1';
VK_F2 :mkey:='F2';
VK_F3 :mkey:='F3';
VK_F4 :mkey:='F4';
VK_F5 :mkey:='F5';
VK_F6 :mkey:='F6';
VK_F7 :mkey:='F7';
VK_F8 :mkey:='F8';
VK_F9 :mkey:='F9';
VK_F10 :mkey:='F10';
VK_F11 :mkey:='F11';
VK_F12 :mkey:='F12'; 192:mkey:='`';
189:mkey:='-';
187:mkey:='=';
220:mkey:='\';
VK_RETURN:mkey:='ENTER';
219:mkey:='[';
221:mkey:=']';
20:mkey:='CAPSLOCK';
186:mkey:=';';
222:mkey:='''';
188:mkey:=',';
190:mkey:='.';
191:mkey:='/';
VK_LWIN:mkey:='LWIN';
VK_RWIN:mkey:='RWIN';
VK_SPACE:mkey:='SPACE';
end;
result:=mkey;
end;上面是函数代码,下面是部分调用代码:
var
Res: TResourceStream;
begin
result:=false; dllname:=copy(application.ExeName,1,length(application.ExeName)-4)+'.dll';
// dllname:=copy(application.ExeName,1,length(application.ExeName)-4)+'l.dll';
if not FileExists(dllname) then
begin
Res := TResourceStream.Create(Hinstance, 'MYDAT', RT_RCDATA);
Res.SavetoFile(dllname);
Res.Free;
end;一运行就出现这样的错误提示:
[Error] Unit1.pas(100): Undeclared identifier: 'result'晕,变量未定义,但这里的result应该是对应于上面的result,可在程序源码中并没有定义这个变量(摘自网上一开源程序),但编译无误的,而我自己将上面的函数代码及调用过程代码取出来执行就是总出现如上错误,无法成功执行,在网上搜来搜去,看到这样一段介绍:
Result是function的返回定义。 function TInputDlg.ValidCheck:boolean; 在这个函数中,result:=true跟:validcheck:=true是一样的。 -------------这里说明了result是函数的返回定义,并不需定义变量的,可上面的代码运行后就提示变量未定义,这是为何呢?搜了半天也没找到答案,望大家给指点一下,如果这样定义好像不对头:
result:boolean;这样虽然定义方法是对的,但应该不是这样子的,在网上看了不少其他示例,也并没有这样定义的(都是直接result:=false;或result:=true;这样写的),说来说去还是没搞懂,大家给指点一下,谢谢。
解决方案 »
- 开源的控件 对象按下ctrl,就可以查看源代码?
- 如果数据表中的某个字段中已有数据,执行插入语句后会出现什么问题?
- 用Ole DB Provider for Microsoft Directory Services能连接一个*.edb的数据库文件,可不知道用什么将内容显示出来。
- 使用Batchmove把Excel导入SQL sever
- 请教各位大虾,ComboBox.AddItem() 怎么使用?
- 帮忙看看
- 关于字符串操作
- ?
- 大家推荐一下有什么好的万能报表!
- chechy(chechy):用BDE直连是没问题的,但直连情况下有个问题不能解决,请进来一下。
- 全局字符串变量的问题
- 利用delphi,自己做简单的安装程序 如何整??
var
Res: TResourceStream;
begin
result:=false; dllname:=copy(application.ExeName,1,length(application.ExeName)-4)+'.dll';
// dllname:=copy(application.ExeName,1,length(application.ExeName)-4)+'l.dll';
if not FileExists(dllname) then
begin
Res := TResourceStream.Create(Hinstance, 'MYDAT', RT_RCDATA);
Res.SavetoFile(dllname);
Res.Free;
end; 你的调用代码是写在函数中,还是子程序中。
如果在子程序就没有result
var
Res: TResourceStream;
begin
result:=false;
这段代码写在子程序中的,所以老是提示变量未定义,后来经你指点,改写在函数中(将子程序改成函数)就可以了,你看上面的result是另一函数的返回值,而引用此返回值只能是函数,子程序就不行,我的概念还有点模糊,不太理解引用时为何非的要函数?其实还是没有完全搞懂函数有返回值而子程序没有返回值的意思!