function GetData(Aname:string):integer;
var age:integer;
sex:string;
begin
age:=0;
sex:='';
with AdoQuery1 do
begin
close;
sql.text:='select * from 员工表 where 姓名='''+AName+'''';
open;
if Not Eof then
begin
age:=FieldByName('年龄').asInteger;
sex:=FieldByName('性别').asString;
end;
end;
Result:=age;
end; 这个function只能返回 age,但是我想把 sex 也返回,那该怎么写??
解决方案 »
- Tgraphic的paint方法太不好用了!
- 真是怪事,关于timer.enabled的问题求教了
- Delphi7.0下的一个奇怪问题
- 我在delphi中开发activex control,添加一个属性比方说long test_value后,会产生Get_test_value和Set_test_value两个方法,可是在Get_tes
- 如何得到操作系统当前登录的域(或者没有登录到域)?
- 获取桌面上已经打开的IE窗口的地址内容.
- 一个简单的问题
- 菜鸟有问:"有关于paradox数据库的问题"
- 如何使用listbox控件
- fmx的memo设置了readonly,有没有办法禁止选中复制?
- 这样的情况你们是如何处理的?
- 用Http做网络连接数据库的问题?
TPerson = Record
age: integer;
Sex: Sex;
end;
function GetData(Aname:string):TPerson;
begin
with AdoQuery1 do
begin
close;
sql.text:='select * from 员工表 where 姓名='''+AName+'''';
open;
if Not Eof then
begin
Result.age:=FieldByName('年龄').asInteger;
Result.sex:=FieldByName('性别').asString;
end;
end;
end;
up 一下
procedure GetData(Aname:string;var array of variant);
procedure GetData(const Aname : string ; var ASex : string ; var Age : integer);
begin
with AdoQuery1 do
begin
close;
sql.text:='select * from 员工表 where 姓名='''+AName+'''';
open;
if Not Eof then
begin
Age:=FieldByName('年龄').asInteger;
ASex:=FieldByName('性别').asString;
end;
end;
end;
在调用上面过程的过程或函数里声明变量myAge和mySex,然后因为你采用的是传址的方法,也就是引用的方法,GetData过程将直接修改myAge和mySex的值,比如调用示例:
GetData(myAge , mySex); //经过调用值已经改变
还有一种方法是采用out参数进行输出,但它的实质和var参数基本相同。另外注意:
procedure GetData(const Aname : string ; var ASex : string ; var Age : integer);
Aname参数使用了const修饰,表示在过程中不发生改变,这样做可以优化代码,当然你不使用也没有错了。
1、使用引用传递参数的方式获取多个返回值
2、通过不定长的Variant类型数组接收多个返回值
3、自定义结构体,通过哦结构体返回多个值
GetData(myAge , mySex); //经过调用值已经改变1、是不是应该GetData(aname,myAge , mySex); //经过调用值已经改变;2、其次,aname就是所谓的形参,而myage和mysex则是变参吧。不知道理解的对不对
type
TPerson = Record
age: integer;
Sex: Sex;
end;
function GetData(Aname:string):TPerson;
begin
with AdoQuery1 do
begin
close;
sql.text:='select * from 员工表 where 姓名='''+AName+'''';
open;
if Not Eof then
begin
Result.age:=FieldByName('年龄').asInteger;
Result.sex:=FieldByName('性别').asString;
end;
end;
end;
如果是const aname不是形参,系统不分配内存,取得常量参数的引用,指向常量参数的内存块,并且在过程中不能改变其值。系统将进行必要优化。
如果是var aname不是形参,系统不分配内存,取得变量参数的引用,指向变量参数的内存块,并且在过程中可以改变其值。