Einzelnen Beitrag anzeigen

SebastianZ

Registriert seit: 23. Jul 2009
89 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Record als Prozedurparameter: Werte direkt übergeben

  Alt 17. Jul 2018, 08:27
Ahoi,

ich habe eine Prozedur mit einem Record als Parameter. Ist es möglich, im Prozeduraufruf die Felder des Records direkt anzugeben. Etwa so wie unten exemplarisch gezeigt?
Delphi-Quellcode:
type
  TMyRecord = record
    FeldA: string;
    FeldB: Integer;
    FeldC: string;
  end;

{...}

procedure Test(Param: TMyRecord);
begin
  {...}
end;

procedure Produce;
begin
  Test(['Foo', 1, 'Bar']);
end;

Ich baue für sowas meist eine class function in den Record, die ermöglicht:

Delphi-Quellcode:
  TMyRecord = record
    FeldA: string;
    FeldB: Integer;
    FeldC: string;
    class function Init(const AFieldA: String; AFieldB: Integer; AFieldC: String): TMyRecord ; static;
  end;

class function TMyRecord.Init(const AFieldA: String; AFieldB: Integer; AFieldC: String): TMyRecord ;
begin
  Result.FeldA:= AFieldA
  Result.FeldB:= AFieldB
  Result.FeldC:= AFieldC
end;

procedure Produce;
begin
  Test(TMyRecord.Init('Foo', 1, 'Bar'));
end;
  Mit Zitat antworten Zitat