Как сделать статистику в делфи

Статистика WebDelphi за всё время его существования.

Пока писал пост спалился – ткнул не на ту кнопку и опубликовал 1 абзац. Пришлось в срочном порядке отменять публикацию. но DelpheFeeds.ru не спит – успел-таки ухватить кусок поста себе в ленту 🙂

Недавно в блоге “TDelphi: будни Delphi блоггера” был опубликован новый обзор лучших публикаций по Delphi за 2010 год. Несомненно работа была проделана большая – перебрать кучу блогов, отсеять незначительные посты, выбрать интересные, полезные, сформировать удобную статью и т.д. Кроме того, ИМХО, работа эта полезная – человеку не требуется долго искать необходимую информацию по Сети, достаточно зайти на страничку с обзором, найти пост и перейти в блог. Здорово. Алексею большое спасибо за проделанную работу, надеюсь, что в начале 2012 года он нас снова порадует новым обзором.

Ну, а я решил, ради интереса, покопаться в статистике по своему блогу и выяснить, что же приводит посетителей в блог webdelphi.ru – сформировать, так сказать, список самых популярных постов блога за всё время его существования в Сети.

Сразу оговорюсь, чтобы не возникало путаницы в понятиях: Алексей отбирал посты с точки зрения интереса – новизна, полезность и т.д. Я же просто оперировал “сухими” числами – сколько пришло народу на страницу с постом, как долго просматривали, аудитория и т.д. Оценить интересность своих же постов как-то не удается – мне всё интересно :), а вычислить откуда пользователи идут в блог интересно – может вдруг решу переквалифицировать блог из “Delphi в Internet” в “Просто про Delphi” 🙂

Итак, что я использовал:

данные из Яндекс.Метрики, Google Analytics

отрезок времени: с 15.07.2009 по 21.03.2011.

Результаты своего мини-исследования я оформил в несколько разделов.

1. Самые популярные запросы

Здесь я решил сравнить запросы из Google и Яндекс и ранжировать запросы по их популярности в ПС. Результат в таблице:

Место в списке Я ндексGoogle
1delphi exceltortoisegit
2работа с excel в delphidelphi ribbon
3tortoisegitdelphi xe
4delphi 2010работа с excel в delphi
5delphi xenativexml
6delphi ribbonсжатие проектов lazarus
7delphi работа с exceldelphi excel
8excel delphiexcel delphi
9nativexmlмногопоточность в delphi
10webbrowser delphiкомпоненты ribbon для delphi 7

Всего блог находился по 8612 различным фразам в Яндекс и 55620 фразам в Google…пользователи Google имеют больший словарный запас? 🙂

Что для меня стало, скажем так, неожиданно, так это запрос “tortoisegit” из 300+ постов конкретно про этого клиента разговор идёт в одном посте, и этот пост в Google сегодня на 4 месте после вики и самих разработчиков клиента….ну, видимо не зря писалась “шпора” :). С Excel в принципе было ожидаемо с самого начала как только начал писать посты на эту тему – сам по себе запрос довольно популярный.

И так получается следующая картинка из 10 самых запросов в Яндекс запросы связанные с Сетью занимают почетные два места снизу. В Google вообще 1 запрос, но зато по центру :).

Кстати, думаю, что мало кто не заметил слева в сайдбаре трекер поисковых фраз “Блог находят по фразам” – частенько на него смотрю и как-то становится даже весело – стабильно раз в день кто-то забредает в блог в поисках…сведений по предмету “Русский язык”! Вот допустим сейчас пишу пост, а в трекере висит вопрос “вдруг какая часть речи”…ну и ладно, зато узнают как тезаурус в Word работает.

2. Самые важные посты блога.

В принципе, если попробовать составить список самых популярных постов блога просто по посещаемости, то, исходя из первой таблицы нетрудно догадаться, что лидирующие позиции пять возьмут посты по Excel. Поэтому я немного изменил критерии отбора и совместно с частотой переходов на страницу с постом учёл ещё две характеристики – показатель отказов, т.е. процент посещений с просмотром одной страницы и время пребывания на сайте. То есть выбрать те посты. которые:

В Google Analytics сделать такой отчёт не составило особого труда, а вот в Яндекс.Метрике, к сожалению, вывести одновременно заголовок страницы и показатель отказов не получилось (может просто не нашел, но по-моему возможность составления такого отчёта в Метрике отсутствует). Поэтому самые популярные посты блога я вывел только по данным Google. Итак, ТОП самых безотказных постов блога

