Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Создание программы для загрузки файлов из Internet↑ ⇐ ПредыдущаяСтр 10 из 10 Содержание книги
Поиск на нашем сайте
С возможностью последующей дозагрузки Общие сведения Обзор программ для загрузки файлов из сети Internet В настоящее время существует множество программ для загрузки файлов из сети Internet. Например GetRight, Reget, Flashget и другие. Все они занимают первые места в рейтингах и продаются за немалые деньги. Аналогичную программу можно написать с использованием языка программирования Delphi. Возможности библиотеки Wininet Библиотека Wininet содержит следующие функции, которые будут использоваться программой для загрузки файлов из Internet с возможностью последующей дозагрузки: 1 Функция InternetOpen (lpszAgent: PChar; dwAccessType: DWORD; IpszProxyName, IpszProxyBypass: PChar; dwRags: DWORD): HINTERNET. Эта функция открывает интернет-сессию для приложения. Функция имеет следующие аргументы: - lpszAgent – имя программы; - dwAccessType – способ соединения (PRE_CONFIGJNTERNET_ACCESS – как в реестре, INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY – не использовать internet setup file, GATEWAY INTERNET ACCESS – через шлюз, CERN_PROXYJNTERNET_ACCESS – через прокси-сервер); - IpszProxyName – имя прокси-сервера; - pszProxyBypass – ограничения прокси-сервера; - dwRags – режим работы (для простоты использования этот аргумент равен 0). 2 Функция lnternetOpenUrl (hinet: HINTERNET; IpszUrl: PChar; IpszHeaders: PChar; dwHeadersLength: DWORD; dwFlags: DWORD; dwContext: DWORD): HINTERNET. Эта функция открывает заданный URL. Функция имеет следующие аргументы: - hinet – переменная типа HINTERNET, ее значение возвращает функция InternetOpen; - IpszUrl – URL; - IpszHeaders – дополнительные строки в HTTP запросе; - dwHeadersLength – длина дополнительных строк. 3 Функция lnternetReadFile (hFile: HINTERNET; IpBuffer: Pointer; dwNumberOfBytesToRead: DWORD; var IpdwNumberOfBytesRead: DWORD): BOOL. Эта функция читает удаленный файл. Функция имеет следующие аргументы: - hFile – значение предыдущей функции; - IpBuffer – буфер, через который будет читаться файл, т.к. буфер это массив, то файл читается кусками, равными размеру этого массива объемом 1024 байта, т.е. один килобайт; - dwNumberOfBytesToRead – какое количество байт необходимо прочесть, он должен быть равен размеру массива, т.е. 1024; - IpdwNumberOfBytesRead – сколько действительно байт прочитано. 4 Функция InternetSetFilePointer (hFile: HINTERNET; IDistanceToMove: Longint; pReserved: Pointer; dwMoveMethod, dwContext: DWORD): DWORD; stdcall. Эта функция сдвигает позицию чтения файла на заданное число байт. Другими словами, если надо прочитать файл не с начала, а с отметки 1000 байт, то надо пользоваться InternetSetFilePointer. Функция имеет следующие аргументы: - hFile – значение предыдущей функции. - IDistanceToMove – на какое количество байт смещать указатель; - pReserved – резерв, а само значение должно быть равно нулю; - dwMoveMethod – способ смещения (FILE_BEGIN – с начала; FILE_END – с конца; FILECURRENT – с текущей позиции). - dwContext – значение этого параметра должно быть равно 0. Указанная функция и будет обеспечить «докачку» файлов из сети. Если команда прервется, например, на отметке 1,2 Мб, то программа позволит вернуться на нужную позицию и продолжить скачивание с момента прерывания связи с сетью. 5 Функция InternetQueryDataAvailable (hFile: IpdwNumberOfBytesAvailable: DWORD; dwFlags, dwContext: DWORD): BOOL; stdcall; HINTERNET. Эта функция выясняет объем доступных данных, т. е. размер запрашиваемого файла. Функция имеет следующие аргументы: - hFile – рассматривалась выше; - IpdwNumberOfBytesAvailable – указывает доступные байты. 6 Функция InternetCloseHandle (hInet: HINTERNET): BOOL; stdcall. Эта функция закрывает интернет-сессию. Задание на работу Необходимо разработать программу, обеспечивающую загрузку файлов из сети Internet по указанному URL адресу с последующей дозагрузкой. 7.2.3. Выполнение задания на работу В первую очередь необходимо создать новую форму. С целью разработки программы, обеспечивающей загрузку файлов из сети Internet по указанному URL адресу, необходимо воспользоваться ресурсами библиотеки Wininet. Следует прописать эту библиотеку в строке использования ресурсов, как указано на рисунке 206. Рисунок 206 – Запись библиотеки Wininet На созданной форме необходимо расположить следующие компоненты: - TButton с вкладки на панели инструментов Standard – 4 штуки; - TEdit с вкладки на панели инструментов Standard – 2 штуки; - TSaveDialog с вкладки на панели инструментов Dialogs – 1 штука; - Tlabel с вкладки на панели инструментов Standard – по мере необходимости создания подписей ранее вынесенных на форму компонентов. Вид формы с необходимыми элементами представлен на рисунке 207. Рисунок 207 – Вид формы с необходимыми элементами На представленной форме компонент TSaveDialog необходим для вызова окна сохранения файла. Для вызова этого окна необходимо в обработчике событий кнопки[32] прописать код, как показано на рисунке 208. Рисунок 208 – Код для вызова окна сохранения файла После нажатия на кнопку для сохранения откроется окно сохранения файла, представленное на рисунке 209. Рисунок 209 – Окно сохранения файла В разделе объявления переменных необходимо ввести логическую переменную stop, которая отвечает за остановку загрузки. На рисунке 210 представлен соответствующий программный код. Рисунок 210 – Программный код с вводом переменной stop Для остановки работы программы и выхода из нее необходимо создать обработчик события для кнопок Button 2 и Button 3 соответственно. Код представлен на рисунке 211. Рисунок 211 – Код остановки закачки и выхода из программы Далее, когда вспомогательные события работы программы исполнены необходимо, в обработчике события (OnClick) кнопки Button1 прописать код, представленный на рисунке 212. Рисунок 212 – Программный код для загрузки файлов из сети В представленном коде после слова begin и до hInet:= InternetOpen ('Закачка',PRE_CONFIG_INTERNET_ACCESS,nil,nil,0); описывается файл, куда будет произведена загрузка, проверка его наличия на жестком диске и если он существует, то продолжение записи. Далее следует создание Интернет сессии и проверка на узле файла по заданному URL адресу. Если часть файла уже загружалась ранее, включается функция InternetSetFilePointer(hURL, RestartPos, nil,0,0), которая позволяет продолжение загрузки файла с выбранной позиции. Следующий шаг, начинающийся с repeat, – процесс считывания файла в буфер с последующей записью на диске. Этот процесс продолжается до тех пор, пока размер информации, считываемый буфером, не будет равен 0 или не будет активирована переменная stop. В ходе цикла выполняется функция отображения количества информации, записанная в строке label1.Caption:=floattostr(filesize(F) div 1000)+' КБАЙТ'. После завершения цикла Интернет-сессия и записанный файл закрываются, и появляется сообщение, информирующее о причине остановки загрузки. Переменные, используемые в программе: hInet: HINTERNET – переменная, содержащая указание на сессию; hURL: HINTERNET – переменная, содержащая указание на URL адрес; fSize: DWORD – переменная, содержащая размер файла на диске; ReadLen: DWORD – переменная, содержащая количество прочитанных байт; RestartPos: DWORD – переменная позиции, с которой начинается загрузка; fBuf: array[1..1024] of byte – переменная буфера; f: file – файловая переменная; Header: string – дополнительная переменная в HTTP; err: boolean – переменная сообщения об ошибке. 7.2.4 Контрольные вопросы 1 Каким образом осуществляется загрузка файла? 2 Какую библиотеку целесообразно использовать для осуществления процесса загрузки файлов из сети Интернет? 3 Какая функция отвечает за продолжение загрузки файлов? 4 За что отвечает функция InternetQueryDataAvailable? 5 Что такое URL-адрес? 6 Что обозначает функция Filesize(f)? 7 Для чего необходим компонент TSaveDialog? 8 Как осуществляется процесс дозагрузки файла в случае прерывания контакта с сетью? 9 Какой размер буфера в представленной программе? 10 Какой принцип работы кнопки «Стоп»?
Список литературы 1. Архангельский А. Я. Программирование в Delphi. М.: Бином, 2001. 410 с. 2. Бобровский С. Delphi 5: Учебный курс. СПб: «Питер», 2001. 552 с. 3. Дарахвелидзе П., Марков Е. Delphi 4. СПб: Питер, 2001. 436 с. 4. Фаронов В. Система программирования Delphi. СПб: БХВ-Петербург, 2005. 892 с.
Приложение А Тесты для самоконтроля 1 Какой компонент в системе Delphi используются для создания заголовков: а) Label; б) Memo; в) RadioGroup; г) Button?
2 В какой параметр Инспектора объектов при использовании компонента RadioGroup вводятся варианты ответа: а) Unite; б) Items; в) Lines; г) Scrollbars?
3 Что произойдет, если в Инспекторе объектов переключиться на закладку События и кликнуть два раза мышью в событии OnClic: а) создастся новая форма; б) закроется главная форма; в) откроется процедура для внесения кода; г) запустится процесс компиляции проекта?
4 Какой процесс представлен на фрагменте кода: а) создание формы 2; б) описание переменных к форме 2; в) закрытие формы 2; г) связь текущей формы с формой 2 д) скрытие формы 2?
5 Какой процесс представлен на фрагменте кода: а) создание формы 2; б) описание переменных к форме 2; в) закрытие формы 2; г) связь текущей формы с формой 2; д) скрытие формы 2? 6 Какое слово в системе Delphi позволяет вызвать сообщение: а) showmodal; б) showmessage; в) starttofloat; г) strtoint?
7 Какой вид будет иметь строка в случае, если требуется использовать для дальнейших действий первое значение в объекте radiogroup1: а) if radiogroup1.ItemIndex= 0.0 then; б) if radiogroup1.ItemIndex=0 then; в) if radiogroup1.ItemIndex=1 then; г) if radiogroup1.ItemIndex=2 then;?
8 Что представляют собой параметры 1, 2 в процедуре AssignFile (параметр 1, параметр 2): а) путь к файловой переменной, ее имя; б) имя файловой переменной, длину записи нетипизированного файла в байтах; в) имя файловой переменной, путь к ней; г) длину записи нетипизированного файла в байтах, имя файловой переменной?
9 Какая процедура используются для открытия файла в режиме чтения: а) Rewrite; б) Reset; в) Seek; г) Close?
10 Что означает строка кода label2.caption:=floattostr(В): а) в компонент label2 выведется значение переменной В; б) компонент label2 не зависит от значения переменной В; в) значение переменной В вводится через компонент label2; г) строка кода не верна с точки зрения синтаксиса языка ObjectPascal?
11 Какая процедура позволяет открыть файл, не стирая его содержимое: а) Append (var F, Text); б) AssignPrtnt (var F, Text); в) Erase (var F, Text); г) AssignFile (F, ‘C:\delo.txt’);? 12 Какая функция позволяет определить конец файла: а) if б) case; в) eof; г) end?
13 Что позволяет выполнить строка кода memo1.Lines.LoadFromFile(a): а) загрузку содержимого компонента memo1 в файл; б) создание типизированного файла; в) создание нетипизированного файла; г) загрузку данных из файла в объект TMemo1?
14 Возможно ли перевести переменную из строкового типа в числовой тип: а) можно строкой кода memo1.Text:=floattostr(zn); б) можно строкой кода zn:=zn*(-1); в) можно строкой кода zn:=strtofloat(memo1.Text); г) не возможно?
15 Какая палитра содержит компоненты, позволяющие быстро и легко обращаться к наиболее популярным офисным приложениям компании Мicrosoft: а) Services; б) Standard; в) BDE г) Win32 д) dbGo?
16 Какой компонент отвечает за запуск текстового процессора Word: а) TWordApplication; б) TWordDocument; в) AutoConnect; г) AutoQuit?
17 Для чего необходим компонент ТOpenDialog: а) для запуска текстового процессора; б) для запуска табличного процессора; в) для сохранения текста, внесенного в созданный файл; г) для открытия стандартного окна с существующими каталогами? 18 Какое из свойств связано с компонентом TExcelWorkbook: а) ConnectKind; б) TExcelApplication; в) OleVariant; г) ExcelWorkbook1.PrintOut?
19 Какой компонент отвечает за работу с диаграммами в системе Delphi: а) Series; б) Chart; в) Clear; г) Show?
20 Что является элементом пузырьковой диаграммы в системе Delphi: а) вar; б) рie; в) вubble; г) line?
21 Какой процесс осуществляется посредством представленного фрагмента кода программы: if k=0 then memo1.Text:=Memo1.Text+'1' else memo1.Text:='1'; k:=0; end; а) ввод цифр в поле ТMemo; б) операция сложения чисел; в) процедура записи десятичной дроби в поле ТMemo; г) процедура ввода отрицательного числа в поле ТMemo?
22 Какой оператор пропущен в представленном фрагменте кода: procedure TForm2.Button20Click(Sender: TObject); begin x:=strtofloat(memo1.Text); …………. 1: begin y:=y+((y*x)/100); end; 2:begin y:=y-((y*x)/100); end; 3: y:=(y*x)/100; end; memo1.Text:=floattostr(y); k:=1; end; а) if; б) case of; в) while; г) repeat until?
23 Какая операция выполнится, если переменная pr принимает значение, равное 1, в представленном фрагменте кода procedure TForm2.Button20Click(Sender: TObject); begin x:=strtofloat(memo1.Text); case pr of 1: begin y:=y+((y*x)/100); end; 2:begin y:=y-((y*x)/100); end; 3: y:=(y*x)/100; end; memo1.Text:=floattostr(y); k:=1; end; а) вычисляется процент от числа; б) вычитание из введенного числа процента; в) прибавление к введенному числу процента?
24 Какой компонент позволяет визуализировать таблицы базы данных на форме приложения: а) ADOConnection; б) ADOTable; в) DataSource; г) DBGrid д) DataModule?
25 Какие категории свойств в Инспекторе объектов присущи компоненту ADOTable: а) Database; б) Input; в) Linkage; г) Miscellaneous?
26 Что представляет собой запись Microsoft Jet 4.0 OLE DB Provider: а) свойство компонента ADOConnection; б) название палитры компонентов; в) функция для работы с приложениями по технологии СОМ; г) ADO драйвер для доступа к базам данных?
27 Как называется специальное окно, куда можно перенести все компоненты доступа к базе: а) ADOConnection; б) ADOTable; в) DataSource; г) DBGrid д) DataModule?
28 Что представлено на рисунке: а) окно DataModule; б) окно редактирования полей таблицы базы данных; в) окно для ввода записей в таблицу базы данных; г) форма, созданная в системе Delphi?
29 Какое из перечисленных свойств позволяет установить ширину колонки, содержащей поле таблиц базы данных: а) Visible; б) DisplayWidth; в) DefaultExpression; г) ReadOnly; д) Required?
30 Какой процесс выполнится при обработке представленной строки кода Datamodule2.Sved_o_rab.Insert: а) приложение обратится к окну Datamodule2, к таблице Сведения о работниках и добавит в этой таблице еще одно поле; б) приложение обратится к окну Datamodule2, к таблице Сведения о работниках и добавит в этой таблице строку для ввода записи; в) приложение обратится к окну Datamodule2, к набору таблиц базы данных добавится таблица Сведения о работниках; г) приложение обратится к окну Datamodule2, к схеме данных базы добавится таблица Сведения о работниках?
31 Какое сочетание клавиш позволит удалить записи из таблицы базы данных через приложение а) Ctrl + Delete; б) Ctrl + Backspace; в) Insert + Delete; г) Insert + Backspace?
32 Какой процесс представлен на рисунке: а) добавление записи в одну из таблиц базы данных; б) удаление записи из таблицы базы данных; в) фильтрация данных по полю ФИО; г) добавление поля в одну из таблиц базы данных; д) удаление поля в одну из таблиц базы данных?
33 Какой фрагмент кода позволит выполнить фильтрацию данных по полю ФИО после введения нужной информации в поле Edit и нажатия кнопку, являющуюся соответствующим обработчиком событий: а) datamodule2.Sved_o_rab.Filtered:=true; datamodule2.Sved_o_rab.Filter:='ФИО='''+edit1.Text+''''; б) datamodule2.Sved_o_rab.Filtered:=true; datamodule2.Sved_o_rab.Filter:=''+edit1.Text+''; в) datamodule2.Sved_o_rab.Filtered:=false; datamodule2.Sved_o_rab.Filter:='ФИО='''+edit1.Text+''''; г) datamodule2.Sved_o_rab.Filtered:=true; datamodule2.Sved_o_rab.Filter:='ФИО='';
34 Для чего необходим компонент TSaveDialog: а) для связи приложения с программами, являющимися серверами COM; б) для сохранения кода формы; в) для сохранения дизайна формы; г) для вызова окна сохранения файла?
35 Какой тип должна иметь переменная, отвечающая за остановку загрузки файла при его скачивании из сети: а) real; б) integer; в) string; г) boolean?
36 Что представляет собой компонент ServerSocket с закладки Internet: а) файловый сервер; б) сервер на основе протокола HTTP; в) сервер на основе протокола TCP; г) возможность создания хоста?
37 Какой процесс осуществляется представленным фрагментом программы procedure TForml.FormDistroy(Sender: TObject; var Action: TCloseAction); begin ServerSocket1.Active:=false; end; а) включение сервера, что автоматически открывает порт; б) остановка процесса скачивания файла в любой момент времени; в) отключение сервера, что автоматически закрывает порт; г) возобновление процесса скачивания файла в любой момент времени?
38 Какая функция позволяет операционной системе Windows свернуться и выключить компьютер а) Eof; б) Subtract; в) ExitWindowsEx; г) InternetOpen д) lnternetReadFile?
39 Какая строка кода программы позволяет отображать количество скаченной информации а) label1.Caption:=floattostr(filesize (F) div 1000)+' КБАЙТ'.; б) label1.Caption:=floattostr(filesize (F) div 1000); в) label1.Caption:=floattostr filesize (F) +' КБАЙТ'.; г) label1.Caption:=floattostr(filesize (F) mod 1000)+' КБАЙТ'.;?
40 Что означает значение 1000 свойства Port компонента ServerSocket: а) возможность передать по сети файл объемом не более 1000 Кб; б) при подключении к серверу процесс ожидания продлиться 1000 миллисекунд или 1 секунда; в) разработанное сетевое программное обеспечение позволит передать по сети не более 1000 файлов; г) скорость передачи файла составит не менее 1000 Мбит/с?
Приложение 2
|
||||
Последнее изменение этой страницы: 2017-02-19; просмотров: 424; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.226.52.26 (0.008 с.) |