Поради тим, хто програмує на vb - vba, КомпьютерПресс

Рада 309. Як отримати зведення про фото MP3

Цілком ймовірно, що, перш ніж почати програвати файл формату MP3 (це можна зробити, підключивши кошти Windows Media Player до VB-додатком), ви захочете дізнатися назву пісні, ім'я виконавця та ін. Якщо MP3-файл використовує найбільш популярне кодування тегів ID3, то зробити це дуже легко. Даний стандарт записує в останні 128 байтів зведену інформацію, яку можна прочитати за допомогою, наприклад, такого коду:

Рада 310. Пріоритетність використання оператора With

Застосування оператора With дозволяє не тільки скоротити час на введення програми і поліпшити читабельність коду, але і підвищити швидкість виконання програми. Використовувати With можна як для об'єктів, так і для змінних призначеного для користувача типу (User-Defined type, UDT). Питання полягає в наступному: для якого типу даних краще використовувати With? Відповідь: в першу чергу для об'єктів, так як в цьому випадку буде знижуватися час доступу до їх властивостями. Наприклад, у вас є структура, в якій зберігається набір параметрів:

Вам потрібно присвоїть ці параметри властивостями командної кнопки. конструкція:

буде працювати швидше, ніж, наприклад, така конструкція:

Рада 311. Слідкуйте за станом батарей ноутбука

Елемент управління SysInfo, що поставляється з VB (у вікні Components він називається Microsoft SysInfo Control Version 6.0 або 5.0), досить рідко застосовується розробниками. І дарма, адже він дозволяє отримувати інформацію про параметри і події операційної системи, події plug-and-play і ін. В даному випадку ми покажемо, як з його допомогою можна прочитати відомості про стан батарей ноутбука.

Властивість ACStatus дозволяє дізнатися, чи використовується в даний момент батарея для харчування:

Властивість BatteryLifePercent визначає відсоток зарядки батареї:

Якщо ноутбук харчується зараз від батареї, то корисно дізнатися, скільки часу ще можна працювати з нею:

Рада 312. Слідкуйте за правильним використанням типів даних

Ми вже не раз відзначали, що Visual Basic дозволяє розробнику досить вільне використання типів змінних, виконуючи неявне перетворення. Наприклад, така конструкція в VB цілком допустима і навіть видає правильний результат:

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

При цьому можна подумати, що при введенні в текстове поле величини від 1 до 12 буде видаватися повідомлення "Допустима величина". Однак насправді код буде працювати інакше: "Допустима величина" буде видаватися тільки для значень 1, 10, 11 і 12. Для чисел від 2 до 9 користувач отримає повідомлення "Неприпустима величина".

Важко сказати, чому в разі арифметичного виразу для рядка "5" перетворення виконується вірно, а в операторі Select - невірно. Слід тільки мати на увазі, що при використанні неявного перетворення можуть виникнути подібні проблеми. Дотримуючись же класичних принципів програмування і витративши небагато часу на введення декількох додаткових символів, ви легко уникнете цих проблем. Такий варіант коду буде надійно працювати для будь-яких числових значень текстового поля:

Рада 313. Як контролювати наявність лапок в назвах

Наш читач з Томська надіслав таке питання: "У мене в базі даних є таблиця" Постачальники ". У ній є поле "Назва", в якому назви фірм можуть містити лапки, наприклад <ООО "МММ">. Мені необхідно сформувати рядок SELECT з критерієм пошуку WHERE [Назва] =. але коли я роблю це, у мене виникає синтаксична помилка (зайві лапки):

Питання сформульовано таким чином, що не зовсім зрозуміло, як читач формує рядок SELECT і навіщо використовує такий варіант пошуку. Тому спробуємо розглянути цю проблему з різних сторін.

1. Обробка символьних даних, всередині яких містяться подвійні лапки, представляє деякі труднощі, так як цей символ використовується в якості дужок для написання символьних літералів. Вирішується ця проблема загальноприйнятим способом: всередині литерала кожна лапка записується двічі. Тому при синтаксичному розборі тексту вихідного коду перша лапка вважається правою дужкою, далі кожна пара замінює одну всередині рядка, непарна є лівою дужкою. Відповідно, щоб привласнити наведеної вище змінної назва фірми, потрібно написати:

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

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

У нашому випадку оператор повинен виглядати наступним чином (щоб було видно лапки, я використовую ім'я <ООО "МММ" O>):

SELECT. Where Firm = 'ТОВ "МММ" О'
Відповідно звернення до набору даних буде виглядати так:

Для ілюстрації проведемо невеликий тестовий приклад таблиці з такими записами назв фірм:

Щоб знайти першу фірму, потрібно зробити звернення типу:

Щоб знайти другу:

3. Трохи складніше йде справа, коли назву потрібної фірми вводиться в поле, тобто заздалегідь невідомо, містить воно подвійні або одинарні лапки. В цьому випадку при формуванні SQL-запиту потрібно визначити, які лапки містяться в найменуванні, і відповідно вибрати інші. Для цього можна запропонувати такий варіант:

Очевидно, що в подібних запитах проблема виникає при наявності в назві лапок двох типів. (Хоча, напевно, і тут можна якось примудритися.)

Наприклад, для наведеної вище бази з чотирьох записів запит:

знайде всі чотири записи, а запит:

знайде все перші три записи.

Зовсім недавно компанія Cougar представила нову серію блоків живлення для традиційних ПК - VTX, орієнтовану на користувачів з обмеженим бюджетом. У цьому огляді буде розглянута модель Cougar VTX600, яка завдяки своїм характеристикам буде однією з найбільш затребуваних в цій лінійці блоків живлення

На щорічному заході Capsaicin SIGGRAPH в Лос-Анджелесі компанія AMD зміцнила свої позиції на ринку ПК класу high-end з новими процесорами Ryzen Threadripper і GPU «Vega»

Для простого і зручного побудови мереж рядовими користувачами компанія ZyXEL випустила чергову версію свого Інтернет-центру для підключення до мереж 3G / 4G через USB-модем з точкою доступу Wi-Fi - ZyXEL Keenetic 4G III, який ми і розглянемо в цьому огляді

До своєї і так великій родині роутерів і маршрутизаторів фірма ASUS недавно додала дві вельми цікаві моделі: флагманську 4G-AC55U і більш просту 4G-N12. У даній статті буде розглянута флагманська модель ASUS 4G-AC55U

Молода, але амбіційна компанія KREZ на початку цього року випустила нову, оригінальну модель ноутбука KREZ Ninja (модель TM1102B32) під керуванням Windows 10. Оскільки цей комп'ютер має поворотний екран, він може служити універсальним рішенням - його можна з успіхом використовувати і для роботи, і для навчання, і для ігор

Якщо ви часто друкуєте фотографії та вже втомилися міняти картриджі в своєму принтері, зверніть увагу на МФУ Epson L850. Великий ресурс витратних матеріалів, чудова якість відбитків, найширший набір функціональних можливостей - ось лише деякі з переваг даної моделі

Схожі статті