怎样使一个函数返回两个不同类行的值,其中一个是指针类型???(20分)

  • 主题发起人 主题发起人 卧龙潘先生
  • 开始时间 开始时间

卧龙潘先生

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样使一个函数返回两个不同类行的值,其中一个是指针类型???
 
返回两个不同类型的值?
用记录好了,
把两个不同类型的值放到记录里面。
 
type
TMyRecord = record
num: Integer;
strArray: array of string;
end;

function GetStrArray(const ANum: Integer; var AStrArray: array of string): TMyRecord;
var
i: Integer;
begin
SetLength(Result.strArray, Length(AStrArray));
for i:=0 to Length(AStrArray)-1 do
begin
with Result do
begin
num := ANum + i;
strArray := AStrArray;
end;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
strArray: array of string;
strRec: TMyRecord;
begin
SetLength(strArray, 3);
strArray[0] := 'a';
strArray[1] := 'b';
strArray[2] := 'c';
strRec := GetStrArray(0, strArray);
if strRec.strArray[0] <> 'b' then
ShowMessage('b');
end;
 
如果是值,使用var传参数
如果是指针或者对象,直接传参数
 
上面这个例子就是昨天小8问我的,呵呵,他说记录作为函数的返回值时,记录里面不允许带动态数组。
 
同意上述两种方法
 
后退
顶部