• Главная
  • Карта сайта
Не найдено

Методи в Delphi

  1. Методи в Delphi
  2. Створення методів за допомогою візуальних засобів
  3. передача параметрів
  4. Більш складні методи і керуючі елементи
  5. Інформація ПЕРІОДУ Виконання. програма CONTROL3
  6. Висновок

Методи в Delphi

зміст

огляд

Щоб повністю зрозуміти і відчути всі переваги Delphi, Вам потрібно добре вивчити мову Object Pascal. І хоча можливості візуальної частини Delphi надзвичайно багаті, хорошим програмістом може стати тільки той, хто добре розбирається в техніці ручного написання коду.

У міру обговорення теми даного розділу ми розглянемо декілька простих прикладів, які, тим не менш, демонструють техніку використання важливих керуючих елементів Windows.

Створення методів за допомогою візуальних засобів

У попередньому уроці Ви бачили, що синтаксичний "скелет" методу може бути згенерований за допомогою візуальних засобів. Для цього, нагадаємо, потрібно в інспектор об'єктів двічі клацнути мишкою на порожній рядку навпроти назви цікавить Вас події в необхідному компоненті. Зауважимо, якщо ця строчка не порожня, то подвійне клацання на ній просто перемістить Вас у вікні Редактора Коду в те місце, де знаходиться даний метод.

Для більш глибокого розуміння подальшого викладу коротко зупинимося на концепції об'єктно-орієнтованого програмування. Для початку визначимо базове поняття об'єктно-орієнтованого програмування - клас. Клас - це категорія об'єктів, що володіють однаковими властивостями і поведінкою. При цьому об'єкт являє собою просто екземпляр будь-якого класу. Наприклад, в Delphi тип "форма" (вікно) є класом, а змінна цього типу - об'єктом. Метод - це процедура, яка визначена як частина класу і Інкапсульована (міститься) в ньому. Методи маніпулюють полями і властивостями класів (хоча можуть працювати і з будь-якими змінними) і мають автоматичний доступ до будь-яких полях і методам свого класу. Доступ до полів і методів інших класів залежить від рівня "захищеності" цих полів і методів. Поки ж для нас важливо те, що методи можна створювати як візуальними засобами, так і шляхом написання коду вручну.

Давайте розглянемо процес створення програми CONTROL1, яка допоможе нам вивчити техніку написання методів в Delphi.

Мал. Помилка! Текст зазначеного стилю в документі відсутня. -A: Головна форма програми CONTROL1

Для створення програми CONTROL1 помістіть за допомогою мишки компонент Edit (знаходиться на сторінці "Standard" Палітри Компонентів) на форму. Після цього ваша форма буде мати вигляд, показаний на Рис. Помилка! Текст зазначеного стилю в документі отсутствует.-A.

Мал. Помилка! Текст зазначеного стилю в документі отсутствует.-B: Щоб створити метод, просто двічі клацніть праворуч від слова OnDblClick

Тепер перейдіть в Object Inspector, виберіть сторінку "Events" і двічі клацніть в порожній рядку навпроти події OnDblClick, як показано на Рис. Помилка! Текст зазначеного стилю в документі отсутствует.-B. Після цього в активізувати вікні Редактора Ви побачите згенерований "скелет" методу Edit1DblClick, що є реакцією на подію OnDblClick:

procedure TForm1.Edit1DblClick (Sender: TObject); begin end;

Після генерації процедури Ви можете залишити її ім'я таким, яким "встановив" Delphi, або змінити його на будь-яке інше (для цього просто введіть нове ім'я в зазначеній вище рядку Інспектори Об'єктів у правій частині потрібного події і натисніть Enter).

Тепер у вікні Редактора Коду введіть смислове частина методу:

procedure TForm1.Edit1DblClick (Sender: TObject); begin Edit1.Text: = 'Ви двічі клацнули в рядку редагування'; end;

Збережіть програму. Під час виконання двічі клацніть на рядку редагування. Текст в цьому рядку зміниться відповідно до того, що ми написали в методі Edit1DblClick: см. Рис. Помилка! Текст зазначеного стилю в документі отсутствует.-C.

Рис. Помилка! Текст зазначеного стилю в документі відсутня. -C: Вміст керуючого елемента TEdit змінюється після подвійного клацання по ньому

