
- •3. Структура главного файла проекта
- •1.8 Области видимости переменных и функций
- •1.8.1 Правила, определяющие область видимости
- •62 Глава 1
- •5. Обработка исключений в блоках try ... Catch
- •2.10.1 Файловый ввод/вывод с помощью компонентов
- •2.14.1 Объявление класса
- •186 Глава 2
- •188 Глава 2
- •244 Глава 3
2.10.1 Файловый ввод/вывод с помощью компонентов
Работа с текстовыми файлами может осуществляться с помощью методов
LoadFromFile и SaveToFile, имеющихся у классов TStrings и TStringList. Эти
Типы данных в языке C++ 155
классы описывают списки строк и обладают множеством методов, позволяющих
манипулировать строками.
Если вы хотите в своем приложении прочитать содержимое некоторого тексто-
вого файла, обработать текст и сохранить его в файле, вы можете сделать это сле-
дующим образом. Объявите и создайте две глобальные переменные: список типа
TStringList, в котором будет храниться текст файла, и строковую переменную
типа AnsiString, в которой можете сформировать имя файла. Например:
TStringList *List = new TStringList;
AnsiString SFile = "Test.txt";
He забудьте только, что если требуемый файл расположен не в текущем ката-
логе и вам надо указать путь к файлу, то обратные слэши в записи пути должны
быть сдвоенные (см. разд. 1.5.1). Например, если вам требуется файл "c:\My-
Test\Test.txt", то вы должны записать его как "с:\\MyTest\\Test.txt".
В момент, когда вы хотите загрузить в свой список файл, надо выполнить опе-
ратор
List->LoadFromFile(SFile);
Впрочем, ограничиться таким оператором можно, если есть уверенность, что
требуемый файл существует. В противном случае код надо несколько усложнить,
чтобы можно было перехватить сгенерированное исключение. Например:
try{
List->LoadFromFile(SFile);
}
catch(.. . ) {
ShowMessage("Файл \"" + SFile +"\" не найден");
}
Если файл нормально загрузился в список List, вы можете работать с его тек-
стом. Текст расположен в свойстве списка Strings[int Index], в котором каждая
строка имеет тип AnsiString. Индексы начинаются с нуля. Для нашего примера
List->Strings[0] — это первая строка, List->Strings[l] — вторая и т.д.
Для списков типа TStringList предусмотрено множество методов. При обра-
ботке отдельных строк вы можете использовать операции и методы, предусмотрен-
ные для строк типа AnsiString (см. разд. 2.5.2 и соответствующие разделы гл. 3).
Если вы хотите сохранить файл после проведенного редактирования, можно
выполнить оператор
List->SaveToFile(SFile);
где SFile содержит прежнее или новое имя файла.
При открытии и сохранении файла вы можетевоспользоваться стандартными
диалогами Windows, вызываемыми через соответствующие компоненты С++Ви-
ilder.
Если вы открываете файл для того, чтобы пользователь мог его просмотреть,
что-то в нем отредактировать и сохранить, вы можете обойтись без описанного
выше объекта типа TStringList. Для этих целей проще воспользоваться много-
строчными окнами редактирования типов ТМето или TRichEdit. В последнем
случае вы можете работать не только с обычными текстовыми файлами, но и
с файлами в обогащенном формате RTF. Свойства Lines этих компонентов имеют
тип TStrings, что позволяет применять к ним непосредственно методы LoadFrom-
File и SaveToFile. Например:
Memol->Lines->LoadFromFile(SFile);
RichEditl->Lines->LoadFromFile(SFile);
Через компоненты C++Builder можно работать не только с текстовыми файла-
ми, но и с файлами изображений и мультимедиа.
Классы с 188
Классы и шаблоны классов - это, пожалуй, самое главное в C++. Все, связан-
ное с этими понятиями, в рамках данной книги рассмотреть невозможно. В реали-
зации классов и шаблонов есть масса тонкостей, на которых я останавливаться не
буду. Но все, необходимое для использования классов и их шаблонов, а также для
разработки достаточно сложных собственных классов и шаблонов, будет рассмот-
рено.