Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2020, 16:29   #1
remus-xe2
Пользователь
 
Регистрация: 27.10.2017
Сообщений: 54
По умолчанию Найти утечку в процедуре (TJSONObject)

Опять TJSONObject мозга делает, не могу найти утечку...
Помогите правильно освободить переменные JSONData и Arry.

Код:
procedure AddDetalisation(ResiveJS, ip: string);
var
  ResicePocketJS: TJSONObject;
  hash: string;
  OnlineCounnt: Integer;
  JSfile: TStrings;
  JSON, JSONData: TJSONObject;
  Arry: TJSONArray;
  i: Integer;
begin
  try
  ResicePocketJS := TJSONObject.ParseJSONValue(ResiveJS) as TJSONObject;
    if Assigned(ResicePocketJS) then
    begin
      hash := ResicePocketJS.GetValue<TJSONString>('hash').Value;
      OnlineCounnt := ResicePocketJS.GetValue<TJSONNumber>('stantion_count').AsInt;

      if not DirectoryExists(ExtractFilePath(Application.ExeName) + 'log\autonom\activity') then
        ForceDirectories(ExtractFilePath(Application.ExeName) + 'log\autonom\activity');

      JSfile := TStringList.Create;
      if FileExists(ExtractFilePath(Application.ExeName) + 'log\autonom\activity\' + hash + '.json') then
      begin
        JSfile.LoadFromFile(ExtractFilePath(Application.ExeName) + 'log\autonom\activity\' + hash + '.json');
        JSON := TJSONObject.ParseJSONValue(JSfile.Text) as TJSONObject;
      end
        else
      begin
        JSON := TJSONObject.ParseJSONValue('{}') as TJSONObject;
      end;

       //записываю дату и время последнего обмена данными
      if Assigned(JSON.GetValue('lost_connect')) then
        JSON.RemovePair('lost_connect');
      JSON.AddPair('lost_connect', TJSONString.Create(DateTimeTostr(now)));

      if assigned(JSON.GetValue('online')) then
      begin
        Arry := JSON.GetValue<TJSONArray>('online');
        JSON.RemovePair('online');
      end
      else
        Arry := TJSONArray.Create;


      //записываю текущий онлайн панели
      JSONData := TJSONObject.Create as TJSONObject;
      JSONData.AddPair('count', TJSONNumber.Create(OnlineCounnt));
      JSONData.AddPair('data', TJSONString.Create(DateTimeTostr(now)));
      Arry.Add(JSONData);


      //Добавляю массив в JSON
      JSON.AddPair('online', Arry);
      JSfile.Text := JSON.ToString;
      JSfile.SaveToFile(ExtractFilePath(Application.ExeName) + 'log\autonom\activity\' + hash + '.json');

    end;
  finally
      FreeAndNil(ResicePocketJS);
      FreeAndNil(JSON);
      FreeAndNil(JSfile);
  end;

end;
Проект с этой процедурой
https://dropmefiles.com/tp2en

Предлагайте цену в личку форума...

Последний раз редактировалось remus-xe2; 03.12.2020 в 16:32.
remus-xe2 вне форума Ответить с цитированием
Старый 04.12.2020, 09:10   #2
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

ТЗ, срок, бюджет: larbossfreelance@yandex.ru Метка: freelance. Указывайте ссылку на тему форума.
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти утечку памяти? Артём_2 C++ Builder 14 18.01.2019 10:38
TJSONObject странная реакция на слеши (\) niockasd Общие вопросы Delphi 1 19.12.2018 12:46
Помогите найти утечку памяти Adult_Master JavaScript, Ajax 3 08.08.2016 23:20
Помогите найти утечку garuna Общие вопросы Delphi 4 14.01.2016 05:56
Delphi 7.0 Записи. Не могу найти ошибку в процедуре Nerotim Помощь студентам 1 28.11.2012 10:40