DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: shz0000
今日帖子: 34
在线用户: 17
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
女 michaelchina (michaelchina) ★☆☆☆☆ -
普通会员
2003/9/9 16:12:24
标题:
让传入的参数能在函数体中当代码执行? 我的QQ:123215936 浏览:2122
加入我的收藏
楼主: 我想写个函数。让传入的参数能在函数体中当代码执行,请问该怎么写?
例:function ttest.test(str:???);string;   ............
    var                                   .........
      i,s:integer;                         a:=test(i+s);
    begin                                 ...........
      i:=2;   s:=5;
      test:=str;                          .........  
    end;                               如何写结果才能让 a=7  
多谢各位大哥!  我的QQ:123215936
                邮箱:michaelchina_54@163.com
----------------------------------------------
-
作者:
男 amer (amer) ★☆☆☆☆ -
盒子活跃会员
2003/9/9 16:16:59
1楼: a:=test(i+s);

这里有2个参数,你写的这个只有一个啊
例:function ttest.test(str,str1:integer);string;   ............
    var                                   .........
      i:integer;                         a:=test(i+s);
    begin                                 ...........
      i:=str + Str1;
      result := i;                          .........  
    end;
----------------------------------------------
-
作者:
女 michaelchina (michaelchina) ★☆☆☆☆ -
普通会员
2003/9/9 16:34:21
2楼: amer 兄:
function ttest.test(str:???);string;   
var                                   
  i,s:integer;                         
begin                                 
  i:=2;   s:=5;
  test:=str;  
         // 我是希望能在该程序体中执行: result:=i+s;                    
end; 
请问要如何写 ???                             

----------------------------------------------
-
作者:
男 zizii (高高高级馒头) ★☆☆☆☆ -
神秘会员
2003/9/9 16:37:53
3楼: 2楼的,1楼的就是在程序体中执行: result:=i+s 的,不过把i改为str,s改为str1而已。

----------------------------------------------
维护世界和平,共创美好盒子。
作者:
女 michaelchina (michaelchina) ★☆☆☆☆ -
普通会员
2003/9/9 16:53:02
4楼: 多谢各位大哥。是我没说清楚

我希望动态的传入参数 例:i+s  或  i+z  。。。。都可以分别得到结果
简单而言:动态输入的字符串,能在函数体中解析为编译器能识别的代码。

可能函数体中有i=1;s=3;z=5;q=11;w=22;..............
我只要传参i+s  或 z+w+i............
程序也能根据我动态的参数来计算结果!

注意:动态的情况太多。不可能用case等来完成
----------------------------------------------
-
作者:
男 zizii (高高高级馒头) ★☆☆☆☆ -
神秘会员
2003/9/9 17:02:25
5楼: 变量名不能用根据字符串来取值。
不过你的问题反正我还是看不明白。
你用函数重载override;试试看,写不同的同名函数。
function ttest.test(str1,str2:string);string;   
function ttest.test(str1,str2,str3:string);string; override;
function ttest.test(str1,str2,str3,str4:string);string; override;
.....
要不你改用动态数组试试看。
--------------------------------------------
function add(s:array of integer):integer;
var
  i:integer;
begin
  for i:=0 to length(s)-1 do
    result:=result+s[i];
end;

procedure TForm1.Button2Click(Sender: TObject);
const
  s1=3;
  s2=5;
  s3=7;
  //...你可以增加任意个
var
  s:array of integer;
begin
  SetLength(s,3);
  s[0]:=s1;
  s[1]:=s2;
  s[2]:=s3;
  //..任意增加
  memo1.Lines.Add(inttostr(add(s)));
end;
----------------------------------------------
维护世界和平,共创美好盒子。
作者:
男 zizii (高高高级馒头) ★☆☆☆☆ -
神秘会员
2003/9/9 17:03:53
6楼: 另外,你可以编辑你的帖子标题,不要重复问!!!!
----------------------------------------------
维护世界和平,共创美好盒子。
作者:
女 michaelchina (michaelchina) ★☆☆☆☆ -
普通会员
2003/9/9 17:07:58
7楼: 多谢大哥!!!!!

对不起,我是新手。多贴了相同的帖子。我在这向大家道歉

----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行101.5625毫秒 RSS