Собственно после просмотра статистики по ключевым словам даже как-то полегчало. В десятку вошли посты (большая часть) из тех тем, которыми я более всего занимался – пост по Google API, Ribbon Controls, Synapse, NativeXML. Самыми “цепляющими” постами стали не посты про Excel :).

3. Аудитория блога.

Тоже немаловажная характеристика для блога. Думаю, что каждый блогер (не важно на какую темы блог) хочет, чтобы в его дневнике были постоянные читатели и, желательно, взрослые, здравомыслящие читатели (если блог не нацелен на детей малолетнего возраста).

Оценим возраст читателей webdelphi. Диаграмма из Яндекс.Метрики:

Как сделать статистику в делфи

Максимум по диаграмме – люди в возрасте от 25 до 34 лет, т.е. практически мои ровесники, что радует. Посетителей младше 18 лет практически не наблюдается (ну оно и понятно, в 16 лет в основном не до Delphi).

По длительности пребывания на сайте лидирующая группа – люди 35 – 44.

Но возраст это одно, а “преданность” читателя ресурсу – совершенно другое. Ведь человек может зайти 1 раз, почитать 1 пост 10 минут, закрыть блог и забыть его адрес. А другой может читать пост по-диагонали за 5 минут, но постоянно “висеть” в блоге – комментировать, предлагать решения, делиться ссылками на блог с другими и т.д. В общем быть, так скажем, активистом.

Для оценки это составляющей я решил воспользоваться Google Analytics вкладкой “Тенденции посетителей” – на мой взгляд она более подробно информирует о действиях посетителей, нежели “Лояльность” в Метрике.

Абсолютный максимум пребывания на сайте составил 4 часа 53 минуты 18 секунд.

Максимум одновременно просмотренных страниц – 6 (мало, конечно, но ничего не попишешь);

В среднем каждый посетитель просматривает по 2 страницы блога.

Более 1 раза блог посетили около 80 000 раз, при этом 89 посещений прошло через 1 год после первого посещения.

В соотношении вернувшиеся посетители/новые наблюдается примерно одинаковая картинка, с тем, что было год назад – 50/50.

На текущий момент средняя посещаемость блога колеблется в разные дни недели от 400 до 1200 уникальных посетителе в день.

Выводы

Какие выводы я для себя сделал, проанализировав статистику по блогу? Выводов на самом деле море и касаются они самых разных сторон работы в Сети. Если говорить в целом, то:

В приведенных выше данных все сведения брались без учёта моих посещений.

Источник

Статистика в игре

Как сделать статистику в делфиСтатистика в MainMenu
Привет,ребят 🙂 Мне нужна помощь со статистикой в мейнменю) Задали нам сделать тест в делфи.

Статистика в Делфи
Как ведётся статистика общего количества документов и страниц, распечатанных через программу.

Статистика текста
Добрый день, ребята, помогите с кодом. поясните, пожалуйста, подробнее. я оставил свое понимание.

