作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在我的单元uFleet中创建一个数组属性,该属性将从另一个单元-uCubeF中读取信息。
这是我在uFleet中所做的:
Type
AUnits = array of array[1..3] of integer;
TFleet = class(TDummy)
private
FUnits: array of array[1..3] of integer;
procedure SetUnits(const value: array of array[1..3] of integer);
public
property Units: AUnits read FUnits write SetUnits;
end;
procedure TFleet.SetUnits(const value: array of array[1..3] of integer);
begin
FUnits:= value;
end;
最佳答案
有两种解决方案。数组属性或索引属性。
interface
type
TUnits = TArray<array[1..3] of Integer>;
// Array property
TFleet1 = class
private
FUnits: TUnits;
procedure SetUnits(const Value: TUnits);
public
property Units: TUnits read FUnits write SetUnits;
end;
// Index property
TFleet2 = class
private
FUnits: TUnits;
function GetUnit(Index1, Index2: Integer): Integer;
procedure SetUnit(Index1, Index2: Integer; Value: Integer);
public
procedure SetUnits(const Value: TUnits);
property Units[Index1, Index2: Integer]: Integer read GetUnit write SetUnit; default;
end;
implementation
{ TFleet1 }
procedure TFleet1.SetUnits(const Value: TUnits);
begin
FUnits := Value
end;
{ TFleet2 }
function TFleet2.GetUnit(Index1, Index2: Integer): Integer;
begin
// if need check index before return result
Result := FUnits[Index1, Index2];
end;
procedure TFleet2.SetUnit(Index1, Index2: Integer; Value: Integer);
begin
// if need check index before set value
FUnits[Index1, Index2] := Value;
end;
procedure TFleet2.SetUnits(const Value: TUnits);
begin
FUnits := Value;
end;
{ TestFleet }
procedure TestFleet();
var
I: Integer;
F1: TFleet1;
F2: TFleet2;
U: TUnits;
begin
SetLength(U, 10);
F1 := TFleet1.Create;
F1.Units := U;
I := F1.Units[0, 1];
F1.Units[0, 1] := 1;
F2 := TFleet2.Create;
F2.SetUnits(U);
I := F2.Units[0, 1];
F2[0, 1] := 1;
end;
关于delphi - 如何在delphi中创建数组属性及其过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49715885/
我是一名优秀的程序员,十分优秀!