то KSTR можно примерять все методы класса AnsiString (за исключением присваивания — ведь значение константы менять нельзя):

STR.c_str() и т. д.

В файле Text.h опишем новые текстовые константы:

const AnsiString HEADER_STR = "Внимание!";

const AnsiString FILE_EXIST_STR = "Перезаписать существующий файл ";

и после условного оператора проверки существования файла при необходимости вызовем функцию MessageBoxQ:

if( FileExists(FILE_NAME_STR) )•. { AnsiString text;

text = FILE_EXIST_STR + FILE_NAME_STR + " ?";

if( Application->MessageBox(text.c_str(), HEADER_STR.C_str(),

MB_YESNO ¦ MB_ICONQUESTION) != IDYES ) // Если не нажата кнопка «Да» - прекратить работу return;

h02311.jpg

Так как результатом сложения констант FILE_EXIST_STR + FILE_NAME_STR будет строка типа AnsiString, то и к целому выражению тоже можно сразу применить метод c_str():

MessageBox((FILE_EXIST_STR + FILE_NAME_STR).c_str(), ...

Однако такой подход не очень нагляден и красив. Экономится всего один оператор, но вызов MessageBoxQ становится довольно громоздким, а проконтролировать его параметры в отладчике будет невозможно. Поэтому лучше избегать подобных «хитрых штучек» Си++ и писать код просто и наглядно.

Сохранение данных в файле

Запись информации в файл осуществляется с помощью стандартной функции FileWriteO. У нее три параметра. Первый — идентификатор ранее открытого файла (в программе-пасьянсе он сохранен в переменной iFile), второй —

231