Здравствуйте, гость ( Вход | Регистрация )
silver47 | Дата 6.4.2011, 6:05 |
abc, а с flush тоже не пишется ? В случае, если используется QTextStream для вывода в файл, то flush бесполезен. void QTextStream::flush () Flushes any buffered data waiting to be written to the device. If QTextStream operates on a string, this function does nothing. Если писать в файл напрямую, не используя QTextStream, то QFile::flush решает проблему. Я ее все-же предпочел решить по другому - держать файл закрытым (в лог сыплются лишь сообщения об ошибках), теперь вопрос в другом, так сказать для общего развития: Как узнать что твое приложения прибили тем или иным способом? Как я понимаю платформонезависимо никак. |
|
abc | Дата 5.4.2011, 20:36 |
хмм, ладно, надо провести более качественные проверки для продолжения беседы) | |
Алексей1153 | Дата 5.4.2011, 20:25 |
abc, возможно, оператор << у них по разному устроен - в одном flush вызывается, в другом нет | |
abc | Дата 5.4.2011, 20:20 |
не пробовал, но если даже пишется, то вопрос изменится на - почему QString записать нужен flush, а QPixmap нет... | |
Алексей1153 | Дата 5.4.2011, 20:17 |
abc, а с flush тоже не пишется ? | |
abc | Дата 5.4.2011, 20:06 |
я в винде компилировал, QString не пишется, QPixmap пишется... Как может не успеть записаться? дальше этих двух типов не проверял | |
Алексей1153 | Дата 5.4.2011, 19:42 |
abc, ну да, если что-то не успело записаться, то оно и не сохранится. А по топику в ссылке, навскидку: вызывать flush после каждой записи - это гарантия перекидывания в файл из внутренних буферов. А close там ни при чём ИМХО опять же, тонкости работы линукса я не знаю, а в винде файл просто закроется и ничего не потеряется из уже в него записанного |
|
abc | Дата 5.4.2011, 19:33 |
Алексей, что происходит здесь? http://www.forum.crossplatform.ru/index.php?showtopic=6720 |
|
Алексей1153 | Дата 5.4.2011, 17:05 |
вообще говоря, достаточно просто всегда записывать данные в файл. Когда приложение умирает, система закрывает все дескрипторы, занятые приложением - файл автоматом закроется. По крайней мере в винде так | |
wiz29 | Дата 5.4.2011, 13:26 |
1. менять не обязательно. 2. std::set_terminate работает следующим образом: если в какойто части программы возникает исключительная ситуация exception и данная ситуация не обработана ни одним перехватчиком искл. ситуаций то приложение аварийно завершается, перед своим завершением вызываться некая специальная глобальная функция terminate handler , собственно указатель на нее и устанавливает данный метод (это коротко , на "палцах") за более подробной инфой обратитесь к справочникам по C++. При закрытии консольного окна "через крестик" реально сам не смог отловить завершение. Средставми Qt закрытие консоли с помощью Сtr + C или Alt + F4 скорее всего обработать не выйдет, придется писать платформозависимый код. (других путей пока не вижу) |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 2:46 |