686_____________________________________________Глава 12

12.8 Ссылки

Ссылки — это специальный тип указателя, который позволяет работать с ука-
зателем как с объектом. Объявление ссылки делается с помощью операции ссыл-
ки, обозначаемой амперсантом (&) — тем же символом, который используется для
адресации. Если в вашей программе имеется указатель на объект какого-то типа
MyObject:

MyObject *P = new MyObject;

то вы можете создать ссылку на этот объект оператором:

MyObject & Ref = *Р;

Объявленная таким образом переменная Ref является ссылкой на объект My-
Object. Она может рассматриваться как псевдоним объекта. Эта переменная реаль-
но является указателем, а не самим объектом. Но работа с ней производится как с
объектом. Например, если вы хотите получить доступ к некоторому свойству объ-
екта х, то через указатель на объект вы обеспечиваете доступ выражением Р->х,
т.е. через операцию стрелка. А через ссылку вы обеспечиваете доступ к свойству х
выражением^ЕеГ.х, т.е. через операцию точка.

Аналогичным образом вы можете получить доступ по ссылке и к любым компо-
нентам. Например, если в вашем приложении имеется метка Labell, то вы может об-
ращаться к его свойству Caption оператором

Labell->Caption = "Это обращение по указателю";

А можете ввести соответствующую ссылку и обращаться через нее:

TLabel & ref = *Labell;

ref.Caption = "Это обращение по ссылке";

Чаще всего ссылки используются при передаче в функции параметров по
ссылке. Этот вопрос подробно рассмотрен в главе 11 в разделе 11.5.2.

12.9 Файлы и потоки

Работа с файлами в C++Builder может производиться нескольким принципиа-
льно различными (с точки зрения пользователя) способами:

• использование библиотечных компонентов

• работа с файлами как с потоками в стиле С

• работа с файлами как с потоками в стиле C++
Рассмотрим эти возможности.

12.9.1 Файловый ввод/вывод с помощью компонентов

Работа с текстовыми файлами может осуществляться с помощью методов Lo-
adFromFile и SaveToFile, имеющихся у классов TStrings и TStringList. Эти клас-
сы описывают списки строк и обладают множеством методов, позволяющих мани-
пулировать строками.

Если вы хотите в своем приложении прочитать содержимое некоторого тексто-
вого файла, обработать текст и сохранить его в файле, вы можете сделать это сле-
дующим образом. Объявите и создайте две глобальные переменные: список типа
TStringList, в котором будет храниться текст файла, и строковую переменную
типа AnsiString, в которой можете сформировать имя файла. Например:

TStringList *List = new TStringList;

AnsiString SFile = "Test.txt";