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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2017, 12:54   #11
denis76560
Форумчанин
 
Регистрация: 13.01.2010
Сообщений: 121
По умолчанию

Спасибо за информацию. Уже хоть что-то есть.
denis76560 вне форума Ответить с цитированием
Старый 22.11.2017, 13:03   #12
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Ну вообще говоря, если Вы объявили глобальные переменные:

Код:
var
  DecompStream: TStringStream;
  HTTP: THTTPSend;
  HTML:TStringList;
которые очищаются вместе с потоком:

Код:
destructor TGetHTTP.Destroy;
begin
  HTTP.Free;
  HTML.Free;
  DecompStream.Free;

  DeleteCriticalSection(FCS);
    inherited;
end;
То чего вы ждёте от второго потока? Первый поток создал их, пока он работает - Вы создаёте второй, который меняет значения у указанных переменных, а первый при завершении себя любимого делает им Free. А второму потоку не с чем становится работать

Чтобы это починить - нужно их перекинуть в секцию Private класса потока:

Код:
  TGetHTTP=class(TThread)
  private
    DecompStream: TStringStream;
    HTTP: THTTPSend;
    HTML:TStringList;
Аналогично в модуле Main - переменную лучше тоже выкинуть в класс формы:

Код:
var
  postline:integer;
Избавляйтесь от глобальных переменных везде, где возможно
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 22.11.2017, 13:12   #13
denis76560
Форумчанин
 
Регистрация: 13.01.2010
Сообщений: 121
По умолчанию

Спасибо огромное, все в порядке теперь, и утечек памяти теперь нет
С меня +
denis76560 вне форума Ответить с цитированием
Старый 25.11.2017, 17:26   #14
denis76560
Форумчанин
 
Регистрация: 13.01.2010
Сообщений: 121
По умолчанию

Цитата:
Аналогично в модуле Main - переменную лучше тоже выкинуть в класс формы:

Код:
var
  postline:integer;
Избавляйтесь от глобальных переменных везде, где возможно
Подскажите пожалуйста как это сделать (куда именно нужно ее переместить), а то че-то не получается больше никуда запихать кроме как в глобальные переменные.
А то из-за нее проблемы возникли.

Последний раз редактировалось denis76560; 25.11.2017 в 17:30.
denis76560 вне форума Ответить с цитированием
Старый 25.11.2017, 20:52   #15
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
type
  TForm1 = class(TForm)
 ...
  private
    { Private declarations }
   postline: integer;
...
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 25.11.2017, 21:43   #16
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Сообщение от denis76560 Посмотреть сообщение
Подскажите пожалуйста как это сделать (куда именно нужно ее переместить), а то че-то не получается больше никуда запихать кроме как в глобальные переменные.
А то из-за нее проблемы возникли.
Ну если Вы её используете НЕ только в методах класса TForm, то никуда не надо перемещать. Я судил по коду и посчитал, что у Вас там только этот класс.

А если только в TForm - то ответ дан выше
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с потоками UKRtortik Общие вопросы Delphi 14 01.03.2014 12:16
Проблема с потоками Dremst Общие вопросы Delphi 5 17.02.2014 15:14
Проблема с потоками Bax77 Общие вопросы Delphi 3 29.01.2013 16:11
Проблема с потоками vlad.md Мультимедиа в Delphi 0 07.03.2012 22:55
Проблема с потоками vitalik007 Общие вопросы Delphi 1 11.03.2008 22:35