Лістинг Помилка! Текст зазначеного стилю в документі отсутствует.-A і Лістинг Помилка! Текст зазначеного стилю в документі отсутствует.-B надають повний код програми CONTROL1.

Лістинг Помилка! Текст зазначеного стилю в документі відсутня. -A: Програма CONTROL1 демонструє, як створювати і використовувати методи в Delphi.

program Control1; uses Forms, Main in 'MAIN.PAS' {Form1}; begin Application.CreateForm (TForm1, Form1); Application.Run; end.

Лістинг Помилка! Текст зазначеного стилю в документі відсутня. -B: Головний модуль програми CONTROL1.

unit Main; interface uses WinTypes, WinProcs, Classes, Graphics, Controls, Printers, Menus, Forms, StdCtrls; type TForm1 = class (TForm) Edit1: TEdit; procedure Edit1DblClick (Sender: TObject); end; var Form1: TForm1; implementation {$ R * .DFM} procedure TForm1.Edit1DblClick (Sender: TObject); begin Edit1.Text: = 'Ви двічі клацнули в рядку редагування'; end; end.

Після того, як Ваша програма завантажиться в пам'ять, виконуються дві строчки коду в CONTROL1.DPR, автоматично згенерували компілятором:

Application.CreateForm (TForm1, Form1); Application.Run;

Перший рядок запитує пам'ять у операційної системи і створює там об'єкт Form1, є екземпляром класу TForm1. Другий рядок вказує об'єкту Application, "за замовчуванням" задекларованому в Delphi, щоб він запустив на виконання головної форму додатка. В даному місці ми не будемо детально зупинятися на класі TApplication і на автоматично створюваному його екземплярі - Application. Важливо зрозуміти, що головне його призначення - бути таким собі ядром, керуючим виконанням Вашої програми.

Як правило, у більшості прикладів, якими ми будемо оперувати в наших уроках, файли проектів. DPR практично однакові. Тому в подальшому там, де вони не відрізняються кардинально один від одного, ми не будемо наводити їх текст. Більш того, в файл. DPR, автоматично генерується Delphi, в більшості випадків немає необхідності заглядати, оскільки всі дії, вироблені їм, є стандартними.

Отже, ми бачили, що більшість коду Delphi генерує автоматично. У більшості додатків все, що Вам залишається зробити - це вставити одну або кілька рядків коду, як в методі Edit1DblClick:

Edit1.Text: = 'Ви двічі клацнули в рядку редагування';

Хоча зовнішній інтерфейс програми CONTROL1 досить простий, вона (програма) має сувору внутрішню структуру. Кожна програма в Delphi складається з файлу проекту, що має розширення. DPR і одного або декількох модулів, що мають розширення. PAS. Модуль, в якому міститься головна форма проекту, називається головним. Зазначенням компілятору про зв'язки між модулями є пропозиція Uses, яке визначає залежність модулів.

Немає ніякого функціонального відмінності між модулями, створеними Вам в редакторі, і модулями, згенерували Delphi автоматично. У будь-якому випадку модуль поділяється на три секції:

  1. Заголовок
  2. секція Interface
  3. секція Implementation

Таким чином, "скелет" модуля виглядає наступним чином:

unit Main; {Заголовок модуля} i nterface {Секція Interface} implementation {Секція Implementation} end.

В інтерфейсній секції (interface) описується все те, що повинно бути очевидно для інших модулів (типи, змінні, класи, константи, процедури, функції). У секції implementation поміщається код, який реалізує класи, процедури або функції.

передача параметрів

У Delphi процедурам і функціям (а, отже, і методам класів) можуть передаватися параметри для того, щоб забезпечити їх необхідною для роботи інформацією. Програма PARAMS демонструє, як використовувати передачу параметрів в методи Delphi. Крім того, ми дізнаємося, як:

  • створювати свої власні процедури
  • додавати процедуру в клас, формуючи метод класу
  • викликати одну процедуру з іншого.

Програма PARAMS дозволяє вводити фрази в рядки редагування. Після натискання кнопки "Виклик процедури WriteAll" рядок з керуючого елемента EditSource скопіюється в шість керуючих елементів - рядків редагування, як показано на Рис. Помилка! Текст зазначеного стилю в документі отсутствует.-D.

