1

我在 Delphi 中做一个简单的类定义,我想TStringList在类中使用 a 和它的构造函数(所以每次你创建一个对象时,你传递它 aStringList并且它对数据做了一些神奇的事情StringList,将字符串列表复制到它的自己的内部字符串列表)。我遇到的问题是,当我尝试在类定义之前声明它“使用”的内容(因此它知道如何处理TStringList)时,编译失败。但没有它,它不知道 aTStringList是什么。所以这似乎是一个范围界定问题。

下面是一个(非常简化的)类定义,类似于我正在尝试做的。有人可以建议我如何完成这项工作并确定范围吗?

我也尝试在项目级别添加使用语句,但仍然失败。我想知道我需要做什么才能做到这一点。

unit Unit_ListManager;

interface

type
TListManager = Class

private
  lmList   : TStringList;
  procedure SetList;


published
  constructor Create(AList : TStringList);
end;

implementation

uses
  SysUtils,
  StrUtils,
  Vcl.Dialogs;

  constructor TBOMManager.Create(AList : TStringList);
  begin
    lmList := TStringList.Create;
    lmList := AListList;
  end;

  procedure SetPartsList(AList : TStringList);
  begin
     lmList := AListList;
     ShowMessage('Woo hoo, got here...');
  end;
end.

亲切的问候

4

1 回答 1

1

您没有显示添加单位参考的确切位置,但我敢打赌这是错误的地方。注意 和 之间的附加interface代码type

我还更正了您对 的定义constructor,您将其放入published而不是public. 只有property项目属于该published部分。

unit Unit_ListManager;

interface

uses
  Classes,
  SysUtils,
  StrUtils,
  Vcl.Dialogs;    

type
TListManager = Class
private
  lmList   : TStringList;
  procedure SetList;    
public
  constructor Create(AList : TStringList);
end;

implementation

constructor TListManager.Create(AList : TStringList);
begin
  inherited Create; // This way, if the parent class changes, we're covered!
  // lmList := TStringList.Create; This would produce a memory leak!
  lmList := AListList;
end;

procedure TListManager.SetList;
begin
// You never provided an implementation for this method
end;

end.
于 2013-11-03T19:36:40.740 回答