Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.111 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Delphi Record in for-schleife

  Alt 10. Jan 2020, 15:16
Ich weiß nicht ob du dir mit deinen Shortstrings wirklich einen Gefallen tust, weil du könntest ja auch einfach ein String-Array nehmen.

Aber falls du das wirklich behalten willst kannst du deinem Record einen Indexer verpassen:

Delphi-Quellcode:
type
   TTestRecord = record
      Test1: String[10];
      Test2: String[20];
      Test3: String[30];

      private function getThings(index: Integer): String;
      public property Things[index: Integer]: String read getThings; default;
   end;

{ TTestRecord }

function TTestRecord.getThings(index: Integer): String;
begin
   case index of
      0:   Result := Test1;
      1:   Result := Test2;
      2:   Result := Test3;
   else
      Result := String.Empty; // oder EArgumentOutOfRangeException werfen
   end;
end;
Dann kann man z.B. sagen

Delphi-Quellcode:
procedure p();
var
   test: TTestRecord;
   index: Integer;
   text: String;
begin
   test.Test1 := 'Hallo';
   test.Test2 := 'Welt';
   test.Test3 := 'Delphi';

   text := String.Empty;
   for index := 0 to Pred(3) do
      text := text + test[index];
   WriteLn(text);

   readln;
end;
  Mit Zitat antworten Zitat