Программирование >>  Формирование пользовательского контейнера 

1 ... 71 72 73 [ 74 ] 75 76 77 ... 156


чанию. Вторая переменная - ti, представляющая собой маленькую стру. туру, которая содержит информацию, передаваемую потоковой функции. Во время создания диалогового окна инициализируются поле редактирование (edii box) и индикатор выполнения процесса (progress bar). Как написано в ком. ментариях, в поле редактирования выводится URL-адрес только для демонст-рации (обычно этот элемент управления не содержит начальной строки) Приращение индикатора выполнения процесса задается равным L По умолчанию у таких элементов управления установлен диапазон изменения - от О до 100, таким образом, приращение, равное 1, означает прирост на 1%. Для загрузки файла из Интернета введите URL-адрес нужного файла в поле редактирования и щелкните кнопкой мыши по кнопке Start. Эти действия инициируют последовательность событий. Во-первых, индикатор выполнения процесса переустанавливается в 0. Далее программа получает из поля редактирования строку, содержащую URL-адрес, от переключателя (check box) - информацию о режиме загрузки (перезагрузка или дозафузка), а от кнопки Start - ее дескриптор. Все эти данные запоминаются в структуре ti, которая передается в функцию потока. Затем счетчики выполнения процесса обнуляются. В профамме есть глобальные переменные percentdone и oidpercentdone. Они используются ДЛЯ изменения текущей позиции в индикаторе выполнения процесса. Наконец, запускается новый поток, который будет выполнять зафузку.

Необходимо выполнять функцию downloadO В собственном потоке, потому что система сообщений Windows предполагает, что управление будет ей возвращено относительно быстро (т. е. функция DialogFunc () не может совер-шать продолжительные действия, препятствующие обработке новых сообщений). Точка входа потока - функция distarto. Как объяснялось в главе 3, в системе Windows все потоковые функции принимают только один параметр типа void *. В нем можно передать любую информацию, необходимую функции. В данном случае он получает указатель на структуру ti, содержащую три поля: url, reload и hPBStart. На URL-адрес зафузки указывает поле url. Состояние переключателя Reload хранится в поле reload. Оно определяет, будет ли файл зафужаться из Интернета целиком. Дескриптор кнопки Start содержится в поле hPBStart. Он используется функцией distarto для того, чтобы сделать кнопку Start недоступной, как только началась зафузка, и снова доступной после завершения зафузки. Функция distarto вызывает функцию downloadO для выполнения загрузки файла из Интернета. При этом она передает в параметре update адрес функции showprogress о. Когда функция downloadO заканчивает работу, становится доступной кнопка Start и закрывается дескриптор потока. Функция showprogress о вызывается функцией downioado для отображения выполнения процесса зафузки. Она просто увеличивает полосу индикации каждый раз, когда загружен очередной процент объема файла.



задания для самостоятельной работы

jacc Download МОЖНО усовершенствовать. Первое, что вы можете попробо-рзть сделать, - добавить возможность загрузки файлов, заданных FTP-здресами (т. е. доступ к которым возможен по протоколу FTP). Поскольку функция Internetopenurl () поддерживает протокол FTP, это довольно дростая задача. Хотя версия 1.0 протокола HTTP встречается все реже, вы цожете попытаться включить ее поддержку в программу. Это легко сделать, как потребуется только реализация единственного режима зафузки - считывания целого файла. Полезно также сделать класс Download способным извлекать список файлов. Можно, например, читать список URL-адресов из файла на диске. И, наконец, возможно вы захотите добавить автоматически выполняемую операцию retry (повторное выполнение), которая будет пытаться завершить прерванную зафузку.

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




Глава 6

финансовые расчеты в С++

Несмотря на обилие больших и сложных приложений, таких как компиляторы, интернет-браузеры, текстовые редакторы, базы данных и бухгалтерские пакеты, доминирующих в мире программного обеспечения, до сих пор сохранился класс небольших, но полезных профамм. Они предназначены Д1Я выполнения различных финансовых вычислений: расчета регулярных платежей по ссуде (или кредиту), определения будущей величины вложения (инвестиции) или текущего долга по ссуде. Хотя эти вычисления достаточно просты и не требуют большого объема кода, информация, которую они предоставляют, может быть полезной.

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

Для того чтобы продемонсфировать легкость, с которой С++ справляется с финансовыми расчетами, в этой главе описано несколько коротких программ, предназначенных для выполнения следующих вычислений: О регулярные выплаты по ссуде; О будущая величина инвестиции;

О первоначальное вложение денег, необходимое для получения в будущем заданной суммы;

О сумма вложения, необходимая для получения заданного аннуитета;

АННУИТЕТ - периодически уплачиваемая денежная сумма (взнос, рента, доход). страховом деле АННУИТЕТ означает причину ежегодных выплат по страхованию Ренты или пенсий. АННУИТЕТОМ также является ежегодная денежная сумма определенного размера, выплачиваемая кредитору в погашение полученного от него займа, включая проценты (Финансовый словарь на сайте http: dic.acaderaic.ru). - Пер.



1 ... 71 72 73 [ 74 ] 75 76 77 ... 156

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика