| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Проверка на сохранение |
| Автор: s1lver 10.7.2009, 22:50 | ||
| WinXp CodeGear RAD 2009 Подскажите как проверить сохранен ли документ перед закрытием программы. Вот пробую так но вываливаются ошибки
|
| Автор: Usper 10.7.2009, 23:09 |
| Какие ошибки? switch неправильно используется (не хватает фигурных скобок). |
| Автор: s1lver 10.7.2009, 23:30 | ||
[BCC32 Error] Unit1.cpp(1436): E2034 Cannot convert 'const char *' to 'const wchar_t *' [BCC32 Error] Unit1.cpp(1436): E2342 Type mismatch in parameter 'Text' (wanted 'const wchar_t *', got 'const char *') [BCC32 Error] Unit1.cpp(1437): E2193 Too few parameters in call to '_fastcall TApplication::MessageBoxA(const wchar_t *,const wchar_t *,int)' [BCC32 Error] Unit1.cpp(1438): E2379 Statement missing ; [BCC32 Warning] Unit1.cpp(1444): W8004 'res' is assigned a value that is never used |
| Автор: s1lver 10.7.2009, 23:42 | ||
| дык а что там за число такое должно быть вот вообще страшное дело намутил
вроде при попытке закрыть документ в случае изменения или добавления данных выводит окно, но потом вылетает ошибка |
| Автор: Данкинг 10.7.2009, 23:48 |
Не знаю, смотри, как объявлен MessageBoxA. А тут-то какая именно ошибка вылетает? |
| Автор: s1lver 10.7.2009, 23:49 | ||||||
| Что лучше проверить на наличие данных в поле или на модификацию? Добавлено через 1 минуту и 58 секунд
Вообще-то не знаю что за ошибка там. При отключенном подавлении ошибок ничего нет, и не происходит, а при включенном вылетает сообщение которое задал в случае ошибки Добавлено через 3 минуты и 58 секунд я подозреваю что ошибка происходит вот из-за этих строчек
вот, но ничего умнее придумать не смог |
| Автор: s1lver 11.7.2009, 00:06 |
| С этим разобрался. Подскажите как проверить наличие активных табов? т.е создан ли сейчас таб или нет |
| Автор: Данкинг 11.7.2009, 00:13 | ||||
Как так?
Не совсем понял. Но в любом случае, можно завести логическую переменную и присваивать ей true при создании этих самых табов (или что там тебе нужно). |
| Автор: s1lver 11.7.2009, 00:26 | ||||||||||
Вообщем ApplicationEvents юзаю ничего не вываливается при работе программы. При компиляции ошибок нет.
Что-то не получается
при проверке
при добавлении таба
и вот такая ошибка вылазит: [BCC32 Warning] Unit1.cpp(1723): W8060 Possibly incorrect assignment |
| Автор: Данкинг 11.7.2009, 00:35 | ||
Это не ошибка, это предупреждение. |
| Автор: s1lver 11.7.2009, 00:45 | ||
Легче от этого не стало |
| Автор: Данкинг 11.7.2009, 00:49 |
В каком смысле - хочешь сказать, что из-за этого не запускается программа? Тогда давай более полный код с этим tab =1. |
| Автор: 586 11.7.2009, 09:11 | ||
В if вместо "==" написали "=". |
| Автор: s1lver 11.7.2009, 09:37 | ||||
Уф, так не вылетает при отсутствии табов, но зато проверка идет только на модификацию файла, а на создание и добавление нового ее нет
|
| Автор: 586 11.7.2009, 10:16 |
После загрузки файла в новую вкладку нужно поставить свойство edit->Modified = false. При сохранении файла тоже нужно поставить свойство edit->Modified = false. А проверка здесь лишняя, т.к. пользователь может открыть файл с текстом, и стереть из него весь текст. Вкладка будет изменена, а предупреждение не будет выдано. Т.к. табов может быть несколько, следует сделать проверку для нескольких табов. Не понятно, почему проверка делается для одного таба. |
| Автор: s1lver 11.7.2009, 10:23 | ||||
Спасибо, сейчас попробую сам доделать чтобы не мучить вопросами.
Вот это момент я упустил... |
| Автор: 586 11.7.2009, 11:08 | ||
|
| Автор: s1lver 11.7.2009, 16:19 | ||
что-то не понял что ту происходит? |
| Автор: Данкинг 11.7.2009, 16:44 | ||||
Разрешение на закрытие формы (и программы в целом). Если false, то программа не закроется. |
| Автор: s1lver 11.7.2009, 17:16 |
| А два обработчика не будут конфликтовать между собой FormCloseQuery и FormClose ? Просто в первом идет проверка на модификация а во втором автоматическая запись из листбокса |
| Автор: s1lver 11.7.2009, 17:38 |
| Спасибо всем за помощь, вопрос решен |
| Автор: 586 11.7.2009, 17:44 |
| Код, который может блокировать закрытие формы, лучше писать в FormCloseQuery. Сначала вызывается событие FormCloseQuery, в случае, если CanClose истинно, вызывается FormClose. |