Статистика работы в потоках
Добрый день. Ребята, нужна помощь. Есть многопоточный парсер ( работа программы: последовательно.

У меня при записи в файл вылетает с ошибкой: «raised exception class EInOutError with message ‘I/O error 105’. Process stopped. Use Step or Run to continue.». А переменная FEnd содержит какую-то дрянь = пример, 3,092138281-09. Что я делаю не так? Вот весь код формы:

Добавлено через 42 секунды
Помогите пожалуйста. Очень на вас надеюсь.

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

D1973, хорошо, я уберу это условие.

Добавлено через 1 минуту
Убрал вообще в процедуре FormCreate всё что относится к файлу. Новый код:

TimeCount это секунды проведённые в программе, цифры. Всё. Может при сохранении указать кодировку?

Добавлено через 2 минуты

DJ338, блин, да уберешь ты этот несчастный Reset(f) или нет. Сколько раз тебе про него говорить! А кодировка тут не при чем: ты же цифры туда пишешь.

Добавлено через 1 минуту
Э-э, дык ты типизированный файл делаешь, вот и получаешь

Решение

Добавлено через 4 минуты
droider, ура. Спасибо вам, заработало.

Добавлено через 48 секунд
Только один вопрос, как полностью перезаписывать файл?

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как сделать статистику в делфиСтатистика выбранного пользователем документа
Разработать программу, которая выводит статистику выбранного пользователем документа.

Статистика в игре
Добрый день, форумчане! Сделал простенькую игрушку под WP, все нормально, все работает как надо.

Статистика биржевой деятельности и статистика спроса
Очень поджимают сроки, сдать нужно ЗАВТРА! Сам сделал 12 задач, думал и с этими справлюсь, но, к.

Источник

Как сделать статистику в делфи

Отчеты в Delphi

ПРИМЕЧАНИЕ
В поставку Delphi 7 так же входит и QuickReport, однако по умолчанию этот инструментарий отсутствует на панели компонентов. Чтобы воспользоваться QuickReport в этой версии Delphi, следует открыть Component ‘ Install Packages, нажать кнопку Add и выбрать файл dclqrt70.bpl в подкаталоге …Delphi\Bin.

В простейшем случае работа с QuickReport выглядит следующим образом: создается новая форма, на которую помещают компонент QuickRep. Затем при помощи составного свойства Bands определяют, какие основные составные части отчета требуются:

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

Как сделать статистику в делфи
Рис. 22.1. Приложение QuickReport demo

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

Как сделать статистику в делфи
Рис. 22.2. Форма Delphi с отчетом QuickReport

Теперь остается написать код для обращения к этому отчету. Для этого вернемся к первой (главной) форме приложения, в начале секции implementation подключим форму с запросом при помощи ключевого слова uses и создадим обработчики событий для кнопок, как показано в листинге 22.1.

Листинг 22.1. Исходный код приложения QuickReport demo

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, QRCtrls, QuickRpt, ExtCtrls, DB, DBTables; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; procedure Button3Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); end; var Form1: TForm1; implementation uses unit2; <$R *.dfm>procedure TForm1.Button3Click(Sender: TObject); begin close; end; procedure TForm1.Button1Click(Sender: TObject); begin Form2.QuickRep1.Preview; end; procedure TForm1.Button2Click(Sender: TObject); begin Form2.QuickRep1.Print; end; end.

Как видно из кода, вся программная работа заключается в вызове метода Preview для просмотра отчета и метода Print для вывода на печать. С исходным кодом так же можно ознакомится в каталоге Demo\Part4\QReport.

Основы Rave Reports

Что касается самого генератора Rave Reports, то он состоит из 3 частей:

Основным преимуществом Rave Reports перед QuickReport является собственная визуальная среда разработки отчетов, которая, в принципе, позволяет добиться больших результатов при меньших усилиях. Правда, обратной стороной этого улучшения является то, что предварительно придется изучить эту среду, что несколько затруднительно, особенно учитывая весьма скупую справочную систему, поставляемую вместе с этим генератором отчетов. Поэтому для начала остановимся на самой интегрированной среде разработки Rave Reports, тем более что разработка отчета при помощи Rave начинается как раз с его конструирования в самой среде, и лишь после этого в разрабатываемом приложении в Delphi настраивается связь приложения с отчетом при помощи компонентов, расположенных на странице Rave.

Среда Rave Reports

Как сделать статистику в делфи
Рис. 22.3. Вид окна IDE Rave Reports 5.0

Ниже расположена основная часть окна, разделенная на 3 части. Так, слева расположен инспектор компонентов отчета, при помощи которого настраиваются свойства выбранного компонента, подобно тому, как это осуществляется в инспекторе объекта в IDE Delphi.

Справа расположено дерево проекта отчета, которое отображает состав проекта и в котором можно выбрать нужный компонент. При помощи двойного щелчка мышкой по выбранному в дереве элементу можно выделить соответствующий элемент на странице и увидеть его свойства в инспекторе компонентов отчета

Само дерево состоит из 3 «ветвей»:

Здесь следует отметить, что все создаваемые в Rave Reports отчеты являются частью проектов. Проект может содержать произвольное число отчетов, а каждый отчет, в свою очередь, может состоять из произвольного числа страниц. При этом словарь просмотров данных, как и страницы из глобального каталога являются общими для всех отчетов проекта. При работе с проектом выделяют какой-либо отчет, который называется текущим отчетом. Сразу после открытия проекта текущим становится первый отчет, но при необходимости всегда можно выбрать нужный отчет при помощи двойного щелчка мышкой по его названию в дереве проекта.

Чтобы добавить новый отчет к проекту с помощью команды New Report из меню File, а новая страница в отчете добавляется при помощи команды New Report Page из этого же меню. Сразу после создания объект незамедлительно появляется в соответствующей ветви дерева проекта.

