有关record值传递。大家看看我这段record传递的错误在哪里?(20分)

  • 主题发起人 主题发起人 pdjwind
  • 开始时间 开始时间
P

pdjwind

Unregistered / Unconfirmed
GUEST, unregistred user!
type
Tallin = record
id: string;
phone: string;
messages: string;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
main_allin , ok_allin: Tallin;
begin
main_allin :=getallin(ok_allin);
showmessage(main_allin.phone);
end;

function TForm1.getallin(ok_allin: Tallin): Tallin;
begin
ok_allin.id :='1';
ok_allin.phone :='13708311471';
ok_allin.messages :='ok';
end;
 
function TForm1.getallin(ok_allin: Tallin): Tallin;
begin
ok_allin.id :='1';
ok_allin.phone :='13708311471';
ok_allin.messages :='ok';
result:=ok_allin
//加上这个 函数没有返回值怎么行
end

 
record好象不能直接用:=賦值的。
用var參數吧。

procedure TForm1.getallin(var ok_allin: Tallin)
......
....

getallin(main_allin);
 
GetAllIn可以改为:
1、采用变量参数方式
procedure TForm1.GetAllIn(var OK_AllIn: TAllIn);
begin
OK_AllIn.id :='1';
OK_AllIn.phone :='13708311471';
OK_AllIn.messages :='ok';
end;
调用方式为: GetAllIn(Main_AllIn);

2、采用返回值方式
function TForm1.GetAllIn: TAllIn;
begin
Result.id :='1';
Result.phone :='13708311471';
Result.messages :='ok';
end;
调用方式为: Main_AllIn := GetAllIn;


function TForm1.getallin(ok_allin: Tallin): Tallin;
begin
ok_allin.id :='1';
ok_allin.phone :='13708311471';
ok_allin.messages :='ok';
end

 
来晚了,mylu7735是正确的,写的比较详细,不用我在写了,应该使用变量参数形式,在参数前加上VAR这个说明就可以更改record的值了,否则函数调用完毕后,record的值会恢复成调用前的值.
 
后退
顶部