Czy istnieje coś takiego jak domyślne pole w (rekordzie/obiekcie/klasie)

0

Czyli przykładowo:

TJakiś=class
  alamakota:string;
Tablica=array[1..10] of string; [JAKIEŚ SŁÓWKO???]
{coś tam dalej coś tam dalej}

end;

var
przykład:TJakiś;

kod tradycyjny:

przykład.tablica[10]:='jasio'; 

czy da się wpisać w miejscu [JAKIES SŁÓWKO] coś takiego by móc pisać zamiast powyższego:

przykład[10]:='jasio';

czyli by pole tablica było polem domyślnym?

0

mi się nasuwa tylko jedna odpowiedź - CO?

0
Tablica: array[1..10] of string = ('','','','','','','','','','jasio'); 
0

źle się wyraziłem...
Chodziło mi o to, czy istnieje możliwość by zmienna:
przykład
będąca rekordem/obiektem/przedstawicielem klasy i zawierająca pole "tablica"
mogła być używana w semantyce
przykład[a]
a identycznym działaniu jak
przykład.tablica[a]

czyli by jedno z pól takowej zmiennej było domyślne. Byłoby to takie "przeładowanie" zmiennej bo raz mogłaby byc traktowana jako zmienna typu TJakiś ale równie dobrze jako typ "array of string" (wtedy po prostu de facto odwołujemy się do pewnego, ściśle określonego w kodzie pola jako pola domyślnego).
Coś mi świtało w głowie, że kiedyś coś takiego widziałem/słyszałem ale pewnie to tylko we śnie....

0
types
  TMojaKLasa = class
  private
    FTablica: array of string;

    function  GetTablica(Index: Integer): string;
    procedure SetTablica(Index: Integer; Value: string);
  public
    property Tablica[Index: Integer]: string read GetTablica write SetTablica; default;
  end;

function TMojaKLasa.GetTablica(Index: Integer): string;
begin
  if Index >= Length(FTablica) then
    raise Exception.Create('poza tablica');
  Result := FTablica[Index];
end;

 procedure TMojaKLasa.SetTablica(Index: Integer; Value: string);
 begin
  if Index >= Length(FTablica) then
    SetLength(FTablica, Index + 1);
  FTablica[Index] := Value;
end;

potem gdzieś w kodzie

var
  x: TMojaKLasa;
begin
  x := TMojaKLasa.Create;
  x[10] := 'dupa';
end;
0

Dzięki....
tak pamiętałem że ma być DEFAULT - ale zapomniałem, że ma być to DEFAULT dla "property".
Wielkie dzięki i masz u mnie piwo:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1