Розробка мережевої бібліотеки засобами середовища Delphi
Транспортні послуги мережевого протоколу ТСР/ІР. Розгляд понять IP-адреси, UDP-портів, потоків даних, команди ping. Властивості компонент TcomboBox, TSession, TDatabase, TTable, TDataSource. Використання растрових редакторів для обробки графічних файлів.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 13.06.2010 |
Размер файла | 38,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
1
Розробка мережевої бібліотеки засобами середовища Delphi
(курсова робота)
§1.Мережевий протокол ТСР/ІР
Мережею називається сукупність комп'ютерів (вузлів, станцій), які мають можливість взаємодіяти один з одним за допомогою апаратних засобів та мережевого програмного забезпечення.
Кожна мережа зв'язку містить у собі: кінцеві абонентські пункти, що містять пристрій або комплекс пристроїв, за допомогою яких абонент може обмінюватися інформацією (наприклад, телефонний апарат або термінал для передачі і прийому даних від (до) ЕОМ), або тільки приймати інформацію (радіо і телевізійні приймачі); місцеві комутаційні станції, до яких за допомогою ліній зв'язки підключені абонентські пункти і сусідні місцеві станції, а також мережні вузли комутації, що поєднують місцеві станції. Просторове розміщення технічних засобів разом з інформаційними зв'язками між ними складає структуру мережі зв'язку. Територіально близькі мережні вузли поєднуються в зони. У кожній зоні виділяються один або кілька головних мережних вузлів, з'єднаних із головними вузлами інших зон мережі.
Протокол TCP надає транспортні послуги, що відрізняються від послуг UDP. Замість ненадійної доставки датаграмм без установлення з'єднань, він забезпечує гарантовану доставку з установленням з'єднань у виді байтовых потоків.
Протокол TCP використовується в тих випадках, коли потрібно надійна доставка повідомлень. Він звільняє прикладні процеси від необхідності використовувати таймауты і повторні передачі для забезпечення надійності. Найбільш типовими прикладними процесами, що використовують TCP, є FTP (File Transfer Protocol - протокол передачі файлів) і TELNET. Реалізація TCP вимагає великої продуктивності процесора і великої пропускної здатності мережі. Внутрішня структура модуля TCP набагато складніше структури модуля UDP.
Прикладні процеси взаємодіють з модулем TCP через порти. Для окремих додатків виділяються загальновідомі номери портів.
Коли прикладний процес починає використовувати TCP, те модуль TCP на машині клієнта і модуль TCP на машині сервера починають спілкуватися. Ці два оконечных модулі TCP підтримують інформацію про стан з'єднання, називаного віртуальним каналом. Цей віртуальний канал споживає ресурси обох оконечных модулів TCP. Канал є дуплексним; дані можуть одночасно передаватися в обох напрямках. Один прикладний процес пише дані в TCP-порт, вони проходять по мережі, і інший приклад ний процес читає їх зі свого TCP-порту.
Протокол TCP розбиває потік байт на пакети; він не зберігає границь між записами. Наприклад, якщо один прикладний процес робить 5 записів у TCP-порт, те прикладний процес на іншому кінці віртуального каналу може виконати 10 читань для того, щоб одержати всі дані. Але цей же процес може одержати всі дані відразу, зробивши тільки одну операцію читання. Не існує залежності між числом і розміром записуваних повідомлень з однієї сторони і числом і розміром повідомлень, що зчитуються, з іншої сторони.
Протокол TCP вимагає, щоб усі відправлені дані були підтверджені їх стороною, що прийняла. Він використовує таймауты і повторні передачі для забезпечення надійної доставки. Відправнику дозволяється передавати деяка кількість даних, не чекаючи підтвердження прийому раніше відправлених даних. Таким чином, між відправленими і підтвердженими даними існує вікно уже відправлених, але ще непідтверджених даних. Кількість байт, який можна передавати без підтвердження, називається розміром вікна. Як правило, розмір вікна встановлюється в стартових файлах мережного програмного забезпечення. Тому що TCP-канал є дуплексним, то підтвердження для даних, що йдуть в одному напрямку, можуть передаватися разом з даними, що йдуть у протилежному напрямку. Приймачі на обох сторонах віртуального каналу виконують керування потоком переданих даних для того, щоб не допускати переповнення буферів.
Кадр Ethernet містить адреса призначення, адреса джерела, поле типу і дані. Розмір адреси в Ethernet - 6 байт. Кожен мережний адаптер має своя Ethernet-адреса. Адаптер контролює обмін інформацією.
Для IP-пакетів, що відправляються, що надходять від модулів верхнього рівня, модуль IP повинний визначити спосіб доставки - чи прямої непрямий - і вибрати мережний інтерфейс. Цей вибір робиться на підставі результатів пошуку в таблиці маршрутів.
Для прийнятих IP-пакетів, що надходять від мережних драйверів, модуль IP повинний вирішити, потрібно чи ретранслювати IP-пакет по іншій чи мережі передати його на верхній рівень. Якщо модуль IP вирішить, що IP-пакет повинен бути ретрансльований, то подальша робота з ним здійснюється також, як з IP-пакетами, що відправляються.
Вхідний IP-пакет ніколи не ретранслюється через той же мережний інтерфейс, через який він був прийнятий.
Рішення про маршрутизацію приймається до того, як IP-пакет передається мережному драйверу, і до того, як відбувається звертання до ARP-таблиці.
IP-адреса
Менеджер мережі привласнює IP-адреси машинам відповідно до того, до яких IP-мереж вони підключені. Старші біти 4-х байтного IP-адреси визначають номер IP-мережі. Частина IP-адреси, що залишилася - номер вузла (хост-номер). Для машини з табл.1 з IP-адресою 223.1.2.1 мережний номер дорівнює 223.1.2, а хост-номер - 1. Нагадаємо, що IP-адреса вузла ідентифікує крапку доступу модуля IP до мережного інтерфейсу, а не всю машину.
Порти
Взаємодія між прикладними процесами і модулем UDP здійснюється через UDP-порти. Порти нумеруються починаючи з нуля. Прикладний процес, що надає деякої послуги іншим прикладним процесам (сервер), очікує надходження повідомлень у порт, спеціально виділений для цих послуг. Повідомлення повинні містити запити на надання послуг. Вони відправляються процесами-клієнтами.
Дані, що відправляються прикладним процесом через модуль UDP, досягають місця призначення як єдине ціле. Наприклад, якщо процес-відправник робить 5 записів у UDP-порт, то процес-одержувач повинен буде зробити 5 читань. Розмір кожного записаного повідомлення буде збігатися з розміром кожного прочитаних. Протокол UDP зберігає границі повідомлень, обумовлені прикладним процесом. Він ніколи не поєднує кілька повідомлень в одне і не поділяє одне повідомлення на частині.
Логічна структура мережного програмного забезпечення, що реалізує протоколи сімейства TCP/IP у кожнім вузлі мережі internet, зображена на мал.1. Прямокутники позначають обробку даних, а лінії, що з'єднують прямокутники, - шляху передачі даних. Горизонтальна лінія внизу малюнка позначає кабель мережі Ethernet.
Потоки даних
Розглянемо потоки даних, що проходять через стек протоколів. У випадку використання протоколу TCP (Transmission Control Protocol - протокол керування передачею), дані передаються між прикладним процесом і модулем TCP. Типовим прикладним процесом, що використовує протокол TCP, є модуль FTP (File Transfer Protocol - протокол передачі файлів). Стік протоколів у цьому випадку буде FTP/TCP/IP/ENET. При використанні протоколу UDP (User Datagram Protocol - протокол користувальницьких датаграм), дані передаються між прикладним процесом і модулем UDP. Наприклад, SNMP (Simple Network Management Protocol - простий протокол керування мережею) користається транспортними послугами UDP. Його стік протоколів виглядає так: SNMP/UDP/IP/ENET.
Коли Ethernet-кадр попадає в драйвер мережного інтерфейсу Ethernet, він може бути спрямований або в модуль ARP (Address Resolution Protocol - адресний протокол), або в модуль IP (Internet Protocol - міжмережевий протокол). На те, куди повинний бути спрямований Ethernet-кадр, указує значення полючи типу в заголовку кадру.
Якщо IP-пакет попадає в модуль IP, то дані, що містяться в ньому, можуть бути передані або модулю TCP, або UDP, що визначається полем "протокол" у заголовку IP-пакета.
Якщо UDP-датаграма попадає в модуль UDP, то на підставі значення полючи "порт" у заголовку датаграми визначається прикладна програма, який повинне бути передане прикладне повідомлення. Якщо TCP-повідомлення попадає в модуль TCP, то вибір прикладної програми, який повинне бути передане повідомлення, здійснюється на основі значення полючи "порт" у заголовку TCP-повідомлення.
Дані від прикладного процесу проходять через модулі TCP чи UDP, після чого попадають у модуль IP і відтіля - на рівень мережного інтерфейсу.
Команда ping
Команда ping служить для примусового виклику відповіді конкретної машини. Для цього використовується дейтаграмма ECHO_REQLEST протоколу ICMP. Це протокол низького рівня, що не вимагає наявності серверних процесів на зондуючій машині; це гарний спосіб переконатися в тім, що харчування машини включене і вона не відмовила. Успішний результат команди ping не обов'язково означає, що виконуються якісь сервісні програми високого рівня.
Якщо команда ping використовується для зондування машини, про яку відомо, що вона включена і працює, цей гарний засіб перевірки правильності конфігурації мережі. При виконанні команди ping присутні система маршрутизації, схеми дозволу адрес і мережні шлюзи тому для досягнення успішного результату мережа повинна бути в більш або менш робочому стані. Якщо команда ping не працює, Ви можете бути зовсім упевнені в тім, що більш складні засоби тим більше нс функціонують. Незважаючи на свою простоту, ping -- одна з головних "робочих конячок", що використовуються при налагодженні мереж.
§2.Компонент TcomboBox
TObject-->TPersistent->TComponent--"TControl--"TWinControl-->
-->TCustomCornboBox-->TcomboBox.
Модуль STDCTRLS
Сторінка Палітри компонентів Standard.
Цей стандартний елемент керування Windows -- комбінований список --- має багато загального з TListBox. Він складається з власне списку і поміщеного поруч полючи введення елемента, що редагує. Таким чином, користувач може вибрати одне з готових значень якоїсь чи величини увести своє. Стиль компонента в частині правил взаємного сполучення списку і редактора визначається властивістю:
(РЕ) property Style: TComboBoxStyle;
TComboBoxStyle = (csDropDown, csSimple, csDropDownList,
csOwnerDrawPixed, сsоvnеrDrаwVаrіаblе) ;
Його значення мають наступний сенс:
csSimple -- весь список видний увесь час. Поточний вибір відображається в редакторі, його можна змінити;
csDropDown -- список відкривається (випадає) і ховається при натисканні кнопки, розташованої праворуч від тексту.
csDropDownList -- список випадаючий, але елемент, що редагує, замінений статичним текстом і уводити свої дані користувач не може;
csOwnerDrawFixed -- визначений користувачем стиль списку з постійною висотою елемента;
csOwnerDrawVariable -- визначений користувачем стиль списку з перемінною висотою елемента.
Принципи користувальницької зображення списку для csOwnerDrawFixed і csOwnerDrawVariable, а також зв'язані з цим методи і події залишилися такими ж, як у TListBox. За замовчуванням установлюється сталь csDropDown. Організація списку також подібна з попередньої. Приведені властивості і методи мають те ж призначення:
(Pb) property Items: TStrings;
property Itemlndex: Integer;
procedure Clear;
(Pb) property Sorted: Boolean;
(Rc) property Canvas: TCanvas;
Текст, що міститься в елементі списку, що редагує, доступний через властивість:
(g5) property Text: TCaption;
Його максимальна довжина обмежена числом символів, рівним значенню властивості:
(Рb) property MaxLength: Integer;
Якщо MaxLength дорівнює 0, то обмежень на довжину рядка немає (до 255 символів).
При зміні тексту (а також при зміні обраного елемента) виникає подія OnChange. Частина тексту може бути виділена. Три властивості містять виділений текст, його положення і довжину:
property SelText: strings-property SelStart: Integers-property SelLength: Integer;
procedure SelectAll;
Метод виділяє весь текст.
property DroppedDown: Boolean;
Значення властивості відповідає стану списку: True відповідає відкритому ("випавшому") списку. З його допомогою можна чи показувати ховати список із програми. При зміні стану списку виникає подія:
(Pb) property OnDropDown: TNotifyEvent ;
Максимальне число елементів, що показуються при випаданні списку:
(Pb) property DropDownCount: integer;
Таймер
TObject-->TPersistent-->TCoinponent-->TTimer
Модуль EXTCTRLS. Сторінка Палітри компонентів System
Цей невізуальний компонент призначений для повідомлення програми про витікання визначених проміжків часу. Компонент інкапсулюу системний таймер Windows і працює через посилку повідомлень WM_TIMER.
Властивість. (Pb) property Enabled: Boolean;
Метод включає/виключає таймер, впливаючи на генерацію їм подій. Будучи встановлений у Enabled, таймер починає генерувати події OnTimer через інтервал часу який виміряється в мілісекундах. Після кожного витікання такого інтервалу ініціюється оброблювач, зв'язаний з подією:
(РЬ) property Interval: Word;
(Pb) property OnTimer: TNotifyEvent;
При цьому програміст одержує черговий квант часу.
При активізації і деактивізації чи таймера зміні інтервалу в системі може не виявитися вільних таймерів. У цьому випадку генерується виняткова ситуація EOutOfResources.
Компонент TSession
TObject-->TPersistent->TConiponent->TSession.
Здійснює загальне керування процесом зв'язування бази даних з додатком. Він відсутній у Палітрі компонентів Delphi і створюється автоматично при виконанні додатка, при цьому йому привласнюється ім'я Session. Об'єкт володіє поруч методів, що дозволяють одержувати і використовувати інформацію про зв'язки з базою даних. Усі властивості об'єкта доступні тільки при виконанні додатка й у режимі "Тільки для читання". Виключення складають властивості KeepConnections, NetFileDir і PrivateDir, значення яких можна змінювати.
ВЛАСТИВОСТІ КОМПОНЕНТУ
(Rd) property DatabaseCount: Integer; |
Визначає число екземплярів компонента TDatabase, використовуваних у додатку в даний час. |
|
(Rd property Databases[Index: Integer]: TDatabase; |
Містить список всіх екземплярів компоненту TDatabase, що використовуэться програмою в даний час. |
|
(Ro) property Handle: HDBISES; property KespConnections: Boolean; |
Дескриптор компонента, використовується для організації прямого доступу до функцій API BDE. Визначається режим з'єднання з базою даних. В значенні True з'єднання буде підтримуватися до завершення додатку або виклику методу DropConnection. В значенні False з'єднання переривається зразу ж після закриття всіх наборів даних відкритою бази. |
|
(Ro) property Locale: TLocale; TLocale = Pointer; |
Містить інформацію про мовний драйвер BDE. |
|
property NetFileDir: String; |
Визначає каталог, що містить мережний файл керування BDE -- PDOXUSRS.NET, призначений для з'єднання з таблицями Paradox. |
|
property PrivateDir: String; |
Визначає каталог, що зберігає тимчасові файли. |
МЕТОДИ КОМПОНЕНТУ
procedure AddPassword(const Password: String); |
Дозволяє задати пароль для доступу до таблиць Paradox. |
|
procedure CloseDatabase(Database: TDatabase) ; |
Закриває компонент TDatabase, ідентифікований по параметрі Database. |
|
procedure DropConnections; |
Перериває всі з'єднання з неактивними базами даних (не мають відкритих додатком наборів даних). |
|
function FindDatabase(const DatabaseName: String): TDatabase; |
Проводить пошук компонента бази даних у списку властивості Databases по імені, що задається параметром методу. Повертає покажчик на екземпляр компонента TDatabase. |
|
procedure GetAliasNames(List: TStrings); |
Очищає список, переданий у параметрі List методу і заповнює його іменами усіх визначених у BDE псевдонімів. |
|
procedure GetAliasParams(const AliasName: String; List: TStrings); |
Очищає і заповнює список List параметрами псевдоніма, що задається параметром AliasName. |
|
procedure GetDatabaseNames(List: TStrings) ; |
Повертає список List імен усіх баз даних, визначених у BDE і додатку. |
|
procedure GetDriverNames(List: TStrings) ; |
Очищає і заповнює список List, переданий параметром методу, іменами усіх встановлених у BDE драйверів. |
|
procedure GetDriverParams(const DriverName: String; List: TStrings) ; |
Очищає і заповнює список параметрами драйвера BDE. Параметр DriverName задає ім'я драйвера, параметр List визначає список. |
|
function GetPassword: Boolean; |
Показує стандартний діалог уведення пароля. Повертає True при натисканні кнопки ОК і False при натисканніCancel. |
|
procedure GetTableNames(const DatabaseName, Pattern: String; Extensions, SystemTables: Boolean; List: TStrings) ; |
Очищає список List і заповнює його іменами всіх таблиць бази даних, ім'я якої визначається параметром DatabaseName. Параметр Pattern задає шаблон добору імен таблиць. Параметр Extensions у стані True дозволяє додавати до імен таблиць розширення файлів. Параметр SystemTables у стані True дозволяє додавати до списку системні таблиці серверів SQL. |
|
procedure GetStoredProcNames(const TStrings) ; |
Заповнює список List іменами всіх збережених процедур для SQL-сервера, що задається параметром DatabaseName. |
|
function OpenDatabase(const DatabaseName: String): TDatabase; |
Відкриває існуючий компонент TDatabase чи створює новий, використовуючи параметр методу DatabaseName. Повертає покажчик на екземпляр компонента.Знищує всю раніше введену інформацію про паролі для Paradox. |
|
procedure RemovePasswordfconst Password: String); |
Видаляє пароль, обумовлений параметром Password методу для таблиць Paradox. |
Компонент TDatabase
TObject-"TPersistent->TComponent->TDatabase
Сторінка Палітри компонентів Data Access
Модуль DB не використовується при створюють звичайних додатків, що працюють з базами даних, однак незамінний у додатках клієнт/сервер. У його функції входять:
* установлення постійного зв'язку з базою даних;
* завдання параметрів сервера;
* створення локальних псевдонімів BDE;
* керування транзакціями.
ВЛАСТИВОСТІ КОМПОНЕНТА
(Pb) property AliasName: TSymbolStr; TSymbolStr = String[DBIMAXNAMELEN] ; DBIMAXNAMELEN = 31; |
Ім'я псевдоніма, заданого утилітою конфігурації BDE. Значення цієї властивості занулюється при установці властивості DriverName. Використовується для зв'язування з визначеним сервером. |
|
ipb) property Connected: Boolean; |
Керує процесом з'єднання компонента з базою даних. У стані True дозволяє з'єднання і відкриття таблиць. Працює спільно з властивістю Keep Connection. |
|
(Pb) property DatabaseName: TFileName; TFileName: String[79]; |
Задає псевдонім бази даних, що приєднується, для додатка, що може використовуватися компонентами наборів даних (TTable, TQuery) і відображається в їхній властивості DatabaseName. |
|
(Ro) property DatasetCount: Integer; |
Відбиває число компонентів наборів даних, використовуваних невізуальним компонентом TDatabase. |
|
(Ro) property Datasets[Index: Integer]: TDBDataset; |
Масив покажчиків на екземпляри компонентів приєднаних наборів даних. |
|
(Pb) property DriverName: TSymbolStr; |
Ім'я використовуваного додатком драйвера BDE. Це властивість занулюється при визначенні властивості AliasName. |
|
(ro) property Handle: HDBIDB; |
Показник на базу даних, використовується для прямого виклику функції API BDE. |
|
(Ro) property IsSQLBased: Boolean; |
Відбиває тип використовуваного драйвера, залежить від властивості DriverName. Стан True дозволяє використання будь-якого драйвера, крім STANDARD. |
|
(Pb) property KeepConnection: Boolean; |
У значенні True задає постійне з'єднання з базою даних навіть при відсутності відкритих наборів даних. При виключеній властивості для реєстрації на сервері необхідно користатися властивістю Connected для кожного відкриття таблиці. |
|
(Ro) property Locale: TLocale; |
Визначає використовуваний компонентом драйвер. Дозволяє здійснювати прямий доступ до API BDE. |
|
(Pb) property LoginPrompt: Boolean; |
У стандартному значенні True визначає, що при установці з'єднання з базою даних буде з'являтися діалогове вікно реєстрації користувача. У значенні False реєстраційні зведення повинні міститися в полях властивості Params. |
|
(Pb) property Params: TStrings; |
Містить параметри, необхідні для підключення до баз даних. За замовчуванням це значення властивості встановлюється у відповідність з інформацією утиліти конфігурації BDE. |
|
property Temporary: Boolean;(Pb) property Translsolation: TTransIeolation; |
Визначає спосіб створення компонента. True означає, що компонент створюється тільки при відкритті таблиці і буде знищений при її закритті. Якщо потім властивість установити в False, то компонент буде збережений. Якщо при створенні компонента властивість була встановлена в False, то перевизначення в True буде означати знищення компонента після закриття останньої таблиці.Визначає рівень ізоляції транзакції і використовується SQL-сервером. Значення tiDirtyRead дозволяє транзакції читати незавершені зміни, проведені іншою транзакцією; tiReadCommit відкриває доступ до змін після завершення транзакції; tiRepeatableRead цілком ізолює транзакцію. |
МЕТОДИ КОМПОНЕНТА
procedure Close; |
Від'єднує всі зв'язані з ним компоненти TTable TQuery і TStoredProc. |
|
procedure CloseDatasets; |
Від'єднує всі дочірні компоненти класу TDataSet, але сам компонент залишається відкритим. |
|
procedure Commit; |
Фіксує всі зміни, проведені транзакцією. Цей метод можна використовувати тільки при наявності зв'язку з базою даних. |
|
procedure Open; |
З'єднує компонент із чи сервером BDE у випадку використання СУБД Paradox чи dBase. |
|
procedure Rollback; |
Скасовує всі дії, зроблені транзакцією, тобто забороняє її фіксацію. |
|
procedure StartTransaction; |
Починає виконання транзакції, використовуючи рівень ізоляції з властивості Translsolation. Цей метод рекомендується використовувати тільки при наявності зв'язку з базою даних. |
Компонент TDataSource
TObject-->TPersistent-->TComponent->TDataSource
Сторінка Палітри компонентів Data Access
Модуль DB є сполучною ланкою між наборами даних, представлених компонентами TTable, TQuery і TStoredProc, і візуальними компонентами відображення і керування даними. Кожен набір даних повинний мати по меншій мері один компонентів TDataSource, тому що TTable і TQuery установлюють з'єднання з базою даних через BDE, але не уміють відображати отриману інформацію у формах додатка. Візуальні компоненти відображають дані, але не мають представлення про структуру переданих таблиць. Саме це протиріччя усуває компонент TDataSource. Крім цього, він застосовується для зв'язування чи таблиць запитів при побудові однозв'язних форм в Експерті форм баз даних.
ВЛАСТИВОСТІ КОМПОНЕНТА
(Pb) property AutoEdit: Boolean; |
Чи дозволяє забороняє зміна даних візуальними компонентами, зв'язаними з TDataSource. У визначеному стані -- True, запис дозволений. |
|
(Рb) property Dataset: TDataSet; |
Визначає зв'язані компоненти TTable, TQuery і TStoredProc. |
|
(Pb) property Enabled: Boolean; |
Визначає, чи проводити модифікацію записів зв'язаної таблиці у візуальних компонентах при зміні поточної запису. |
|
(Ro) property State: TDataSetState; |
Задає поточний стан для зв'язаного компонента набору даних. Це властивість повинна бути встановлена у відповідність із властивістю State зв'язаного компонента набору даних. Можливі значення: dsBrowse, dsCalcField, dsEdit, dslnactive, dslnsert, dsSetKey. При властивості Enabled у значенні False чи не визначеному значенні властивості Dataset властивість State повинна встановлюватися в значення dslnactive. Докладно можливі стани описуються наприкінці роздягнула. |
ОБРОБЛЮВАЧІ ПОДІЙ
(Pb) property OnDataChange: TDataChangeEvent ; TDataChangeEvent = procedure(Sender: TObject; Field: TField) of object; |
Викликається при обробці повідомлення візуальних компонентів відображення і керування даними про будь-які чи зміни при перевизначенні властивості State у будь-який стан з dslnactive. Переданий параметр Field визначає змінене поле, при модифікації декількох полів (запису) одночасно встановлюється в nil. |
|
(Pb) property OnStateChange: TNotifyEvent; |
Викликається при зміні властивості State. |
|
(Pb) property OnUpdateData: TNotifyEvent; |
Реагує на методи Post і UpdateData (див. нижче) компонентів наборів даних і передає повідомлення візуальним компонентам відображення і керування даними про необхідність зміни відповідних полів. |
МЕТОДИ КОМПОНЕНТА
procedure Edit; |
Призначена тільки для виклику аналогічного методу компонента набору даних. Використовується при властивостях AutoEdit = True і State = dsBrowse. |
Компонент TTable
TObject->TPersistent->TCoinponent->TDataSet->TDBDataSet-->TTable
Модуль DBTABLES. Сторінка Палітри компонентів Data Access.
Відіграє важливу роль у додатках, що працюють з базами даних. Він призначений для з'єднання таблиць баз даних через BDE з додатком (компонентом TDataSource). Через нього йде і зворотний зв'язок. З одним компонентом TTable може бути зв'язане трохи TDataSource, але зворотне невірно. TTable має могутній набір властивостей і методів для керування набором даних.
ВЛАСТИВОСТІ КОМПОНЕНТА
(Pb) property Active: Boolean;(Pb) property AutoCalcField: Boolean; |
Регулює доступ до даних. При значенні True відкриває набір даних і встановлює його в стан Browse, у противному випадку встановлюється стан Inactive.Визначає виклик оброблювача події OnCalcField. У значенні True метод викликається завжди при редагуванні полів. |
|
(Ro) property BOF: Boolean; (Ro) property CanModify: Boolean; |
Повідомляє про перебування курсору в першому записі набору даних.Встановлює можливість редагування. |
|
(Ro) property Database: TDatabase; |
Ідентифікує компонент TDatabase, зв'язаний з TTable. |
|
(Pb) property DatabaseName: TFil-Name; |
Визначає доступ до бази даних. Може задаватися у виді псевдоніма BDE, шляху до файлів, специфічного псевдоніма додатка. |
|
(Ro) property DBHandle: HDBIDB; (Ro) property DBLocale: TLocale; |
Визначає дескриптор бази даних, необхідний, зокрема, для організації виклику функцій API BDE з додатку.Задає драйвер для BDE. |
|
(Bg) property EOF: Boolean; |
Інформує про знаходження курсору в останній записі набору даних. |
|
(Pb) property Exclusive: Boolean;(Pо) property FieldCount: Integer; |
Використовується для установки повного контролю над таблицею, що відкривається, і запобігання доступу до неї інших користувачів. Перед роботою з цією властивістю необхідно задати властивості Active значення False. При спробі відкриття уже використовуваної іншими таблиці з Exclusive = True виникає виняткова ситуація. Властивість корисна при створенні додатків для систем, що використовують поділювані файли.Повідомляє про число стовпчиків таблиці, використовується візуальними компонентами відображення даних. |
|
Wo) property FieldDefs: TFieldDefs; |
Містить інформацію про кожен об'єкт TFieldDef (див. нижче), зв'язаному з компонентом таблиці. |
|
(Ro) property Fields[Index: Integer]: TField; |
Дозволяє одержати інформацію про поля таблиці. |
|
(ro) property Handle: HDBICur; |
Дескриптор компонента, дозволяє одержати доступ до функцій API BDE. |
|
(Ro) property IndexDefs: TIndexDefs; |
Дозволяє одержати інформацію про усіх використовуваних компонентомом індексах. Перед використанням властивості необхідно викликати метод Update об'єкта TIndexDefs для відновлення даних. |
|
(Ro) property IndexFieldCount: Integer; |
Означає число дійсних полів для поточного індексу. |
|
(Вd) property IndexFieldNames: String; |
Використовується SQL-сервером для ідентифікації полів, що є індексами. Імена полів розділяються крапкою з коми і не повинні містити більш 255 символів. Тут можуть бути описані не тільки фізичні індекси (збережені в індексних файлах), але і створювані на час виконання додатка. |
|
(Pb) property IndexName: String; |
Визначає вторинний індекс. Установка властивості приводить до обнуління властивості IndexFieldNames. |
|
(Ro) property IndexFields[Index: Integer] ^Fields- |
Містить інформацію про всі поля поточного індексу. |
|
property KeyExclusive: Boolean; |
Визначає, чи виключати з розгляду сортування, що повертаються функціями, і пошуку запису. Значення за замовчуванням -- False. Для методів SetRangeStart і SetRangeEnd визначає що включають чи виключають границі діапазону значень. Для методів GoToNearest і FindNearest визначає місце перебування курсору. |
|
property KeyFieldCount: Integer; |
Визначає число ключових полів дляпошуку. |
|
(Ro) property Locale: TLocale; |
Ідентифікатор мовного драйвера для BDE. |
|
(Pb) property MasterFields: String; TDataSource;(Ro) property Modified: Boolean; |
Задає імена полів для зв'язку підлеглої таблиці з головною таблицею. При необхідності визначити кілька полів, їхні імена розділяються крапкою з коми. При зміні номерів записів у головній таблиці, значення в полях використовуються для вибірки записів з підлеглої таблиці.Визначає компонент TDataSource, що представляє головну таблицю. |
|
Показує чи проводились зміни в полях запису з моменту відкриття таблиці або виклиці методів Post або Cancel. |
||
(№;) property Readonly: Boolean; |
Встановлює режим "Тільки для читання". Перед використанням необхідно встановити властивість Active у False. |
|
(Ro) property RecordCount: Longint; |
Відображає число записів у наборі даних. |
|
(Ro) property State: TDataSetSCate; (Pb) property TableName: TFileName; |
Показує поточний стан набору даних (див. аналогічна властивість компонента TDataSource). Значення цієї властивості важлива при використанні багатьох методів компоненту.Містить ім'я таблиці, використовуваної компонентом. |
|
(Pb) property TableType: TTableType; |
Визначає тип використовуваної таблиці відповідно до розширення файлу (режим Default) чи типом TTableType, що містить наступні значення: ttDefault, "Paradox, "DBase, "ASCII. |
|
(Pb) property UpdateMode: TUpdateMode; |
Визначає спосіб відновлення даних при роботі з базами SQL і задає полючи, що використовуються для пошуку запису в базі. Можливі наступні значення: Where All -- використовує всі полючи; WhereKeyOnly -- використовує тільки ключові полючи; WhereChanged -- використовує ключові і змінені полючи запису. Найбільш твердим, кращим і надійної є режим WhereAll (установлюється за замовчуванням). |
Оброблювачі подій.
Поділяються на дві великі групи: викликувані до (Before) і після (After) методів Open, Insert, Edit, Post, Delete, Cancel і Close. Інформацію про ці групи можна одержати, використовуючи довідкову систему Delphi. Крім цього існують ще два оброблювачі:
(РB) property OnCalcFields: TDataSetNotifyEvent ; TDataSetNotifyEvent = procedure (DataSet: TDataSet) of object; |
Використовується для визначення значень полів, що обчислюються, і викликається при читанні запису з бази. При властивості AutoCalcFields = True цей оброблювач викликається при зміні значень полів, що необчислюються, якщо встановлений стан EdsEdit чи Edslnsert. При виконанні процедури набір даних повинний знаходитися в стані CalcFields. |
|
(РB) property OnNewRecord: TDataSetNotifyEvent; |
Реагує на додавання в набір даних нового запису. Дозволяє редагувати нові записи без зміни властивості Modified, |
МЕТОДИ КОМПОНЕНТА
procedure Addlndex(const Name, Fields: String; Options: TIndexOptions); TIndexOptions = set of (ixPrimary, ixUnique, ixDescending, ixNonMaintained, ixCaseInsensitive); |
Створює новий індекс для компонента. Параметри: Name -- назва індексу, Fields -- полючи індексу, Options -- опції типу TindexOptions. |
|
procedure ApplyRange; |
Проводить фільтрацію записів таблиці. Підмножина добору визначається методами SetRangeStart і SetRangeEnd чи EditRangeStart і EditRangeEnd. |
|
procedure Append; |
Призначена для включення в таблицю нових записів. Метод позиціонує курсор у кінець набору, переводить його в стан Insert і відкриває новий порожній запис. |
|
procedure AppendRecord(const Values: array of const) ; |
Додає до таблиці новий непорожній запис, дані для полів визначаються параметром Values. Порядок проходження зберігається. Якщо число елементів параметра менше числа полів, то що залишилися полючи встановлюються в NULL. Типи елементів параметра Values повинні збігатися з типами полів. |
|
function BatchMove(ASource: TDataSet; AMode: TBatchMode): Longint; |
Додає, видаляє, чи копіює обновляє групи записів. Параметри: ASource задає джерело запису, AMode -- використовуваний режим. Режим визначається типом TBatchMode: batAppend, batUpdate, batAppendUpdate, batDelete, batCopy. Функція повертає число оброблених записів. |
|
procedure Cancel; |
Переводить набір даних у стан dsBrowse і скасовує будь-які зміни для поточної запису. |
|
procedure CancelRange; |
Скасовує фільтрацію записів таблиці, що задається функціями ApplyRange і SetRange. |
|
procedure CheckBrowseMode; |
Робить перевірку відкриття набору даних і відсутності передбачуваних змін. Якщо набір даних закритий, виводиться відповідне повідомлення про помилку. Якщо компонент знаходиться в стані dsEdit, dslnsert чи dsSetKey, то викликається метод Post для передачі в базу даних будь-яких накопичених змін. |
|
procedure ClearFields; |
Повертає всім полям поточного запису вихідні значення. Набір даних повинний знаходитися в стані dsEdit.Закриває набір даних. Аналогічна установці властивості Active у False. |
|
procedure CreateTable; procedure CursorPosChanged;procedure Delete;procedure String) ; |
Створює нову порожню таблицю. Перед викликом методу необхідно установити необхідні значення властивостей DatabaseName, TableName, TableType, FieldDefs і IndexDefs.Використовується для передачі повідомлення компоненту TDataSet про зміну положення курсору функціями API BDE. Ця процедура використовується при визначеній властивості Handle.Видаляє з таблиці поточну запис, установлюючи курсор на наступну.Видаляє вторинний індекс. Параметр Name -- назва індексу. Для використання методу необхідно установити властивість Exclusive у True. |
|
procedure DeleteTable; |
Знищує таблицю, обумовлену властивостями DatabaseName, TableName, TableType. |
|
procedure DisableControls; |
Тимчасово припиняє з'єднання набору даних із усіма зв'язаними компонентами TDataSource. У результаті переривається зв'язок з візуальними компонентами. Існує метод зворотної дії -- EnableControls.Установлює властивість State у dsEdit і підготовляє поточну запис до модифікації. |
|
procedure EditKey; |
Призначена для коректування вмісту буфера ключів пошуку. Використовується тільки для .пошуку на багатьох полях після виклику методу SetKey. Для переміщення в знайдене поле використовується метод GotoKey. He очищає буфер ключів пошуку після використання. |
|
procedure EditRangeEnd; |
Дозволяє перевизначити порядок добору записів, установлений методом SetRangeEnd. Модифікується набір ключів кінця послідовності. Новий порядок може бути реалізований методом ApplyRange. Для таблиць Paradox і dBase метод застосуємо тільки для індексованих полів, а для баз SQL -- для всіх стовпчиків, визначених властивістю IndexFieldNames. |
|
procedure EditRangeStart; |
Діє аналогічно попередньому методу, змінюючи значення початкового ключа. |
|
procedure EmptyTable; |
Знищує всі записи таблиці, що визначається властивостями DatabaseName, TableName і TableType. Для відкритої таблиці повинне бути включена властивість Exclusive. |
|
procedure EnableControls; |
Відновлює з'єднання з усіма компонентами TDataSource, зв'язаними з даним компонентом і тимчасово відключеними методом DisableControls. |
|
function FieldByName(const FieldName: String): TField; |
Повертає посилання на екземпляр об'єкта TField і зручна для роботи з конкретним полем. Її використання не порушує структури таблиці, на відміну від застосування властивості Fields. Параметром FieldName передається назва полючи. |
|
function FindField(const FieldName: String): TField; |
Повертає посилання на екземпляр об'єкта TField, використовуючи ім'я, передане параметром PieldName. Не змінює структуру таблиці. У випадку відсутності заданого полючи повертає nil. |
|
function FindKey(const KeyValues: array of const): Boolean; |
Призначений для пошуку запису по індексі. Параметр KeyValues задає список полів індексу. Метод установлює набір даних у стан SetKey. У випадку успіху функція повертає True і переміщає курсор на знайдений запис, у випадку невдачі повертається False. |
|
procedure FindNearest(const KeyValues: array of const); |
Знаходить запис, індекс якого чи більше дорівнює заданому параметром KeyValues. Курсор переміщається на знайдений запис. Для пошуку можуть використовуватися тільки строкові полючи. За замовчуванням використовуються первинні індекси, завдання необхідних значень властивостей IndexFieldNames чи IndexName дозволяє проводити пошук по інших індексах. Для таблиць Paradox і dBase метод застосуємо тільки до індексованих полів, а для баз SQL -- до всіх полів, визначеним властивістю IndexFieldNames. |
|
procedure First; |
Установлює курсор на перший запис поточного розташування записів набору даних. На результат впливає застосування методу SetRangeStart. |
|
procedure FreeBookmark(Bookmark: TBookmark) ; TBookmark = Pointer; |
Звільняє системні ресурси, використовувані методом GetBookmark. Параметр Bookmark задає ідентифікатор використовуваної закладки. |
|
function GetBookmark: TBookmark; |
Установлює закладку на поточній записі, до неї можна повернутися в будь-який момент за допомогою методу GotoBookmark. Повертає покажчик на екземпляр закладки типу TBookmark. Усі встановлені закладки знищуються при закритті чи таблиці зміні індексів. |
|
procedure GetFieldNames(List TStrings) ;procedure GetIndexNames(List TStrings) ;procedure GotoBookmark(Bookmark: TBookmark) ; |
: Записує імена полів набору даних у параметр List.Записує всі індекси набору даних у параметр List.Позиціонує курсор на записі, який відповідає закладка, покажчик на який передається в параметрі Bookmark. |
|
procedure GotoCurrent(Table: TTable); |
Використовується для сполучення курсорів двох екземплярів компонента, що використовують ту саму таблицю. Змінюється положення курсору того компонента, що заданий параметром Table. Для виконання методу необхідна ідентичність властивостей DatabaseName і TableName обох екземплярів компонента. |
|
function GotoKey: Boolean; |
Переміщає курсор на запис, обумовлений ключем. Повертає True у випадку успішного пошуку. Використовується разом з методами SetKey чи EditKey. Якщо для ключа використовується кілька полів, то їхнє число необхідно задати властивістю KeyFieldCount. |
|
procedure GotoNearest |
Переміщає курсор на останній запис текучого порядку розположення записів. На результат впливає використання методу SetRangeEnd.Використовується для переходу до запису, чий індекс дорівнює або більше значення властивості IndexField. Пошук проводиться з першого запису. Використовується разом з методами SetKey і EditKey. |
|
procedure Insert; |
Переводить набір даних у стан Insert і вставляє на місці курсору новий порожній запис. При наявності в таблиці індексів метод розміщає новий запис у відповідність з ними. |
|
procedure InsertRecordfconst Values: array of constIt |
Додає в набір даних новий запис, заповнюючи її полючи значеннями, переданими параметром Values. Число величин у параметрі може бути менше, ніж полів у таблиці, у цьому випадку відсутні значення будуть інтерпретуватися як порожні. Типи даних повинні збігатися. При наявності в таблиці індексів метод розміщає новий запис у відповідність з ними. |
Опції, що підтримуються СУБД Paradox і dBase приведені в таблиці.
ОпціїixCaseInsensitive |
Paradox+ |
DBase- |
|
ixDescending |
+ |
+ |
|
IxNonMaintained |
+ |
+ |
|
IxPrimary |
+ |
||
IxUnique |
+ |
§3.Обробка графічних файлів
Растрові редактори
Растрові редактори працюють із крапковими (bitmap) або відповідно растровими (raster) зображеннями. У растровому зображенні явно описані атрибути кожного пікселя. Загальна кількість пікселів (фізичний розмір зображення), а також колір і розташування кожного пікселя є незмінними. Розмір файлу зображення залежить від кількості кольорів і пікселів, однак деякі формати використовують алгоритми стиску. Растрові редактори змушені моніпулювати з усіма пікселями зображення. Як приклади подібних додатків можна привести редактори Adobe Photoshop і PaintShop Pro. Такі графічні додатки, як Fractal Paint і подібні, також є растровими редакторами. До достоїнств растрових редакторів відносяться:
*Можливість створення зображень безпосередньо у форматах GIF і JPEG;
*Широкий спектр доступних спецефектів, включаючи тіні і прозорих зображень у форматі GIF. Серед недоліків растрових редакторів можна виділити наступні:
*Жорсткі вимоги до продуктивності процесора, обсягові дискового простору й оперативної пам'яті, що автоматично вабить за собою необхідність модернізації комп'ютера;
*Більшість редакторів складні для вивчення і застосування;
*Якість зображення страждає при зміні його розмірів;
Приведені визначення векторних і растрових редакторів не є строгими. Растрові зображення можна імпортувати в більшість векторних середовищ, у растрових редакторах можна малювати векторні криві. Крім того, існують особливі типи графічних редакторів, що надають спеціальні можливості, наприклад, простежування проходження променів або створення тривимірних эфектов і фракталів. Усе залежить від того, якого саме типу зображення потрібне, і від того, що саме потрібно зробити з цим зображенням. Кожен формат має свої переваги і недоліки.
Формат GIF89a (нова версія формату GIF) дозволяє одержувати файли типу "черезрядковий GIF", що спочатку представляються у вигляді зображень з низьким розрішенням і далі прорисовуються зі зростаючим розрішенням. Крім того, формат GIF89a підтримує дані про прозорість, що дозволяє робити "невидимими" непотрібні ділянки зображення. Але, оскільки файли GIF по визначенню повинні бути в режимі Indexed Color, такі зображення можуть містити небільш 256 кольорів. Для багатьох графічних зображень цього цілком достатньо, однак фотографічні чи зображення з безліччю тонких колірних переходів будуть перекручені, якщо зберегти їх у форматі GIF.
Файли формату JPEG, навпроти, можна зберігати в повному 24-бітному представленні кольору, тому JPEG корисний у тих випадках, коли потрібно високоякісна передача колірних відтінків і переходів. Але цей формат не підтримує дані про прозорість і черезрядковому представленні даних. (Правда, уже розроблений новий формат файлу Progressive JPEG, що дозволяє представити дані у вигляді серії зображень з постійно зростаючим розрішенням, але він поки не має широкої підтримки.)
Стиск даних -- це суть формату JPEG; стиск даних підтримує і формат GIF. Алгоритм JPEG зв'язаний з визначеними втратами в зображенні -- якась частина даних під час стиску видаляється. Варто уникати багаторазового повторного збереження зображення у форматі JPEG, оскільки всякий раз,коли зображення піддається стиску (при збереженні) і відновленню (при перегляді), його якість злегка погіршується. Стиск даних у форматі GIF здійснюється хоча і без утрат, але зображення містить не більше 256 кольорів.
Розумно зберігати файли у форматі JPEG тільки втих випадках, коли робота над ними остаточно завершена. Якщо ж Вам потрібно зберегти файл в ущільненому форматі, що цілком збереже всі дані, потрібно використовувати TIFF і виділити опцію сжаття даних LZW. LZW-компресія здійснюється без утрат.
Сканери відіграють ведучу роль у сучасній технології одержання цифрових зображень з напівтонових фотографічних відбитків для наступної їхньої обробки на комп'ютерах.
Сканери обробляють світло, відбите від фотографій (оригіналів на непрозорих підкладках): він направляється на скануючу голівку, що у типовому випадку складається з цілого ряду мікроприладів із зарядовим зв'язком (Charged Coupled Device, чи CCD - ПЗС) чи світлочутливих діодів. Чи діоди ПЗС реагують на кількість світла, що попадає на них, і генерують відповідні показники інтенсивності в діапазоні від 0 до 255 для кожного з трьох первинних аддитивних кольорів: червоного (red), зеленого (green) і синього (blue). Потім сканер комбінує ці виміри й утворить 24-бітне повноколірне зображення (8 біт на кожний з первинних квітів).
Перед скануванням варто визначити, чи не має оригінальне зображення небажаних колірних відтінків, які можна усунути вже в процесі сканування. Іноді надлишкові колірні відтінки використовуються для досягнення того чи іншого естетичного ефекту, однак у типових випадках їхній прояв небажаний.
Калібрування монітора компенсує будь-які надлишкові колірні відтінки і відхилення гами, властивому конкретному монітору. Дуже важливо відкалібрувати монітор перед скануванням та переглядом малюнків.
Подобные документы
Сутність понять "криптологія", "криптографія" і "криптоаналіз"; огляд існуючих алгоритмів криптографічних систем. Аналіз протоколу мережевої аутентифікації Kerberos, його властивості, безпека; розробка і реалізація програмного продукту на базі протоколу.
дипломная работа [1,8 M], добавлен 09.06.2013BMP як формат зберігання растрових зображень, огляд структури файлу. Створення програми для запису та перегляду графічних BMP-файлів на мові програмування Turbo Pascal 7.0, розробка функціональної схеми і алгоритмів, особливості проведення тестування.
курсовая работа [325,8 K], добавлен 12.06.2011Найбільш розповсюджені середовища створення графічних зображень та 3D моделей. Основні інструменти векторних редакторів. Функції програм Adobe Photoshop и Корелдроу. Графічні моделі, характеристики й типи графічних файлів. Створення власних моделей.
дипломная работа [6,7 M], добавлен 25.06.2011Графічна підсистема Delphi 5, її можливості, інструменти та принципи побудови прикладних програм з використанням графіки; дочірні класи. Методи опрацювання графічних зображень різних форматів і типів: растрових файлів, метафайлів Windows, піктограм.
лабораторная работа [47,9 K], добавлен 19.03.2011Основні переваги програмування на мові Delphi. Використання стандартних операторів при створенні інтерфейсу користувача. Вибір складу технічних і програмних засобів, організація вхідних і вихідних даних. Розробка програми, блок-схеми та тексту програми.
реферат [316,1 K], добавлен 22.01.2013Створення програми для роботи зі зв'язаними списками засобами Delphi. Причини використання динамічної пам'яті комп’ютера. Розробка технічного завдання. Аналіз вимог та визначення специфікації. Етап реалізації та розробка документації користувача.
курсовая работа [487,5 K], добавлен 08.08.2011Міжрівневі взаємодії - передача даних по мережі з одного місця в інше. Характеристика та призначення протоколу ARP. Визначення фізичної адреси локального та віддаленного вузла. Взаємодія мережних пристроїв через фізичні адреси. Способи визначення адрес.
контрольная работа [18,2 K], добавлен 20.09.2009Сутність і елементи електронної бібліотеки, її послуги та особливості. Традиційна каскадна модель життєвого циклу програми. Написання електронної бібліотеки за допомогою мови гіпертекстової розмітки HTML, рекомендації щодо її впровадження та використання.
курсовая работа [3,0 M], добавлен 29.03.2013Структура мережевої підсистеми Linux. Створення мережевого інтерфейсу. Передача пакетів та аналіз поведінки інтерфейсу. Протокол транспортного рівня. Використання модулів ядра. Вплив маршрутизації на процес розробки і налагодження мережевих модулів.
курсовая работа [56,2 K], добавлен 23.05.2013Коротка характеристика кабельних та бездротових портів, розрахунок їх практичної швидкості. Дослідження реальної швидкості передачі даних за допомогою Bluetooth. Призначення, особливості та архітектура мобільного протоколу 3GPP Long Term Evolution.
лабораторная работа [693,9 K], добавлен 08.10.2012