Если проект включает в себя несколько отчетов, и требуется создать страницу, которая будет использоваться в нескольких их них, то следует создать страницу для каталога глобальных страниц при помощи команды New Global Page. После создания такую страницу можно редактировать и добавлять в состав любого входящего в проект отчета.

Состав и порядок вывода страниц отчета определяется при помощи свойства PageList отчета. Это свойство доступно из инспектора компонента отчета, когда в дереве проекта выбран сам отчет. Для выбора страниц и их упорядочивания следует нажать на кнопку с многоточием, при этом появится редактор страниц отчета (Page List Editor), при помощи которого определяют выводимые на печать страницы, а так же настраивают порядок их вывода (рис. 22.4).

Как сделать статистику в делфи
Рис. 22.4. Редактор страниц отчета

Наконец, новый источник данных создается при помощи команды New Data Object. При этом открывается диалоговое окно Data Connections (рис. 22.5), в котором следует выбрать один из 5 предлагаемых типов объектов:

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

Компоненты Rave Reports для создания отчетов

Для создания и оформления отчетов в среде Rave Reports имеется многостраничная панель инструментов, имеющая 10 вкладок:

Таблица 22.1. Компоненты для оформления отчетов в Rave Reports

КомпонентВкладкаОписание
Line, Hline, VlineDrawingКомпоненты для рисования универсальной, горизонтальной и вертикальной линии. Разница между универсальной линией и остальными заключается в том, что ее можно «повернуть» при помощи мышки, а другие – только путем редактирования свойства Height в инспекторе компонентов отчета
Rectangle, SquareDrawingКомпоненты для вывода прямоугольника и квадрата
Circle, EllipseDrawingКомпоненты для вывода окружности и эллипса
PostNetBarCodeBar CodeКомпонент для вывода штрихкода в формате PostNet, который применяется в почтовой службе США
I2of5BarCodeBar CodeКомпонент для вывода штрихкода в формате I2of5, предназначенного для вывода цифровых последовательностей
Code39BarCodeBar CodeКомпонент для вывода штрихкода в формате Code39, кодирующего цифры и заглавные латинские буквы, а так же некоторые иные символы
Code128BarCodeBar CodeКомпонент для вывода штрихкода в формате Code128, при помощи которого можно представить первую половину символов таблицы ASCII
UPCBarCodeBar CodeКомпонент для вывода штрихкода в формате UPC, служащего для маркировки товаров 12-ю цифрами
EANBarCodeBar CodeКомпонент для вывода штрихкода в формате EAN, служащего для маркировки товаров 13-ю цифрами
TextStandardКомпонент для вывода однострочного текста. Сам текст задается при помощи свойства Text путем его редактирования в инспекторе компонентов отчета
MemoStandardКомпонент для вывода многострочного текста. Сам текст задается при помощи свойства Text
SectionStandardНепечатный компонент, предназначенный для группировки нескольких компонентов
BitmapStandardКомпонент для отображения растровых изображений в формате BMP. Само изображение задается при помощи свойства Image
MetaFileStandardКомпонент для отображения векторных изображений в форматах EMF и WMF. Само изображение задается при помощи свойства Image
FontMasterStandardНепечатный компонент, предназначенный для определения свойств шрифта для компонентов отчета, связанных с данным элементом при помощи свойства FontMirror
PageNumInitStandardНепечатный компонент, предназначенный для переопределения нумерации страниц начиная с той страницы отчета, на которой он расположен

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

Таблица 22.2. Компоненты вывода данных в Rave Reports

КомпонентГруппаОписание
DataTextОтображениеИспользуется для вывода строковых и числовых значений из связанного с ним источника (просмотра) данных
DataMemoОтображениеИспользуется для вывода данных в формате Memo или BLOB
CalcTextОтображениеИспользуется для вывода результатов вычислений по связанным полям
DataMirrorSectionОтображениеАналог компонента Section, предназначенный для компонентов вывода данных
RegionСтруктураИспользуется для определения области (части страницы), на которой располагаются другие компоненты вывода данных. При необходимости можно разбить область на колонки при помощи свойства Columns
BandСтруктураИспользуется для определения полосы, на которой располагаются компоненты оформления отчета. Компонент Band может размещаться только на компоненте Region
DataBandСтруктураИспользуется для выделения полосы, на которой располагаются компоненты вывода данных. Компонент DataBand может размещаться только на компоненте Region
DataCycle, CalcOp, CalcTotal, CalcControllerВычисленияГруппа непечатных компонентов, используемых для вычисления данных на основе информации, доступной из источников (просмотров) данных

