10日目 構造体を使ったリスト


unit untTrade;

interface

uses
  untIDateTime,
  untPair,
  untHistoricalList;

type
  TTradeRecord = record
  private
  Public
    Pair    : TPair;
    TimeStep: TTimeStep;

    procedure Init();
    procedure Assign(aTradeRecord: TTradeRecord);
  end;

  TTradeList = record
  private
    function getCount: Integer;
  Public
    Items: Array of TTradeRecord;

    procedure Init();
    procedure Assign(aTradeList: TTradeList);
    procedure Add(aTradeRecord: TTradeRecord);
    property Count: Integer read getCount;

  end;

implementation

{ TTradeRecord }

procedure TTradeRecord.Assign(aTradeRecord: TTradeRecord);
begin
  Self.Pair     := aTradeRecord.Pair;
  Self.TimeStep := aTradeRecord.TimeStep;

end;

procedure TTradeRecord.Init;
begin
  Self.Pair          := peUSDJPY;
  Self.TimeStep.enum := ts1Hour;

end;

{ TTradeList }

procedure TTradeList.Add(aTradeRecord: TTradeRecord);
begin
  SetLength(Self.Items, Length(Self.Items) + 1);
  Self.Items[High(Self.Items)].Assign(aTradeRecord);
end;

procedure TTradeList.Assign(aTradeList: TTradeList);
var
  i: Integer;
begin
  SetLength(Self.Items, aTradeList.Count);
  for i := 0 to Self.Count - 1 do
    Self.Items[i].Assign(aTradeList.Items[i]);
end;

function TTradeList.getCount: Integer;
begin
  Result := Length(Self.Items);
end;

procedure TTradeList.Init;
begin
  SetLength(Self.Items, 0);
end;

end.

コメントを残す

メールアドレスが公開されることはありません。


× 五 = 10

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>