Яндекс цитирования
 

Web-программирование

 

[ В начало раздела ]

Создание графического счетчика

Здесь мы создадим с вами счетчик посещений нашей web-страницы.

Алгоритм наших действий:

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

Вот, что у нас получилось.

  LogFileName := 'WebCont.log';
  System.Assign (LogFile, LogFileName);
  try
    // read if the file exists
    if FileExists (LogFileName) then
    begin
      Reset (LogFile);
      Readln (LogFile, nHit);
      Inc (nHit);
    end
    else
      nHit := 0;
    // saves the new data
    Rewrite (LogFile);
    Writeln (LogFile, nHit);
  finally
    Close (LogFile);
  end;

Но как создать графический счетчик и показать его пользователю? Можем действовать двумя способами:

  • 1. подготовить рисунок для каждой цифры, а затем соединить их в программе
  • 2. нарисовать нужное нам изображение (любое) на компоненте TImage, расположенном в памяти, и затем возвратить его.

Второй способ более интересен, его я и рассмотрю.

Итак, начнем.

Создаем новый web-проект CGI (New../New/Web Server Application/CGI Stand-alone executebale). Создаем новое событие (action) HitCount. Устанавливаем его свойство Default в True. В обработчике действия HitCount будем реализовывать процедуру создания графического счетчика.

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

  • 1. создаем в памяти компонент TImage;
  • 2. задаем его размеры и аттрибуты;
  • 3. рисуем в в его канве (TCanvas) с помощью стандартных методов необходимое нам изображение.
  • 4. связываем получившийся рисунок с объектом класса TJpegImage.

Для вывода счетчика пользователю, данные объекта TJpegImage сохраняем в поток (stream). В завершении указываем MIME-тип возвращаемого потока как "image/jpeg".

Вот код, создающий графическое изображение счетчика.

  // создаем изображение в памяти
  Image := TImage.Create (nil);
  try
    Image.Picture.Bitmap.Width := 120;
    Image.Picture.Bitmap.Height := 25;
    // рисуем число посещений
    Image.Canvas.Font.Name := 'Arial';
    Image.Canvas.Font.Size := 14;
    Image.Canvas.Font.Color := RGB (255, 127, 0);
    Image.Canvas.Font.Style := [fsBold];
    Image.Canvas.TextOut (1, 1, FormatFloat ('###,###,###', Int (nHit)));
    // преобразовываем в JPEG формат
    Jpeg1 := TJpegImage.Create;
    try
      Jpeg1.CompressionQuality := 50;
      Jpeg1.Assign(Image.Picture.Bitmap);   // связываем изображение с объектом TJpegImage
      Stream := TMemoryStream.Create;
      try
        Jpeg1.SaveToStream (Stream);
        Stream.Position := 0;
        Response.ContentStream := Stream;      // возвращаем поток JPEG
        Response.ContentType := 'image/jpeg';  // указываем MIME-тип
        Response.SendResponse;                 // отправляем пользователю
      finally
        Stream.Free;
      end;
    finally
      Jpeg1.Free;
    end;
  finally
    Image.Free;
  end;

Три выражения, ответственных за возврат изображения в формате JPEG,- это два вызова, которые устанавливают свойства ContentStream (поток содержимого) и ContentType (тип содержимого) параметра Response и завершающий вызов метода SendResponse.

Вот и все. Осталось только откомпелировать наш проект (назовем его HitCount и поместить приложение в директорию WEB-сервера с правами выполнения (н-р, CGI-BIN или SCRIPTS). В страницу, на которой мы будем отображать счетчик, поместим следующий HTML-код:

  <img src="/cgi-bin/hitcount.exe" border=0 alt="счетчик посещений">

Вот теперь действительно все. Желаю удачи.

© Долгов С.В. 20.06.00

!!! СКАЧАТЬ ИСХОДНИКИ !!!

 

[ В начало раздела ]


 

 

Все для web-дизана!!! Бард-Путеводитель Много Всего CGI-Гид. Лучшие скрипты... WDH - WebDesignHelp - CGI, JAVA, APPLETS, TOP100! Раскрутка, увеличение посещаемости и индекса цитируемости в поисковых системах.

© 2000-2002 Долгов Сергей

dolgov_sergei@mail.ru

X