Delphi相談室その4
■ このスレッドは過去ログ倉庫に格納されています
0079名無しヘタぐらま ◆B18Bks.Y
NGNGいっそのことクラスにしちゃうとかはどうでしょう.
type
TIntList = class(TPersistent)
private
FInnerArray: array of integer;
function GetCount: integer;
procedure SetCount(Value: integer);
function GetNumber(index: integer): integer;
procedure SetNumber(index: integer; Value: integer);
public
procedure Assign(Source: TPersistent); override;
procedure Clear;
function Add(Value: integer): integer;
property Number[index: integer]: integer read GetNumber write SetNumber; default;
property Count: integer read GetCount write SetCount;
end;
(中略)
function TIntList.Add(Value: integer): integer;
begin
Count := Count + 1;
result := High(FInnerArray);
Number[result] := Value;
end;
procedure TIntList.Assign(Source: TPersistent);
begin
if Source is TIntList then
FInnerArray := (Source as TIntList).FInnerArray
else
inherited;
end;
procedure TIntList.Clear;
begin
Count := 0;
end;
function TIntList.GetCount: integer;
begin
result := Length(FInnerArray);
end;
function TIntList.GetNumber(index: integer): integer;
begin
result := FInnerArray[index];
end;
procedure TIntList.SetCount(Value: integer);
begin
SetLength(FInnerArray, Value);
end;
procedure TIntList.SetNumber(index, Value: integer);
begin
FInnerArray[index] := Value;
end;
上の例では動的配列を隠してますけど
配列の形で使いたい場合は
FInnerArray を IntArray とでも改名して public に移すといいと思います.
■ このスレッドは過去ログ倉庫に格納されています