type
TSpieler = record
Name : string;
Konto,Position : integer;
Reihe : boolean;
Panel : TPanel;
end;
var
PL1, PL2, PL3, PL4, PL5 : TSpieler;
function getPlayer;
begin
Result := PL1;
end;
procedure FeldKaufen;
var
TestPlayer: TSpieler;
begin
TestPlayer := getPlayer; {PL2,PL3,PL4,PL5}
inc(TestPlayer.Konto); {does not save}
{inc(PL1.Konto);} {works just fine with every Player}
end;
如何在PL1
提供TestPlayer
之后保存getPlayer
值?
问题是我通过这个app.UseMvc()
函数得到了播放器的名称,这很好,因为它使整个代码更清晰。
答案 0 :(得分:3)
您尚未编写可验证的代码。
然而,记录是value type(与参考,指针类型(对象)相反),并且将一个记录分配给另一个记录只复制所有字段。因此,更改第二个记录(副本)不会影响第一个(除了记录的指针字段之类的特殊情况)。
答案 1 :(得分:2)
一种解决方案是使用指向Spieler的指针:
type
PSpieler = ^TSpieler;
TSpieler = record
Name: string;
Konto, Position: integer;
Reihe: boolean;
Panel: TPanel;
end;
var PL1, PL2, PL3, PL4, PL5: TSpieler;
function getPlayer: PSpieler;
begin
Result := @PL1;
end;
procedure FeldKaufen;
var TestPlayer: PSpieler;
begin
TestPlayer := getPlayer; {PL2,PL3,PL4,PL5}
inc(TestPlayer.Konto); {does not save}
{inc(PL1.Konto);} {works just fine with every Player}
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
FeldKaufen;
end;