Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверка на сохранение 
V
    Опции темы
s1lver
Дата 10.7.2009, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



WinXp
CodeGear RAD 2009


Подскажите как проверить сохранен ли документ перед закрытием программы.  smile 

Вот пробую так но вываливаются ошибки

Код

void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{   //проверяем документ перед закрытием
 if (memo[PageControl1->ActivePageIndex]->Modified)
 { int res = Application->MessageBoxA("Текст документа не сохранен","Warning");
switch (res)
case IDYES:N14Click(Sender) ;
break;
case IDCANCEL:CanClose = false;

 }
}



--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
Usper
Дата 10.7.2009, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 13.4.2007

Репутация: 15
Всего: 15



Какие ошибки? 
switch неправильно используется (не хватает фигурных скобок).



--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
s1lver
Дата 10.7.2009, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



Цитата

Какие ошибки? 


[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




--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
Данкинг
Дата 10.7.2009, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(s1lver @  11.7.2009,  00:30 Найти цитируемый пост)
[BCC32 Error] Unit1.cpp(1437): E2193 Too few parameters in call to '_fastcall TApplication::MessageBoxA(const wchar_t *,const wchar_t *,int)'

Ну так - чего не хватает в вызове MessageBoxA ? smile 

Цитата(s1lver @  11.7.2009,  00:30 Найти цитируемый пост)
[BCC32 Error] Unit1.cpp(1438): E2379 Statement missing ;

А эта ошибка что значит? smile 

Цитата(s1lver @  11.7.2009,  00:30 Найти цитируемый пост)
[BCC32 Warning] Unit1.cpp(1444): W8004 'res' is assigned a value that is never used

Да, это самая страшная из всех ошибок. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
s1lver
Дата 10.7.2009, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



дык а что там за число такое должно быть

вот вообще страшное дело намутил  smile 

Код

 if (memo[PageControl1->ActivePageIndex]->Modified)
 {
    if (memo[PageControl1->ActivePageIndex]->Lines->Count>0)
    {
    if (MessageBox(0,"Сохранить содержимое окна редактирования? ",
    "Подтвердите сохранение",MB_YESNO)==IDYES)
    {
    N14Click(Sender);
    }
    }};


вроде при попытке закрыть документ в случае изменения или добавления данных выводит окно, но потом вылетает ошибка 

Это сообщение отредактировал(а) s1lver - 10.7.2009, 23:43


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
Данкинг
Дата 10.7.2009, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(s1lver @  11.7.2009,  00:42 Найти цитируемый пост)
дык а что там за число такое должно быть

Не знаю, смотри, как объявлен MessageBoxA.

Цитата(s1lver @  11.7.2009,  00:42 Найти цитируемый пост)
но потом вылетает ошибка 

А тут-то какая именно ошибка вылетает?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
s1lver
Дата 10.7.2009, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



Что лучше проверить на наличие данных в поле или на модификацию?

Добавлено через 1 минуту и 58 секунд
Цитата

А тут-то какая именно ошибка вылетает? 


Вообще-то не знаю что за ошибка там. При отключенном подавлении ошибок ничего нет, и не происходит, а при включенном вылетает сообщение которое задал в случае ошибки  smile

Добавлено через 3 минуты и 58 секунд
я подозреваю что ошибка происходит вот из-за этих строчек

Код

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{  //при закрытии формы сохраняем значения листа макросов в файл
Form1->ListBox1->Items->SaveToFile("macros/maclist.macsv");


Код

//загружаем в макрос лист значения из файлов
 Form1->ListBox1->Items->LoadFromFile("macros/maclist.macsv");


вот, но ничего умнее придумать не смог


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
s1lver
Дата 11.7.2009, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



С этим разобрался.  smile 

Подскажите как проверить наличие активных табов? т.е создан ли сейчас таб или нет smile 


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
Данкинг
Дата 11.7.2009, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(s1lver @  11.7.2009,  00:49 Найти цитируемый пост)
При отключенном подавлении ошибок ничего нет, и не происходит, а при включенном вылетает сообщение которое задал в случае ошибки

Как так? smile Если сообщение об ошибках отключено, но ошибка происходит, то транслятор всё равно вываливается же. 

Цитата(s1lver @  11.7.2009,  01:06 Найти цитируемый пост)
Подскажите как проверить наличие активных табов? т.е создан ли сейчас таб или нет 

Не совсем понял. Но в любом случае, можно завести логическую переменную и присваивать ей true при создании этих самых табов (или что там тебе нужно).


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
s1lver
Дата 11.7.2009, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



Цитата

Как так? smile Если сообщение об ошибках отключено, но ошибка происходит, то транслятор всё равно вываливается же. 


Вообщем ApplicationEvents юзаю ничего не вываливается при работе программы. При компиляции ошибок нет.


Цитата


Не совсем понял. Но в любом случае, можно завести логическую переменную и присваивать ей true при создании этих самых табов (или что там тебе нужно).


Что-то не получается


Код

#pragma resource "*.dfm"
TForm1 *Form1;

int tab =0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{

}

при проверке

Код


void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{    //проверяем документ перед закрытием
if ([color=red]tab=1[/color]) {
    
 if (memo[PageControl1->ActivePageIndex]->Modified)
 {
    if (memo[PageControl1->ActivePageIndex]->Lines->Count>0)
    {
    if (MessageBox(0,"Сохранить содержимое окна редактирования? ",
    "Подтвердите сохранение",MB_YESNO)==IDYES)
    {
    N14Click(Sender);
    }  
    }}};
}



при добавлении таба

Код

tab =1;


и вот такая ошибка вылазит:

[BCC32 Warning] Unit1.cpp(1723): W8060 Possibly incorrect assignment

Это сообщение отредактировал(а) s1lver - 11.7.2009, 00:30


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
Данкинг
Дата 11.7.2009, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(s1lver @  11.7.2009,  01:26 Найти цитируемый пост)
и вот такая ошибка вылазит:

[BCC32 Warning] Unit1.cpp(1723): W8060 Possibly incorrect assignment

Это не ошибка, это предупреждение. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
s1lver
Дата 11.7.2009, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



Цитата

Это не ошибка, это предупреждение.


Легче от этого не стало  smile 


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
Данкинг
Дата 11.7.2009, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(s1lver @  11.7.2009,  01:45 Найти цитируемый пост)
Легче от этого не стало 

В каком смысле - хочешь сказать, что из-за этого не запускается программа? smile 
Тогда давай более полный код с этим tab =1.



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
586
Дата 11.7.2009, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



Цитата
[BCC32 Warning] Unit1.cpp(1723): W8060 Possibly incorrect assignment

В if вместо "==" написали "=".
PM   Вверх
s1lver
Дата 11.7.2009, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



Цитата
В if вместо "==" написали "=". 


Уф, так не вылетает при отсутствии табов, но зато проверка идет только на модификацию файла, а на создание и добавление нового ее нет smile 

Код

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{    //проверяем документ перед закрытием
if (tab ==1) {
    
 if (memo[PageControl1->ActivePageIndex]->Modified)
 {
    if (memo[PageControl1->ActivePageIndex]->Lines->Count>0) <- вот это пропадает при проверке
    {
    if (MessageBox(0,"Сохранить содержимое окна редактирования? ",
    "Подтвердите сохранение",MB_YESNO)==IDYES)
    {
    N14Click(Sender);
    }  
    }}};

}



--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0576 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.