Чтобы добавить в пасьянс новую возможность сохранения и восстановления партии, надо добавить в меню два новых пункта — Сохранить и Восстановить (см. рис. 54). Соответствующие им переменные подпунктов меню можно для наглядности назвать Saveltem и Loadltem.

Добавьте в C++Builder реакцию на выбор пункта Сохранить. В реализации этого метода надо будет создать файл, в котором будет сохранен текущий расклад, записать в него соответствующие данные и в заключение закрыть.

Файл создается с помощью стандартной функции

int FileCreafce(AnsiString FileName);

В качестве единственного параметра указывается имя создаваемого файла вместе с полным путем доступа к нему. Если такой файл уже существует, то он предварительно без предупреждения уничтожается (точнее, стирается все его содержимое), а потом создается вновь, но уже пустой.

Эта функция возвращает значение -1, если создать файл но каким-то причинам не удалось (например, если указан неверный путь). Если же создание прошло успешно, то функция FileCreateQ возвращает номер файла (тина int), представляющий собой некоторое внутреннее число Windows, характеризующее созданный файл. Это число (своеобразный идентификатор файла в программе) надо сохранить в переменной и в дальнейшем использовать в других функциях работы с файлами. Конечно, менять содержимое такой переменной ни в коем случае нельзя.

Допустим, что сохраняемый расклад будет записываться в пока несуществующий файл game.sol, который планируется расположить в каталоге c:\tmp. Название файла лучше оформить в виде текстовой константы и разместить в начале файла MainUnit.cpp:

const AnsiString FILE_NAME_STR = "с:\\tmp\\game.sol";

h02281.jpg

Обратите внимание на то, что внутри строк Си++ обратная наклонная черта «\» записывается обязательно двумя чертами — «\\».

Тогда создание такого файла потребует следующего кода на Си++:

int iFile;

iFile = FileCreate(FILE_NAME_STR);

В переменной iFile сохранен результат работы функции FileCreateQ. Его значение теперь надо проверить:

if( iFile == -1 ) { ShowMessage (CANT_CREATE_STR + FILE_NAME„STR); return; }

228