Russian Qt Forum
Ноябрь 27, 2024, 20:13 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Висячий указатель  (Прочитано 6225 раз)
blood_shadow
Гость
« : Июль 27, 2010, 17:39 »

Обязательно ли указатель который ссылался на область памяти и был удален командой delete, нужно обнулять(в даном примере process = 0;) и какие для этого причины?, например:
Код:
void val::runString_value() const
{
    QString program = "C:\\Program_Files\\Qt\\2010.02\\files\\Gui\\string_val\\val1\\String_value(betta).exe";

    QProcess *process = new QProcess;
    process->start(program);
    connect(process, SIGNAL(finished(int, QProcess::ExitStatus)),
            this, SLOT(loadOutputText()));

    delete process;
    process = 0;
    return;
}
Записан
crossly
Гость
« Ответ #1 : Июль 27, 2010, 17:52 »

нет.... но данный код не корректен...
Записан
blood_shadow
Гость
« Ответ #2 : Июль 27, 2010, 18:01 »

нет.... но данный код не корректен...
почему не корректен? компилируется и исполняется без проблем. в описании к QPointer указано что он автоматически устанавливается в 0
Записан
crossly
Гость
« Ответ #3 : Июль 27, 2010, 18:24 »

process удаляется не дожидаясь сигнала finished
Записан
blood_shadow
Гость
« Ответ #4 : Июль 27, 2010, 18:48 »

process удаляется не дожидаясь сигнала finished
да согласен, уже исправил
1. тогда еще вопрос по теме - выход с ф-ции по ретурну тоже происходит не дожидаясь сигнала finished?
2. как коректно удалить указатель на process?
Спасибо
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Июль 27, 2010, 19:04 »

Цитировать
2. как коректно удалить указатель на process?

Законнектить сигнал finished на слот deleteLater
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
crossly
Гость
« Ответ #6 : Июль 27, 2010, 19:06 »

практически вся работа в Qt происходит асинхронно
1. да
2. тут несколько вариантов.... сделать process членом класса... или использовать локальный EventLoop...
Записан
crossly
Гость
« Ответ #7 : Июль 27, 2010, 19:07 »

Цитировать
2. как коректно удалить указатель на process?

Законнектить сигнал finished на слот deleteLater
+1 Улыбающийся
Записан
blood_shadow
Гость
« Ответ #8 : Июль 27, 2010, 19:24 »

Цитировать
2. как коректно удалить указатель на process?

Законнектить сигнал finished на слот deleteLater
Спасибо получилось  Улыбающийся
Записан
blood_shadow
Гость
« Ответ #9 : Июль 27, 2010, 19:26 »

практически вся работа в Qt происходит асинхронно
1. да
2. тут несколько вариантов.... сделать process членом класса... или использовать локальный EventLoop...
Спасибо за ценную инфу  Улыбающийся
Записан
blood_shadow
Гость
« Ответ #10 : Август 28, 2010, 22:18 »

практически вся работа в Qt происходит асинхронно
Где можно почитать про асинхронность Qt и как с нею бороться, например у меня есть написанный калькулятор у которого есть два сигнала (нажатие на клавишу-цифру и нажатие на клавишу-знак) они приконектины к разным слотам, так что если набрать "2" "+"  плюс стрет предадущее значение, чтоб можно было ввести допустим "3", так дело в том что иногда получается не "2" "+" "3", а "23" я подозреваю что ф-ция не успевает завершится
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.163 секунд. Запросов: 23.