读书人

方法返回一组数据怎么编写

发布时间: 2012-04-13 13:50:24 作者: rapoo

方法返回一组数据如何编写?
大家好:
我在程序里写了一个方法,需要返回一组值,比如返回username、password和host三个值,都是string类型的。我是这样写的:

Delphi(Pascal) code
function 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) code
result:=';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函数可以返回任意类型,包括自定义类型,不需要显式使用指向类型的指针。

读书人网 >.NET

热点推荐