方法返回一组数据怎么编写
方法返回一组数据如何编写?大家好:我在程序里写了一个方法,需要返回一组值,比如返回username、password和ho
方法返回一组数据如何编写?
大家好:
我在程序里写了一个方法,需要返回一组值,比如返回username、password和host三个值,都是string类型的。我是这样写的:
Delphi(Pascal) codefunction getvalue(ss:string):pchar;var str:pchar;begin str[0]:=username; result:=str;end;
当然不行这样,求正确方法。
[解决办法]最简单的
function getvalue(var username:string; var password:string; var host:string;): bool;
begin
username := '11111';
end;
这样外面就可以取了
[解决办法]可以定义record,返回record指针
[解决办法]type
TUserInfo=record
username: string;
password: string;
host : string;
end;
TUserInfoList=record
count: integer;
users: array of TUserInfo;
end;
function getvalue(var userList: TUserInfoList):integer;
var
i: integer;
begin
//取用户数据,假定有n个,动态分配数组空间
userList.count := n;
SetLength(userList.users,userList.count);
for i:=0 to userList.count-1 do
begin
userList.users[i].userName := 用户名;
userList.users[i].password := 密码;
userList.users[i].host := 主机;
end;
result := userList.count;
end;
这种封装好处就是如果用户信息有变化,不用去更改获取用户信息函数参数。
[解决办法]借鉴ini:
Delphi(Pascal) coderesult:=';username='+s1+';password='+s2+';host='+s3+';';
[解决办法]
方法很多
可以返单个string加个特殊特号分隔,或者返回数组,返回记录,用Pchar,用var ...等等
下面举例一个数组(当然数据类型一样的是很好的办法):
type
TArr=array [0..2] of string;
function getvalue():TArr;
var
arr:TArr;
begin
arr[0]:='1';
arr[1]:='2';
arr[2]:='3';
result:=arr;
end;
调用:
var
arr:TArr;
begin
arr:=getvalue;
showmessage(arr[0]);
showmessage(arr[1]);
showmessage(arr[2]);
end;
[解决办法]
最简单的
function getvalue(var username:string; var password:string; var host:string;): bool;
begin
username := '11111';
end;
这样最简单,传进来值,在函数中改变,外面再取值就是变化后的了
[解决办法]
Delphi函数可以返回任意类型,包括自定义类型,不需要显式使用指向类型的指针。