Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проект №7. Описание игры с использованием ООП.docx
Скачиваний:
23
Добавлен:
11.04.2015
Размер:
223.71 Кб
Скачать

8.2.2 Текстовые константы , новый пользовательский файл Text.H

Текстовые строки Си++ записываются в виде последовательности символов, заключенных в кавычки. Это так называемые текстовые константы, которые удобно описывать с помощью ключевого словаconstи выносить в отдельный заголовочный файл.

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

Выделение текстовых констант в отдельный файл делается так.

1. Выполните команду File -> New->Other.. (Файл-> Создать), в открывшемся диалоговом окне на вкладке New выберите значок Text (см. рис.7) и щелкните на кнопке ОК. В Редакторе откроется новый файл File1.txt.

Рис. 6. Создание файла текстовых констант

2. Сохраните этот файл в каталоге проекта с помощью команды File->Save As (Файл -> Сохранить как), дав ему имя Text.h (произвольно выбранное название, обозначающее, что в этом файле будут располагаться текстовые константы).

3. Введите первую текстовую константу. При ее определении после ключевого слова const надо явно указать тип этой константы (по умолчанию считается, что тип константы — целое число (int), во всех остальных случаях этот тип требуется указывать:

const AnsiString LAST_DICE_STR = "Последний бросок был " ;

Пробел в конце текстовой константы вставлен, чтобы слово «был» не сливалось с последующей цифрой. Для того чтобы отличать текстовые константы от числовых, к названиям текстовых констант в конце обычно приписывается суффикс _STR.

4. Включите этот файл командной строкой #include "Text.h" в файл DiceUnit.cpp перед командой включения DiceUnit.h.

Хотя используемые в программе текстовые константы и вынесены в отдельный файл, некоторые строки задаются в C++Builder с помощью Инспектора объектов (например, заголовки окон или всплывающие подсказки). Непосредственно в тексте приложения они не хранятся и заменять их вручную при переходе к другому языку весьма неудобно. Для решения проблемы поддержки нескольких национальных языков на всех уровнях C++Builder в Интернете можно легко найти подходящие бесплатные компоненты.

Текстовую константу LAST_DICE_STR надо сцепить с переведенным в текстовый вид значением переменной LastValue, входящей в состав объекта Dice (такое обращение к LastValue запишется как Dice.LastValue). Однако сама переменная Dice не доступна напрямую в создаваемой программе, так как скрыта в классе TReferee. К ней можно обратиться так:

Referee.Dice Тогда полное обращение к LastValue запишется в виде:

Referee.Dice.LastValue

В этом выражении выделение элемента класса происходит два раза и выполняется, согласно правилам Си++,слева направо.Сначала в переменной Referee выделяется переменная Dice класса TDice: Referee.Dice , а затем в переменой Dice выделяется переменная LastValue.

Тогда сцепление текстовой константы LAST_DICE_STR и результата вызова функции !ntToStr() будет выглядеть следующим образом:

LAST_DICE_STR + IntToStr( Referee.Dice.LastValue )

Итоговую строку , полученную выше, необходимо показать на форме через свойство Caption объекта LastDice, который сразу покажет свое содержимое в соответствующем поле окна программы. Это свойство доступно через указатель

LastDice->Caption = LAST_DICE + IntToStr(Referee.Dice.LastValue );// Эту строку впишите в код метода ShowInfo():

void TForm1::ShowInfo()

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

// файла Text.h

LastDice->Caption = LAST_DICE_STR + IntToStr(Referee.Dice.LastValue );

}

Теперь надо описать еще четыре текстовые константы в текстовом файле и вписать код в метод

const AnsiString HUMAN_CURRENT_STR = "Во время хода человека пока набрано " ;

const AnsiString HUMAN_ALL_STR = "Всего человек набрал " ;

const AnsiString COMPUTER_CURRENT_STR = "Во время хода компьютера пока набрано ";

const AnsiString COMPUTER_ALL_STR = "Всего компьютер набрал " ;

Их использование в методе ShowInfo() будет выглядеть так:

LastHumanScore->Caption = HUMAN_CURRENT_STR +IntToStr( Referee-Human.CurrentScores );

HumanScore->Caption = HUMAN_ALL_STR + IntToStr(Referee.Human.Scores );

LastComputerScore->Caption = COMPUTER_CURRENT_STR +IntToStr( Referee.Computer.CurrentScores );

ComputerScore->Caption = COMPUTER_ALL_STR + IntToStr(Referee.Computer.Scores );

Метод Showlnfo() будет вызываться в программе довольно часто, так как именно он ответственен за вывод информации пользователю.