1. Panda518.07.2024 в 09:21от
Загрузка...

Delphi Support

Тема в разделе "С/С++/Pascal/Delphi", создана пользователем MDK, 25.07.2013.

  1. MDK

    MDK

    Статус:
    Оффлайн
    Регистрация:
    24.07.13
    Сообщения:
    248
    Репутация:
    42 +/-
    Конечно. Только с такими знаниями ты навряд ли сделаешь, но все равно - удачи :victory:
     
  2. MDK

    MDK

    Статус:
    Оффлайн
    Регистрация:
    24.07.13
    Сообщения:
    248
    Репутация:
    42 +/-
    Я и спрашиваю у него в потоке ли он делает.
     
  3. Подарок

    Подарок

    Статус:
    Оффлайн
    Регистрация:
    27.07.12
    Сообщения:
    1.443
    Репутация:
    357 +/-
    Учиться тебе ещё долго.

    Правило правильное, но это не относится к form1, это просто более точное положение того или иного объекта.
    А по правилу правильно будет иначе.

    potok1= class(TThread)
    procedure sync;
    .....


    procedure potok1.sync;
    begin
    Form1.Memo1.Lines.Add(HTML);
    end;

    procedure potok1.Execute;
    begin
    synchronize(sync);
    end;
     
  4. Lifeda92

    Lifeda92

    Статус:
    Оффлайн
    Регистрация:
    10.03.13
    Сообщения:
    67
    Репутация:
    6 +/-
    А можешь помочь с другой моей программой, там тоже утечка(
    Только там сложнее. Программа "Search Letters Mail.ru".
     
  5. MDK

    MDK

    Статус:
    Оффлайн
    Регистрация:
    24.07.13
    Сообщения:
    248
    Репутация:
    42 +/-
    Эта та программа исходник которого ты мне еще выкладывал?
     
  6. Подарок

    Подарок

    Статус:
    Оффлайн
    Регистрация:
    27.07.12
    Сообщения:
    1.443
    Репутация:
    357 +/-
    кидай
     
  7. Lifeda92

    Lifeda92

    Статус:
    Оффлайн
    Регистрация:
    10.03.13
    Сообщения:
    67
    Репутация:
    6 +/-
     
  8. Lifeda92

    Lifeda92

    Статус:
    Оффлайн
    Регистрация:
    10.03.13
    Сообщения:
    67
    Репутация:
    6 +/-
    Да, но чуть код поменялся.
     
  9. Lifeda92

    Lifeda92

    Статус:
    Оффлайн
    Регистрация:
    10.03.13
    Сообщения:
    67
    Репутация:
    6 +/-
    Я уже и так и сяк пытался, но знаний и смекалки видно не хватило(((
    Буду признателен если сможешь помочь.
     
  10. Подарок

    Подарок

    Статус:
    Оффлайн
    Регистрация:
    27.07.12
    Сообщения:
    1.443
    Репутация:
    357 +/-
    Всё что привело бы к утечки уже запечатано. Утечку вызывают сами потоки. Так как например 100 потоков = как минимум 100 переменных одного типа. Главный же поток = 1 переменная этого же типа. И эти 100 переменных беззаботно уничтожаются. Этот код можно упростить в половину. Там много лишнего. Каждый раз идёт создание httpsend и его уничтожение. Хотя можно 1 раз создать и просто очищать. На тему потоков ещё много читать. synchronize работает как не должен. В нём не должны быть проверки. Только доступ к визуальным компонентам формы. Например добавить +1 в гуд, в memo гуд записать. synchronize отличается от критической секцией тем, что он не заставляет те 100 потоков ждать, эта процедура заставляет главный поток застыть, он же не застывает сразу, а только тогда, когда захочет ( такой он превереда ). Короче. В synchronize должно быть минимум кода, 1-2 строки. Для большего делай 2 процедуры синхронизации. Софт жрал у меня 20% ЦП, если поработать - то можно снизить до 5%. По экономить память можно в любых переменных, главное знать как. Выкинь эти недоделанные скины, у меня так и не откомпилировался проект, и форма всё время подвисала.
     
    Последнее редактирование: 06.08.2013
  11. Lifeda92

    Lifeda92

    Статус:
    Оффлайн
    Регистрация:
    10.03.13
    Сообщения:
    67
    Репутация:
    6 +/-
    В смысле создавать вне цикла нужно?
    Так я сначала делал... Память ело даже при пост, а про гет там вообще хана.
    А когда начал экспериментировать, делать "Каждый раз идёт создание httpsend и его уничтожение." утечки не было, но при GET утечка была(
    Делал в цикле. Память кушало очень сильно( Решил попробовать в sync, в результате памяти ело меньше.
    Хотя знал что так делать нельзя, просто запутался(
     
    Последнее редактирование: 06.08.2013
  12. Lifeda92

    Lifeda92

    Статус:
    Оффлайн
    Регистрация:
    10.03.13
    Сообщения:
    67
    Репутация:
    6 +/-
    Странно. У меня не подвисала.
    Так у тебя не компилирует вообще?
    Я просто думал может хоть какие то изменения проведешь в исходнике с комментом.(
    Ну чтобы визуально глянуть где перекрывается утечка.
    Если конечно не трудно.
     
    Последнее редактирование: 06.08.2013
  13. Подарок

    Подарок

    Статус:
    Оффлайн
    Регистрация:
    27.07.12
    Сообщения:
    1.443
    Репутация:
    357 +/-
    Есть такие душевно-большые личности, которые думают, что если программа до запуска занимает 10 мб оперативки ( это только ОЗУ, она может занимать ещё 100 с файла подкачки), то после запуска она не должна не занимать ни байта больше. Программе нужно столько памяти, сколько она хочет и + 10% сверху. OC windows даёт каждому процессу 2 гб памяти, почему бы ими не пользоваться?твоя экономия в 10 мб сделает только гемор твоим глазам. Эра когинга в чистом winapi уже давно прошла. Теперь главное скорость, а не качество. Если бы все разработчики делали упор на качество, ты даже не представляешь какой бы сейчас был софт.