Далі ми не будемо детально зупинятися на тому, як розміщувати компоненти на формі - вважаємо, що це Ви вже вмієте. Після того як Ви розмістили на формі сім компонентів Edit, перейменуйте за допомогою Інспектора Об'єктів сьомий компонент (Edit7) в EditSource. Покладіть на форму компонент Button, і в Object Inspector змініть його заголовок (властивість Caption) на "Виклик процедури WriteAll" (природно, Ви можете замінити його шрифт, колір і т.д.).

Мал. Помилка! Текст зазначеного стилю в документі відсутня. -D: Програма PARAMS дозволяє викликом однієї процедури заповнити 6 рядків редагування

Після завершення проектування форми клас TForm1 буде виглядати наступним чином:

TForm1 = class (TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; EditSource: TEdit; Button1: TButton; end;

Наступний крок полягає в додаванні методу, що викликається після натискання користувачем кнопки Button1. Це, нагадаємо, можна зробити двома способами:

  • Перейти в інспектор об'єктів на сторінку "Events" (попередньо обравши компонент Button1 на формі), вибрати слово OnClick і двічі клацнути мишкою на порожній рядку справа від нього
  • Просто двічі клацнути на компоненті Button1 на формі.

Delphi згенерує наступну "заготовку":

procedure TForm1.Button1Click (Sender: TObject); begin end;

Мета програми PARAMS - навчити Вас писати процедури і передавати в них параметри. Зокрема, програма PARAMS реагує на натискання кнопки Button1 шляхом виклику процедури WriteAll і передачі їй як параметр вмісту рядка редагування EditSource (EditSource.Text).

procedure TForm1.Button1Click (Sender: TObject); begin WriteAll (EditSource.Text); end;

Важливо зрозуміти, що об'єкт EditSource є екземпляром класу TEdit і, отже, має властивість Text, що містить набраний в рядку редагування текст. Як Ви вже, напевно, встигли помітити, за замовчуванням властивість Text містить значення, що збігається зі значенням імені компонента (Name) - в даному випадку "EditSource". Властивість Text Ви, природно, можете редагувати як в режимі проектування, так і під час виконання.

Текст, який має бути відображений в шести рядках редагування, передається процедурі WriteAll як параметр. Щоб передати параметр процедурі, просто напишіть ім'я цієї процедури і укладіть переданий параметр (параметри) в дужки - ось так:

WriteAll (EditSource.Text);

Тема цієї процедури виглядає наступним чином:

procedure TForm1.WriteAll (NewString: S tring);

де зазначено, що передається процедурі параметр NewString повинен мати тип String.

Згадаймо, що завдання процедури WriteAll полягає в копіюванні вмісту рядка редагування EditSource в шість інших рядків редактировани Edit1-Edit6. Тому процедура повинна виглядати наступним чином:

procedure TForm1.WriteAll (NewString: S tring); begin Edit1.Text: = NewString; Edit2.Text: = NewString; Edit3.Text: = NewString; Edit4.Text: = NewString; Edit5.Text: = NewString; Edit6.Text: = NewString; end;

Оскільки процедура WriteAll не є відгуком на будь-яку подію в Delphi, то її потрібно повністю написати "вручну". Найпростіший спосіб зробити це - скопіювати заголовок будь-якої вже наявної процедури, виправити його, а потім дописати необхідний код.

Повернемося ще раз до заголовку процедури. Тема складається з п'яти частин:

procedure TForm1.WriteAll (NewString: S tring);

Перша частина - зарезервоване слово "procedure"; п'ята частина - кінцева точка з коми ";". Обидві ці частини слугують певним синтаксичним цілям, а саме: перша інформує компілятор про те, що визначений синтаксичний блок "процедура", а друга вказує на закінчення заголовка (власне кажучи, всі оператори в Delphi повинні закінчуватися крапкою з комою).

Друга частина заголовка - слово "TForm1", яке кваліфікує ту обставину, що дана процедура є методом класу TForm1.

Третя частина заголовка - ім'я процедури. Ви можете вибрати його будь-яким, на ваш розсуд. В даному випадку ми назвали процедуру "WriteAl l".

Четверта частина заголовка - параметр. Параметр декларується всередині дужок і, в свою чергу, складається з двох частин. Перша частина - ім'я параметра, друга - його тип. Ці частини розділені двокрапкою. Якщо Ви описуєте в процедурі більш ніж один параметр, потрібно розділити їх крапкою з комою, наприклад:

procedure Example (Param1: S tring; Param2: S tring);

Після того як Ви створили "вручну" заголовок процедури, що є методом класу, Ви повинні включити його в декларацію класу, наприклад, шляхом копіювання (ще раз нагадаємо, що для методів, які є відгуками на дельфийские події, дане включення виробляється автоматично):

TForm1 = class (TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; EditSource: TEdit; Button1: TButton; procedure Button1Click (Sender: TObject); procedure WriteAll (NewString: St ring); end;

В даному місці немає необхідності залишати в заголовку методу слово "TForm1", так як воно вже присутній в описі класу.

Лістинг Помилка! Текст зазначеного стилю в документі отсутствует.-C показує повний текст головного модуля програми PARAMS. Ми не включили сюди файл проекту, оскільки, як уже згадувалося, він практично однаковий для всіх програм.

Лістинг Помилка! Текст зазначеного стилю в документі отсутствует.-C: Вихідний код головного модуля програми PARAMS показує, як використовувати такі рядки редагування і як передавати параметри.

Unit Main; interface uses WinTypes, WinProcs, Classes, Graphics, Controls, Printers, Forms, StdCtrls; type TForm1 = class (TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; EditSource: TEdit; Button1: TButton; procedure Button1Click (Sender: TObject); procedure WriteAll (NewString: String); end; var Form1: TForm1; implementation {$ R * .DFM} procedure TForm1.WriteAll (NewString: String); begin Edit1.Text: = NewString; Edit2.Text: = NewString; Edit3.Text: = NewString; Edit4.Text: = NewString; Edit5.Text: = NewString; Edit6.Text: = NewString; end; procedure TForm1.Button1Click (Sender: TObject); begin WriteAll (EditSource.Text); end; end.

При експериментах з програмою PARAMS Ви можете спробувати змінити імена процедур і параметрів. Однак, слід пам'ятати, що ряд слів в Delphi є зарезервованими, і вживати їх в ідентифікаторах (іменах процедур, функцій, змінних, типів, констант) забороняється - компілятор відразу ж знайде помилку. До них відносяться такі слова, як "procedure", "string", "begin", "end" і т.п .; повний же список їх наведено в on-line довіднику Delphi.

Чи не намагайтеся запам'ятати відразу все зарезервовані слова - компілятор "нагадає" Вам про неправильне їх використання видачею повідомлення типу "Identifier expected." (Очікувався ідентифікатор, а виявлено зарезервоване слово).

Більш складні методи і керуючі елементи

Тепер, коли Ви освоїли базові поняття в системі програмування Delphi, можна продовжити вивчення компонент і способів створення їх методів.

У програмі CONTROL1, розглянутої на початку уроку, був згенерований метод, який є відгуком на подію OnClick рядки редагування Edit1. Аналогічно, можна згенерувати метод, який є реакцією на подію OnDblClick. У програмі CONTROL2, наявної на диску, розширено список знаходяться на формі компонентів і для багатьох з них визначені події OnClick і OnDblClick. Для дослідження Ви можете просто скопіювати файли проекту CONTROL1 в нову директорію CONTROL2, змінити ім'я проекту на CONTROL2.DPR (в цьому файлі після ключового слова "program" також має стояти назва "CONTROL2") і додати компоненти Label, GroupBox, CheckBox, RadioButton, Button на форму (ці компоненти знаходяться на сторінці "Standard" Палітри компонентів). Ваша форма буде мати приблизно такий вигляд - Рис. Помилка! Текст зазначеного стилю в документі отсутствует.-E.

Мал. Помилка! Текст зазначеного стилю в документі отсутствует.-E: Зовнішній вигляд програми CONTROL2

Зауважимо, що Ви повинні "покласти" компонент GroupBox на форму до того, як Ви додасте компоненти CheckBox і RadioButton, які, в нашому прикладі, повинні бути "всередині" групового елемента. Інакше, об'єкти CheckBox1, CheckBox2, RadioButton1 і RadioButton2 будуть "думати", що їх батьком є форма Form1 і при переміщенні GroupBox1 по формі не будуть переміщатися разом з нею. Таким чином, щоб уникнути проблем, компонент, який повинен бути "батьком" інших компонент (Panel, GroupBox, Notebook, StringGrid, ScrollBox і т.д.), потрібно поміщати на форму до приміщення на неї його "дітей". Якщо Ви все ж забули про це і помістили "батька" (наприклад, GroupBox) на форму після розміщення на ній його "нащадків" (наприклад, CheckBox і RadioButton) - не впадайте у відчай! Відзначте всі необхідні об'єкти і скопіюйте (з видаленням) їх в буфер обміну за допомогою команд меню Edit | Cut. Після цього відзначте на формі потрібний Вам об'єкт (GroupBox1) і виконайте команду меню Edit | Paste. Після цього всі виділені Вами раніше об'єкти будуть поміщені на форму, і їх "батьком" буде GroupBox1. Описаний механізм є стандартним і може бути використаний для всіх видимих ​​компонент.

Виберіть об'єкт Label1. Створіть для нього метод, який є відгуком на подію OnDblClick (див. Вище). Введіть в метод одну сходинку, наприклад:

procedure TForm1.Label1DblClick (Sender: TObject); begin Edit1.Text: = 'Подвійний клік на Label1'; end;

Запустіть програму на виконання і двічі клацніть мишкою на мітці Label1. Ви побачите, що рядок редагування зміниться, і в ній з'явиться текст "Подвійний клік на Label1".

Тепер закрийте додаток і поверніться в режим проектування. Додайте обробники подій OnClick і OnDblClick для кожного об'єкта, наявного на формі. Текст вашого головного модуля буде виглядати наступним чином:

Лістинг Помилка! Текст зазначеного стилю в документі отсутствует.-D: Головний модуль програми CONTROL2.

Unit Main; interface uses WinTypes, WinProcs, Classes, Graphics, Controls, StdCtrls, Printers, Menus, Forms; type TForm1 = class (TForm) Label1: TLabel; Edit1: TEdit; Button1: TButton; GroupBox1: TGroupBox; CheckBox1: TCheckBox; CheckBox2: TCheckBox; RadioButton1: TRadioButton; RadioButton2: TRadioButton; procedure Edit1DblClick (Sender: TObject); procedure Label1DblClick (Sender: TObject); procedure CheckBox1Click (Sender: TObject); procedure CheckBox2Click (Sender: TObject); procedure RadioButton1Click (Sender: TObject); procedure RadioButton2Click (Sender: TObject); procedure Button1Click (Sender: TObject); end; var Form1: TForm1; implementation {$ R * .DFM} procedure TForm1.Edit1DblClick (Sender: TObject); begin Edit1.Text: = 'Подвійний клік на Edit1'; end; procedure TForm1.Label1DblClick (Sender: TObject); begin Edit1.Text: = 'Подвійний клік на Label1'; end; procedure TForm1.CheckBox1Click (Sender: TObject); begin Edit1.Text: = 'Клацання на CheckBox1'; end; procedure TForm1.CheckBox2Click (Sender: TObject); begin Edit1.Text: = 'Клацання на CheckBox2'; end; procedure TForm1.RadioButton1Click (Sender: TObject); begin Edit1.Text: = 'Клацання на RadioButton1'; end; procedure TForm1.RadioButton2Click (Sender: TObject); begin Edit1.Text: = 'Клацання на Radiobutton2'; end; procedure TForm1.Button1Click (Sender: TObject); begin Edit1.Text: = 'Клацання на Button1'; end; end.

Ця програма служить двом цілям:

  • Вона показує, як створюваті процедури (методи) и як "наповнювати" їх змістовної "начинкою"
  • Вона демонструє техніку роботи з Керуючий елементами Windows.

Інформація ПЕРІОДУ Виконання. програма CONTROL3

Як Ви, напевно, помітили, методи програми CONTROL2, є відгуками на події OnClick і OnDblClick, багато в чому схожі один на одного.

Відкритість середовища Delphi дозволяє отримувати і оперувати інформацією особливого роду, званої інформацією періоду виконання (RTTI - run-time type information). Ця інформація організована у вигляді декількох рівнів.

Верхній рівень RTTI представлений як засіб перевірки та приведення типів з використанням ключових слів is і as.

Ключове слово is дає програмісту можливість визначити, чи має даний об'єкт необхідний тип або є одним із спадкоємців даного типу, наприклад, таким чином:

if MyObject is TSomeObj t hen ...

Є можливість використовувати RTTI і для процесу приведення об'єктного типу, використовуючи ключове слово as:

if MyObject is TSomeObj t hen (MyObject as TSomeObj) .MyField: = ...

що еквівалентно:

TSomeObj (MyObject) .MyField: = ...

Середній рівень RTTI використовує методи об'єктів і класів для підміни операцій as і is на етапі компіляції. В основному, всі ці методи закладені в базовому класі TObject, від якого успадковуються всі класи бібліотеки компонент VCL. Для будь-якого нащадка TObject доступні, в числі інших, такі інформаційні методи:

  • ClassName - повертає ім'я класу, екземпляром якого є об'єкт
  • ClassInfo - повертає покажчик на таблицю з RTTI, що містить інформацію про тип об'єкта, типі його батька, а також про всі його публікованих властивості, методи і події
  • ClassParent - повертає тип батька об'єкта
  • ClassType - повертає тип самого об'єкта
  • InheritsFrom - повертає логічне значення, що визначає, чи є об'єкт нащадком зазначеного класу
  • InstanceSize - повертає розмір об'єкта в байтах.

Ці методи можуть використовуватися в Вашому коді безпосередньо.

Нижній рівень RTTI визначається в дельфийском модулі TypInfo і представляє особливий інтерес для розробників компонент. Через нього можна отримати доступ до внутрішніх структур Delphi, в тому числі, до ресурсів форм, інспектору об'єктів і т.п.

Отже, доступ до інформації періоду виконання в Delphi дозволяє динамічно отримувати як ім'я об'єкта, що знаходиться на формі, так і назва класу, якому він належить (і ще багато іншої корисної інформації, але про це - в подальших уроках). Для цього використовується властивість Name, яка є в будь-якого класу-спадкоємця TComponent (а такими є всі компоненти, що входять до дельфійського бібліотеку VCL), і метод ClassName, доступний для будь-якого нащадка класу базового TObject. А, оскільки клас TComponent, в свою чергу, є спадкоємцем класу TObject, то він доступний для всіх компонент з бібліотеки VCL. vВернувшісь до наших прикладів, ми можемо замінити цілу "купу" методів двома, реалізують події OnClick і OnDblClick для всіх об'єктів відразу. Для цього можна скопіювати всі файли з CONTROL2 в новий директорій CONTROL3 або використовувати для роботи вже наявну на диску програму. Створимо стандартним чином методи ControlDblClick і ControlClick для будь-якого об'єкта (наприклад, для Label1). Введемо в них такі рядки:

procedure TForm1.ControlDblClick (Sender: TObject); begin Edit1.Text: = 'Подвійний клік на' + (Sender as TComponent) .Name + '(клас' + Sender.ClassName + ')'; end; procedure TForm1.ControlClick (Sender: TObject); begin Edit1.Text: = 'Клацання на' + (Sender as TComponent) .Name + '(клас' + Sender.ClassName + ')'; end;

Тепер призначимо дані методи всіх подій OnClick і OnDblClick, наявними у розташованих на формі об'єктів. Ми бачимо, що розмір програми істотно скоротився, а функціональність її значно зросла. У режимі виконання після, наприклад, клацання на об'єкті CheckBox1 додаток буде мати вигляд, зображений на Рис. Помилка! Текст зазначеного стилю в документі отсутствует.-F.

Мал. Помилка! Текст зазначеного стилю в документі відсутня. -F: Програма CONTROL3 виводить інформацію не тільки про ім'я об'єкта, але і про назву його класу (типу)

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

Висновок

У цьому уроці ми розглянули, як управляти методами компонент під час виконання програми. Крім того, ми вивчили, як що таке інформація періоду виконання і навчилися використовувати її з метою створення гнучких і універсальних програм.

назад | Зміст | вперед

Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью