Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#5

AW: Feldwerte eines Records über den Feldindex abrufen

  Alt 11. Sep 2023, 17:18
Das kann man auch mit einem Record-Helper realisieren:
Delphi-Quellcode:
type
  TMyRecord = record
    FeldA,
    FeldB,
    FeldC: String;
  end;

type
  TMyRecordHelper = record helper for TMyRecord
  private type
    TMockArray = array[0..0] of string;
  private
    function GetItems(Index: Integer): string;
    procedure SetItems(Index: Integer; const Value: string);
  public
    property Items[Index: Integer]: string read GetItems write SetItems; default;
  end;

function TMyRecordHelper.GetItems(Index: Integer): string;
begin
  {$R-}
  Result := TMockArray(FeldA)[Index - 1];
  {$R+}
end;

procedure TMyRecordHelper.SetItems(Index: Integer; const Value: string);
begin
  {$R-}
  TMockArray(FeldA)[Index - 1] := Value;
  {$R+}
end;
Der Aufruf gestaltet sich dann in etwa so:
Delphi-Quellcode:
  var Tmp: TMyRecord;
  Tmp.FeldA := 'Hallo';
  Tmp.FeldB := 'Delphi';
  Tmp.FeldC := 'Welt';
  var Satz: string;
  for var I := 1 to 3 do
    Satz := Satz + ' ' + Tmp[I];
  Writeln(Satz.TrimLeft);
  Readln;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat