Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Текстовые константы , новый пользовательский файл Text.h
Текстовые строки Си++ записываются в виде последовательности символов, заключенных в кавычки. Это так называемые текстовые константы, которые удобно описывать с помощью ключевого слова const и выносить в отдельный заголовочный файл. Ведь если понадобится перевести программу на другой язык, то тогда не надо будет искать в каждом файле текстовые константы и переводить их, стирая старое значение. Достаточно подготовить несколько заголовочных файлов и просто менять их по мере необходимости.В С++Builder есть гибкие возможности, позволяющие выполнять включение различных фалов и даже компиляцию отдельных частей кода в зависимости от некоторых условий — это так называемаяусловная компиляция. Выделение текстовых констант в отдельный файл делается так. 1. Выполните команду File-> New-> Other.. (Файл-> Создать), в открывшемся диалоговом окне на вкладке New выберите значок Text (см. рис.7) и щелкните на кнопке ОК. В Редакторе откроется новый файл File1.txt. Рис. 6. Создание файла текстовых констант
2. Сохраните этот файл в каталоге проекта с помощью команды File-> SaveAs (Файл -> Сохранить как), дав ему имя 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 = " Вовремяходачеловекапоканабрано "; con st 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() будет вызываться в программе довольно часто, так как именно он ответственен за вывод информации пользователю.
|