Перейти к содержанию
Fire Monkey от А до Я
  • 0

как правильно очистить данные модели


CodeToad

Вопрос

Здравствуйте  всем!

    Воодушевившись статьей Ярослава про подход "Control-Model-Presentation" применяю ,как в примере автозаполнение ,но передаю данные в StringList 

   вопрос как правильно уничтожить данные чтобы освободить память от списка и чтобы память не текла

   //------------------------------------------------------Нужно ли явно разрушать объект? C учетом того что каждое новое заполнение ввода порождает новый список для автозаполнения

        Edit1.Model.Data['hint_list'].AsType<TSTringList>.Clear;
        Edit1.Model.Data['hint_list'].AsType<TSTringList>.DisposeOf; //?

//--------------------------------------------------------------------------обнулять данные-> чтобы можно было проверить   Edit1.Model.Data['hint_list'].IsEmpty
        Edit1.Model.Data['hint_list']:=Tvalue.Empty; 

или

        Edit1.Model.Data['hint_list'].Empty;

Просьба сильно не пинать за вопрос так как после отпуска голова не варит совсем

Ссылка на комментарий

Рекомендуемые сообщения

  • 1

Вот кусок кода исходников из XE8 unit FMX.Controls.Model :

procedure TDataModel.SetData(const Index: string; const Value: TValue);
var
  DataRecord: TDataRecord;
begin
  if FDataSource = nil then
    FDataSource := TDictionary<string, TValue>.Create;
  if Value.IsEmpty then
    FDataSource.Remove(Index)
  else
    FDataSource.AddOrSetValue(Index, Value);

  DataRecord := TDataRecord.Create(Index, Value);
  SendMessage<TDataRecord>(MM_DATA_CHANGED, DataRecord);
end;

Судя по коду, нужно делать как то так :

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Model.Data['aaa']:=TStringList.Create;
  Edit1.Model.Data['aaa'].AsType<TStringList>.Add('111');
  Edit1.Model.Data['aaa'].AsType<TStringList>.Add('222');
  Edit1.Model.Data['aaa'].AsType<TStringList>.Add('333');
  Edit1.Model.Data['aaa'].AsType<TStringList>.Clear;
  Edit1.Model.Data['aaa'].AsType<TStringList>.Free;
  Edit1.Model.Data['aaa']:=TValue.Empty;
  if Edit1.Model.Data['aaa'].IsEmpty Then
    beep;
end;

 

Изменено пользователем Евгений Корепов
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...