Delphi - Использование TStringList в определении класса (очень новое)
Я делаю простое определение класса в Delphi, и я хотел использовать TStringList
в классе и его конструкторе (поэтому каждый раз, когда вы создаете объект, вы передаете ему StringList
и это делает некоторые магические вещи с StringList
данные, копирование списка строк в собственный внутренний список строк). Проблема, которую я получаю, заключается в том, что когда я пытаюсь объявить, что он "использует" перед определением класса (поэтому он знает, как обрабатывать TStringList
), это не удается при компиляции. Но без этого он не знает, что такое TStringList
является. Так что, похоже, проблема в сфере охвата.
Ниже приведено (очень упрощенное) определение класса, подобное тому, что я пытаюсь сделать. Может кто-нибудь подсказать, как я могу сделать эту работу и получить правильное определение объема?
Я также попытался добавить операторы использования на уровне проекта, но все равно не получилось. Интересно, что мне нужно сделать, чтобы понять это правильно.
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.
С уважением
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.