Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 Интегрир среда С++Builder (все лекции).doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
781.82 Кб
Скачать

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++. Все, связан-

ное с этими понятиями, в рамках данной книги рассмотреть невозможно. В реали-

зации классов и шаблонов есть масса тонкостей, на которых я останавливаться не

буду. Но все, необходимое для использования классов и их шаблонов, а также для

разработки достаточно сложных собственных классов и шаблонов, будет рассмот-

рено.