В Delphi Рио я создал класс, целью которого является чтение записи из базы данных. Эта запись предназначена только для чтения, и после чтения мне нужно получить некоторые дополнительные свойства. Моя проблема связана со списком строк, который я хочу использовать в своем определении класса. У меня есть личный участник класса fVENDORS_TO_COLORCODE. Это строка, разделенная запятыми. Я хочу создать свойство, которое является списком TStringlist. Я использую TStringList.CommaToText для загрузки моего значения в Tstringlist. Я делаю это в конструкторе создания. У меня проблема в том, что хотя StringList допустим в конструкторе, он равен нулю за пределами конструктора, и я не знаю, что я делаю неправильно. Вот соответствующие части кода.
type
TProfileDef = class(TObject)
private
fNAME: String;
fVENDORS_TO_COLORCODE: String; // incoming comma separated string. Example string: Microsoft,IBM
fVENDORS_TO_COLORCODE_SL : TStringList;
..
public
constructor Create(ProfileName: String);
destructor Destroy; override;
published
property NAME: String read fNAME;
property VENDORS_TO_COLORCODE: String read fVENDORS_TO_COLORCODE;
property VENDORS_TO_COLORCODE_SL : TStringList read fVENDORS_TO_COLORCODE_SL;
..
end;
implementation
destructor TProfileDef.Destroy;
begin
inherited;
fVENDORS_TO_COLORCODE_SL.Free;
end;
constructor TProfileDef.Create(ProfileName: String);
var
fVENDORS_SL: TStringList;
fVENDORS_TO_COLORCODE_SL: TStringList;
TempVendorList : String;
begin
inherited Create;
fName := ProfileName;
.. [Find my record based on ProfileName, and load the DB columns into the private variables]..
// Load the Color Code String into a StringList;
fVENDORS_TO_COLORCODE_SL := TStringList.Create;
fVENDORS_TO_COLORCODE_SL.CommaToText := fVENDORS_TO_COLORCODE;
end;
Внутри Конструктора создается список строк fVENDORS_TO_COLORCODE_SL и добавляются данные ... Проблема заключается в том, когда я пытаюсь использовать его ...
var
TestClass: TProfileDef;
begin
TestClass := TProfileDef.Create('Sample Profile');
// TestClass.Name is valid
// TestClass.VENDORS_TO_COLORCODE_SL is nil, and trying to access gives AV
Каким-то образом я определяю это неправильно, но я не могу определить, что это такое, чтобы исправить это.