Паскаль - Статьи - Turbo Pascal (часть 2)

В продолжение статьи о возможностях применения Turbo Pascal "в наши дни" (можно даже сказать более пафосно: "в наш век"), мы рассмотрим практические аспекты создания web-сайтов.

Сегодня большие сайты часто создаются с использованием автоматической генерации HTML-документов. Самый типичный пример - поисковая система. Даже главная страница на таких сайтах генерируется автоматически, а не вручную. Каждые несколько минут содержание страницы меняется - обновляются новости, "горячие десятки" и так далее.

В то же время, стиль страницы остается неизменным. Разметка практически не меняется. Таким образом, в каждой странице можно выделить статическую и динамическую части. Статическая часть - это HTML тэги, а также текст и графика, постоянные для каждой страницы. Сюда относится, как правило, header ("шапка"), т.е. информация о фирме, баннер, навигация, находящиеся вверху страницы, и footer (затрудняюсь с русским переводом), то бишь информация, располагающаяся внизу страницы - e-mail адреса, контактные телефоны и т.д. Также часто используются боковые навигационные панели и другие статические элементы.

Динамическими элементами мы будем называть те области HTML-документа, содержание которых изменяется на различных страницах. При этом их местоположение и стиль (вид и размер шрифта, начертание) остаются одинаковыми. Для графических элементов неизменным остается выравнивание, иногда - размеры.

На этом начальная терминология заканчивается. Дальнейшее обсуждение будет трудно понять без базовых знаний Turbo Pascal (конечно, желательно также знание HTML). Тем, кто HTML не знает, надо принять к сведению, что так называемые "тэги" - это управляющие операторы разметки; они заключены в скобки "<" и ">" (например <head> или <HEAD>), и их нужно будет оставлять неизменными от одной страницы к другой.

В начале статьи мы коснулись работы генератора страниц поисковой машины. Сразу хочу предупредить, что на Turbo Pascal написать онлайновый генератор страниц невозможно. Необходимые страницы можно создать лишь на своем ПК и после загрузить их на сервер провайдера. Таким образом, количество файлов будет ограничено размером вашего web-сервера, и создавать страницы ответов на запросы не получится. Хотя, если ваш сайт содержит более 10 страниц, такие программы могут сильно упростить вашу жизнь.

Итак, нужно создать программу на Turbo Pascal, которая бы формировала на основе "базового" HTML-документа другие, подобные ему, с заменой динамической информации. Для осуществления этой задачи необходимо, во-первых, создать (руками или в html-редакторе) документ-"родитель". Затем, просмотреть документ в текстовом редакторе (WordPad) и заменить все динамические элементы на СПЕЦИАЛЬНЫЕ КОДЫ.

Пример:

Было: <td width="75%"><small>Согласование в официальных инстанциях всех необходимых документов.</small></td>
где "Согласование в официальных инстанциях всех необходимых документов." - динамически изменяемый текст
Стало: <td width="75%"><small> sogldoc1 </small></td>
где sogldoc1 - условный код (придумывается самостоятельно)

Естественно, что если созданный файл имел какую-либо практическую ценность, перед созданием из него "базы" файл надо переименовать.

После этого нужно присвоить созданному файлу условное имя (у нас это будет index1.htm), запустить Turbo Pascal и написать программу.

Для начала разработаем алгоритм программы в "общем виде":

  1. Находим файл-источник (тот самый index1.htm). Открываем на чтение.
  2. Создаем новый пустой файл, в который будет осуществляться запись (формирование динамически измененного HTML-документа). Открываем на запись.
  3. Читаем строчку из файла-источника.
  4. Проверяем на наличие условного кода (обозначает необходимость вставки нового текста).
  5. Если код присутствует, заменяем его на соответствующее выражение (ввод с клавиатуры из заранее открытого файла или каким-то другим способом)
  6. Выводим строчку в файл-приемник.
  7. Повторяем с пункта 3, пока не будет достигнут конец файла.

Если даже этот текст перевести на английский, получится почти готовая программа.

Вот основные операторы, которые нам понадобятся:

Находим файл-источник (тот самый index1.htm).
Открываем на чтение.
assign(src,'index1.htm');
reset(src);
Var
Src:text;{от английского source - источник}
Создаем новый пустой файл, в который будет осуществляться запись.
Открываем на запись.
assign(dest,'newfile.htm');
rewrite(dest);
Var
dest:text;{от английского destination - пункт назначения}
Читаем строчку из файла-источника. readln(src,stroka);
Var
Stroka:string;{не забывайте, что максимальная длина строки в TP - 255 символов, оптимизируйте исходные файлы соответственно}
Проверяем на наличие условного кода (обозначает необходимость вставки нового текста). posres:=pos('sogldoc1',stroka);
Var
Posres:byte;{смотри описание к функции pos}
Если код присутствует, заменяем его на соответствующее выражение (ввод с клавиатуры из заранее открытого файла или другим способом) if (posres <> 0) then
Как вы будете менять текст внутри переменной stroka перед ее выводом в файл-приемник - зависит исключительно от вас. Я намеренно не предлагаю простых решений, они и так очевидны.
Выводим строчку в файл-приемник. writeln(dest,stroka);

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

Автор: Михаил Проломов
Copyright © 2006-09.