Иллюстрированный самоучитель по Turbo Pascal

Коллекции строк

Для создания и использования коллекции отсортированных строк в Turbo Vision используется объект TSrtingCollection. Этот объект является прямым потомком от TSortedCollection и отличается от него тем, что его метод Compare не является абстрактным – по умолчанию он осуществляет обычное для Турбо Паскаля лексикографическое сравнение двух строк. Таким образом, если Вам необходимо отсортировать коллекцию строк по алфавиту (точнее, в соответствии с внутренней кодировкой символов), Вы можете использовать экземпляр объекта TSortedCollection без какого-либо перекрытия его методов.

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

Uses Objects;
var
f: file of Char; Function OpenFile(var Name: String): Boolean;
{Возвращает FALSE, если нельзя открыть файл}
begin
if ParamCount = 1 then
Name: = " ParamStr(1) {Первый параметр в строке вызова программы должен содержать имя файла,}
else, {если это не так, анализируется файл, содержащий текст программы}
Name: = copy(ParamStr(0),1,
posC. ',ParamStr(0))) + 'PAS';
Assign(f, Name);
{$I-}
Reset(f);
{$I+}
OpenFile: = IOResult=0
end; {OpenFile}
Function GetWord: String;
{Получает из файла очередное слово}
var
с: Char;
w: String;
Function Letter(var c: Char): Boolean;
{Возвращает TRUE, если символ – буква}
begin
с: = UpCase (с);
{проверяем на строчную русскую букву:}
if с in ['а'..'п'] then. {а – русская буква}
с: = chr(ord(c)-ord('а')+ord('А')) {А – русская буква}
else if с in ['р'..'я'] then, {р – русская буква}
с: = chr(ord(с)-ord('р')+ord('Р')); {Р – русская буква}
{Проверяем на заглавную букву:}
Letter: = с in ['А'..'Z','А1..'Я']
end; {Letter}
begin {GetWord}
w: = ' ';
С: = #0;
while not EOF(f) and not Letter(c) do
Read(f,c);
if not EOF(f) then while not EOF(f) and Letter(c) do
begin
w.: = w+c;
Read(f,c)
end;
GetWord: = w
end; {GetWord}
Procedure PrintList(List: PStringCollection);
{Выводит на экран список слов}
Procedure PrintWord(p: PString); far;
begin
Write(р^, ' ':20-Length(р^))
end; {PrintWord}
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.