Что касается всех остальных компонентов, то они, по сути, являются лишь командами для изменения свойств отображения элементов отчета.

Компоненты Rave Reports в VCL

Для взаимодействия с приложениями, создаваемыми в Delphi, вместе с Rave Reports поставляется набор VCL-компонент. В Delphi 7 и более поздних версиях они установлены по умолчанию и находятся на вкладке Rave палитры компонентов Delphi.

Наиболее важным для построения отчета компонентом, безусловно, является компонент RvProject, поскольку без его участия невозможно взаимодействие приложения с отчетами Rave Reports. Связь с проектом отчета осуществляется при помощи свойства Project File, которому присваивается имя RAV-файла с проектом отчета:

С другими компонентами Rave, используемыми для управления отчетом, компонент RvProject связывается при помощи свойства Engine. В типичном случае, в качестве Engine указывают компонент RvSystem, при помощи которого можно выводить отчет как на экран, так и на печать, или же экспортировать его в файл. Фактически, работа с отчетом Rave Reports в Delphi сводится к тому, что сначала при помощи компонента RvProject устанавливается связь с проектом и выбирается нужный отчет, после чего при помощи RvSystem отчет выводится на печать, в файл, или на экран.

Компоненты RvCustomConnection, RvDataSetConnection, RvTableConnection и RvQueryConnection предназначены для предоставления отчету источников данных из приложения Delphi. Именно эти компоненты будут отображаться при разработке отчета в среде Rave Reports, если при создании объекта данных (New Data Object) выбрать вариант прямого просмотра данных (Direct Data View). Разумеется, при этом должна быть запущена среда Delphi с загруженным приложением, содержащим подобные компоненты.

Пример создания отчета

Рассмотрим пример создания простейшего отчета с использованием Rave Reports. Пусть он будет выводить ту же самую таблицу и примерно в таком же виде, как и рассмотренный в начале этой главы отчет, созданный на базе VCL-компонентов QuickReport.

После этого можно приступить собственно к проектированию отчета, для чего нам понадобится загрузить среду Rave Reports. Сделать это можно как из меню Tools, так и при помощи двойного щелчка мышкой по компоненту RvProject.

Как сделать статистику в делфи
Рис. 22.6. Разработанный отчет в среде Rave Reports

Фактически, разработку отчета можно считать завершенной, и можно сохранить проект, причем желательно в том же каталоге, что и приложение Delphi, которое данный отчет использует. После сохранения можно закрыть среду Rave Reports и вернуться к разработке в Delphi.

Вся подготовительная работа, связанная с созданием отчета и настройке компонент на этом заканчивается и можно приступать к написанию программного кода, которого, собственно, будет весьма немного. В частности, нам надо лишь указать на то, куда выводить отчет и собственно обеспечить вызов процедуры вывода. Делается это 2 строками кода:

Здесь в первой строке указывается, что вывод следует производить в окно просмотра на экран монитора, а во второй обеспечивается сам вывод. Для вывода же на печать следует лишь изменить значение, назначаемое свойств DefaultDest с rdPreview на rdPrinter:

Вместе с тем, следует учитывать, что для вывода из проекта будет браться первый попавшийся отчет, поэтому если отчетов будет несколько, то всякий раз следует указывать, какой именно отчет нам требуется. Сделать это можно при помощи метода SelectReport:

Кроме того, не было бы лишним явно загрузить отчет, для чего можно воспользоваться методом Open:

В результате, мы получим код, приведенный в листинге 22.2.

Листинг 22.2. Код приложения Rave Reports demo

procedure TForm1.FormCreate(Sender: TObject); begin RvProject1.SelectReport(‘Report1’,true); RvProject1.Open; end; procedure TForm1.Button1Click(Sender: TObject); begin RvSystem1.DefaultDest:=rdPreview; RvProject1.Execute; end; procedure TForm1.Button2Click(Sender: TObject); begin RvSystem1.DefaultDest:=rdPrinter; RvProject1.Execute; end; procedure TForm1.Button3Click(Sender: TObject); begin close; end;

С самим приложением можно ознакомиться в каталоге Demo\Part4\RReport.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *