Отправляет email-рассылки с помощью сервиса Sendsay

VB.NET-World

  Все выпуски  

Мир программирования на Visual BASIC 5.0 и HTML. Выпуск 34


Служба Рассылок Subscribe.Ru проекта Citycat.Ru
Мир программирования на Visual BASIC и HTML
Информация
  Архив рассылки
  Рассылка

Вопросы
  Автору
  По VB
  По HTML

Спонсоры
  Городской кот
  Subscribe.Ru
  Majordomo.Ru

Ссылки
  VB Streets
  Visual BASIC
  VB: Step by Step
  SnoozeX Design
  СообЧа
  СообЧа-VB
  Голосования
  VB Студия
  
Школа - сайт со шпорами, сочинени- ями, рефератами только для учеников!


VB Форумы
WEB:
  VBS Форум
  Ru.Visual.Basic
Mail:
  VBStreets
  СообЧа: VB
подписка - пустое письмо в VB группу

Доска почета
  Sergey VIMBERG
  Олег
  Oleg Palayda
  BSP
  Verter
  Николай
  hackcode
  Дмитрий Данелия
  Виталий Иванов
  Raven
  Сурменок Павел
  Шаронов Игорь
  Максим
  Глеб
  Daniel
  Foxtrot

Кнопки

Рассылка 'Мир программирования на Visual BASIC и HTML.'

мы в режиме:

SUPERTOP

SnoozeX Design

Опрос
Эта рассылка:
Лучшая в инете Очень хорошая
Хорошая
Неплохая
Хуже некуда


результаты

Друзья

Все для вебмастеров. Куча картинок, скриптов, доков
Ассемблер? Это просто! Учимся программировать
Дизайн и программирование
Html для начинающих и не только
Visual Basic: новости сайтов, советы, примеры кодов


Несколько слов от автора: Привет! Как всегда я с опозданием небольшим :), но что сделать? Школа, школа... Ну в общем я постараюсь поддерживать проект и надеюсь, что вы останитесь со мной на фронте!
Ваши пожелания:


E-Mail для ответа:

РАССЫЛКА: Открылся сайт рассылки по адресу http://vb-html.da.ru На сайте вы найдете весь архив рассылки, проекты и многое другое.
ПРИМЕЧАНИЕ: Выпуски данной рассылки начиная с первого вы сможете прочитать на http://subscribe.ru/archive/comp.design.snoozex/    @LEXis

16.09.2001 Выпуск N34 Обзор ведет @LEXis

 Сегодня в выпуске:

# E-Mail группа "СообЧа-Visual BASIC":
  • О группе
# Помощь по HTML - ведущий Daniel и Максим:
  • Фильтры Internet Explorer (Максим)
# Полезные коды Visual BASIC:
  • Имитируем нажатия клавиши клавиатуры
  • Вызываем окно установки связи
# Практикум на примерах:
  • Опубликование работ в Интернет. Программистам... (Часть 5)
  • Советы по оптимизации кода (Русский Проект)
# В разделе "вопросы/ответы":
  • Ответы на вопросы читателей
# Рубрика "Объявления"


 E-Mail группа "СообЧа-Visual BASIC"
  • О группе

Группа VB. Заходите в гости. Здесь вы приобретете практические навыки по программированию на Visual Basic. Как вы этого сможете достигнуть? Путем написания собственной серьезной программы. Чем обычно занимается рядовой чайник-программист? Ну, пишет там всякие приколы на VB... Ну, ма-а-ленькую полезную программку наваляет. А как получить навыки в создании серьезных программ? Правильно, путем создания серьезных программ. ;) Но в одиночку вам с этим не справиться. Вот для этого в проекте СообЧа существует группа программистов-чайников, которые занимаются разработкой серьезного софта на VB. Суть состоит в том, что вам совсем необязательно знать все в Visual Basicе. Вам достаточно быть рядовым чайником и немного знать операторы VB. Остальному научимся вместе. На данный момент в группе разрабатывается почтовая программа под рабочим названием "Сообчайлер". Она будет уметь все, что умеет популярная программа The Bat и даже намного больше. Есть сборник оригинальных идей, выдвинутых членами нашей группы, которые мы постараемся реализовать все вместе. Проект разбивается на отдельные простые задачи. Такие как: проверка орфографии, форма для написания нового письма, главное окно... и т.п. Каждую часть делает отдельный человек. Затем он высылает сделанный модуль в группу, и остальные просто присоединяют его к базовому проекту. Вам совсем не обязательно четко представлять, как это сделать. Достаточно просто начать и столкнуться с какой-нибудь проблемой. Пусть это будет даже проблема типа "А как добавить новый модуль к проекту?". Все. Наткнулись... ;) Дальше действуем по одной схеме - пишем письмо с описанием проблемы в группу и мы все вместе разбираемся в проблеме. Таким образом, все остальные получат ЗНАНИЯ и некоторые навыки в решении создавшихся проблем. Не забывайте - все мы чайники. Не стоит бояться задать вопрос. Задавайте - а мы вместе попытаемся найти ответ.
Подписаться в группу (пустое письмо)

 Помощь по HTML - ведущие Daniel и Максим
  • Фильтры Internet Explorer (Максим)

Сразу следует сказать, что ярым фанатам броузеров от Netscape эту заметку читать не следует, потому как речь в ней пойдёт о так называемых фильтрах, эффекты от которых часто можно увидеть на домашних страницах Васей Пупкиных и прочих начинающих вэб-мастеров.

Так что же такое фильтр ? Фильтр - это эффект для изменения внешнего вида текста или
графики на странице. Для применения фильтра используется свойство filter каскадный листов стилей, тоесть CSS. Отображаются фильтры ТОЛЬКО в броузерах Internet Explorer не ниже 4-й версии.

Синтаксис фильтра таков:
"filter:имя_фильтра(параметр1=значение, параметр2=значение, ... )"
Для некоторых фильтров параметры могут вообще отсутствовать.

Также фильтры делятся на два типа: статические и динамические. Со статическими всё ясно - меняется внешний вид объекта, а сам он остаётся неподвижным. Динамические фильтры позволяют изменять графический элемент с задаваемой пользователем скоростью переключения кадров (ну, мультик получается... :)) Статических фильтров существует 14, динамических - 23.

Перейдём к практике. Возьмём картинку (img.gif) и применим к ней фильтр прозрачности:
<IMG SRC=img.gif style=""filter:alpha(opacity=50)">" - имеем ту же картинку, но полупрозрачную.

Вот эффект сложнее:
<IMG SRC=img.gif style=""filter:wave(freq=5," strength=4, lightstrength=25)"> - в итоге наша картинка развивается стягом, в котором freq отвечает за количество всплесков, strength - за размер каждого всплеска в пикселях и lightstrength - за яркость света.

Всё очень просто, но мы на этом не остановимся. Оказывается, что визуальные эффекты фильтров поддерживаются языками сценариев. Доступ к фильтрам реализуется с помощью объектного свойства filters и атрибута ID графического элемента.

Вот как с этим справляется JAVASCRIPT:
<SCRIPT LANGUAGE="JAVASCRIPT">
FUNCTION Blur(inc){
Pic.filters.blur.strength+=inc;}
</script>
...
<IMG ID=Pic SRC=img.gif
style=""filter:blur(strength=10)""
OnMouseOver="javascript:Blur(20)"
OnMouseOut="javascript:Blur(-20)">
В этом примере функция Blur() обращается к фильтру blur объекта Pic и изменяет его параметр strength при наведении курсора мышки.

Подобные вещи мы можем делать и с помощью VBScript:
<SCRIPT LANGUAGE="VBSCRIPT">
Pic.style.filter = "flipv"
</script>
...
<IMG ID=Pic SRC=img.gif>
Здесь мы использовали фильтр fliph, который переворачивает изображение вокруг вертикальной оси.

В следующий раз мы попробуем разобраться с динамическими фильтрами, использование которых куда более сложнее.

И напоследок прошу вас не терять чувства меры при использовании фильтров, т.к. от перенасыщенности ими или от использования слишком вызывающих фильтров сайт теряет всякую эстэтическую ценность.

P.S. Ниже приведена таблица всех статических фильтров с их параметрами и описанием, которую я отрыл в справочнике.

Фильтр Параметры Описание
alpha opacity, finish opacity, style, startx, starty, finishx, finishy Задаёт постоянный уровень прозрачности
blur add, direction, strength Создаёт эффект движения
chroma color Создаёт одноцветный транспарант
dropshadow color, offx, offy, positive Обводит силуэт объекта
fliph - - - Делает горизонтальное отражение картинки
flipv - - - Делает вертикальное отражение картинки
glow color, strength Создаёт эффект "тления"
grayscale - - - Преобразует объект в черно-белый
invert - - - Инвертирует цвета, оттенки и яркость
light - - - Освещает объект от источника
mask color Делает из объекта маску транспарант
shadow color, direction Создаёт силуэт объекта отдельно от объекта (тень)
wave add, freq, lightstrength, phase, strength Создаёт волнистое искажение объекта
xray - - - Показывает только контур объекта

 Полезные коды Visual BASIC
  • Имитируем нажатия клавиши клавиатуры

Процедура keybd_event

Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Платформа
  • Windows 95: Поддерживает.
  • Windows 98: Поддерживает,но устарела;пользуйтесь SendInput.
  • Windows NT: Требуется Windows NT 3.1 или выше,но устарела для Windows NT 4.0 с Service Pack 3 (SP3) или выше;пользуйтесь SendInput.
  • Windows 2000: Поддерживает,но устарела;пользуйтесь SendInput.
  • Windows CE: Требуется Windows CE 1.0 или выше,но устарела для Windows CE 2.0 или выше; пользуйтесь SendInput.

keybd_event имитирует нажатия клавиш на клавиатуре

keybd_event не является функцией и не возвращает никаких значений.

Параметры
bVk
Виртуальный код клавиши для имитации нажатия и отпускания клавиши.
bScan
Зарезервировано -- установлено в 0
dwFlags
Комбинация следующих флагов определяет различные способы имитации:
KEYEVENTF_EXTENDEDKEY
Префикс скэн-кода с префиксным байтом, имеющим значение &HE0
KEYEVENTF_KEYUP
Клавиша, указанная в bVk будет отпущена. Если этот флажок не определен, клавиша будет нажата
dwExtraInfo
Дополнительное 32-разрядное значение, связанное с событием клавиатуры
Константы

Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2

Пример

' Имитируем нажатия клавиш CTRL+ESC для нажатия кнопки Пуск


keybd_event VK_CONTROL, 0, 0, 0  ' нажимаем CTRL
keybd_event VK_ESCAPE, 0, 0, 0  ' нажимаем ESC
keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0  ' отпускаем CTRL
keybd_event VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0  ' отпускаем ESC

  • Вызываем окно установки связи
Private Sub Form_Load()
Result = Shell("rundll32.exe rnaui.DLL,RnaDial " & "connection_name", 1)
End Sub

 Практикум на примерах
  • Опубликование работ в Интернет. Программистам... (Часть 5)

Работа с электронными и простыми СМИ

На самом деле работа с СМИ - очень важный параметр. Причем многие относятся к ней по-пользовательски просто: "Я дам денег, мне напишут статью профессионалы, после этого куплю рекламное место в газете - и все тут". Но профессионалы бывают разные, как и деньги, на них затраченные. Помните, как в "Золотом теленке" Остап продал в поезде журналисту Ухудшанскому "Торжественный комплект. Незаменимое пособие для сочинения юбилейных статей, табельных фельетонов, а также парадных стихотворений, од и тропарей"? Большинство PR-статей имеет однообразие, свойственное кризису жанра. Иногда доходит до абсурда. Например, письмо читателя начинается "Я слышал, что..." и заканчивается подписью "читательница Соловьева А. К.". Нет, есть и нормальные профессионалы, занимающиеся PR, только они стоят дороже.
Иногда стоит полагаться на авторов, работающих по "софтверной" тематике в периодических изданиях, ищущих развития уже проработанных и понятных им тем. Хотя большинство таких авторов находит информацию самостоятельно, в основном черпая ее из специализированных новостных рассылок и софтверных каталогов.
За такими журналистами обычно стоит своя аудитория, часть из которой является активной, к тому же авторы, специализирующиеся на "софтверной" тематике, практически всегда идут дальше и дают публикации на всевозможные сайты и в другие издания из различных регионов.
Что от Вас нужно автору, если программа его заинтересовала? Скорее всего, ничего. Только хорошим тоном бы была обратная связь с Вашей стороны. То есть упоминание его статей на своем сайте, что выгодно и Вам, и ему. Наверное, и все.
Электронные СМИ - весьма загадочная вещь. Обычно сайт прикреплен к какому-либо изданию, издаваемому типографским способом. Но сейчас появилась мода и на чисто сетевые СМИ. В меньшинстве - сайты с работающими профессионалами, требующие денег. В большинстве - проба пера от начинающих, кои ищут "событий", в основном для того, чтобы раскрутить ресурс. Вам выгодны и те, и другие. Ловите их на том, что с описанием Вашей программы их ресурс станет более полным и эксклюзивным. Хотя что мне объяснять прописные истины...

  • Советы по оптимизации кода (Русский Проект)
  • Избегайте длинных имен элементов управления и форм
    Помните, что имена элементов управления и форм хранятся в исполняемом файле, зато на именах переменных можете не экономить: они не хранятся в EXE-файлах
  • Не выгружайте часто используемую форму - просто спрячьте ее, в следующий раз она появится мгновенно
    Однако при этом событие Form_Load не произойдет, и Вы будете должны проинициализировать все поля вручную!
  • Всегда сбрасывайте форму в Nothing после ее выгрузки. Тем самым вы освободите всю память, занимаемую ее переменными и массивами и обеспечит ее правильную инициализацию при последующем ее вызове:

    Unload Form1
    Set Form1 = Nothing

  • Перед окончательной компиляцией приложения, удалите или закомментируйте все неработающие куски кода, модули которые Ваша программа не вызывает, и которые часто остаются при написании новых версий
  • Используйте константы везде,где только можно.Если вы
    укажете в программе 5 000 пар пустых кавычек,то создадите
    5 000 пустых строк,каждая из которых займет минимум
    по 5 байтов,а введя константу sEmpty,вы получите
    единственную строку
  • Всегда используйте Integer или Long тип переменных, вместо Single, Double, или Currency где это возможно. Математические операции с типами Integer и Long делаются за 1 такт процессора, и следовательно гораздо быстрее
  • Используйте Single вместо Double, если Вам не нужна точность Double. Переменная типа Single требует меньше памяти и работает быстрее в математических выражениях
  • Не пользуйтесь типом Variant, если не нуждаетесь в его особенных свойствах, таких например, как хранение величин типа Empty и Null. Каждая переменная Variant занимает 16 байт (против 8, занимаемых Double или Currency)
  • Обязательно добавьте в раздел General каждого модуля директиву Option Explicit. Это снизит риск неумышленного использования необъявленных Variant-переменных
  • Конкатенация - это медленная операция. Если вы хотите заменить 1-2 символа в строке - используйте ф-цию Mid$:

    Mid$(a$, 1, 1) = "A"


    Hе используйте такой код :

    a$ = "A" & Mid$(a$, 2)

  • Cтроковые переменные фиксированной длины часто медленнее чем стандартные строковые переменные. Фактически, все строковые функции работают только со строками переменной длины. Следовательно, все строки фиксированной длины сначала должны быть преобразованы, прежде, чем обработаются. Это может замедлить ваш код раза в три или четыре
  • Держитесь подальше от функций без значка "$" таких как Left и Trim, т.к. они возвращают значение типа Variant. Обычные функции Left$ и Trim$ возвращают результат немедленно, без его неявного преобразования в Variant
  • Использование ASCII кода при сравнении намного быстрее использования самого символа. Например:

    ' Сравнение с пробелом.
    If Left$(a$, 1) = " " Then ...

    ' Сравнение через код (на 40% быстрее)
    If Asc(a$) = 32 Then ...

    Такой подход обычно используют в блоках Select Case

  • Используйте встроенные строковые константы вместо Chr$ (). Hапример, используйте vbTab вместо Chr$ (9), и vbCrLf вместо Chr$ (13) и Chr$ (10)
  • Использование функции Len, чтобы проверить, содержит ли строка символы- приблизительно на 25 процентов быстрее чем явное сравнение с пустой строкой

    If Len(a$) = 0 Then ...
    это быстрее,чем
    If sName < > " " Then ...

  • Часто VB программисты сравнивают строки , используя LCASE$ или UCASE$, чтобы  преобразовать обе строки перед сравнением. Однако, быстрее прибегнуть к редко используемой функции StrComp:

    If StrComp(a$, b$, vbTextCompare) = 0 Then
    'строки равны
    End If

    30. Точно также, когда Вам нужно найти подстроку без учета регистра, используйте четвертый параметр функции InStr:

    If InStr(1, a$, "vb", vbTextCompare) Then ...

    Заметим, что при такой форме синтаксиса, Вы не можетие опустить первый аргумент. Если Ваша программа применяет поиск и сравнение исключительно без учета регистра, можете добавить директиву "Option Compare Text" в первую строку каждого модуля.

  • Функция InStr позволяет Вам быстро проверить содержится ли одиночный символ
    в списке символов. Hапример, так Вы можете определять, содержит ли a$ гласную:

    isVowel = InStr("aeiou", a$)

  • Когда Вам надо обработать каждый символ в строке, поместите строку в массив байтов и оперируйте с элементами массива. Помните что каждый символ Unicode описывается двумя байтами. Такой подход обычно быстрее, т.к. он не использует обычную в таких случаях функцию Mid$ и не нужно создавать временные строки. Например, самый быстрый способ подсчитать кол-во пробелов в строке:

    Dim b() as Byte, count As Integer
    b() = source$
    For i = 1 to UBound(b) Step LenB("A")
    If b(i) = 32 Then count = count + 1
    Next

    Отметим нестандартное использование функции LenB(). Она возвращает 2 под VB4/32 и VB5, и 1 под VB4/16, поэтому Вы можете использовать этот фрагмент кода без директивы #If условной компиляции. Будьте внимательны: эта техника может не прокатить, если Вы локализуете свой код для стран, использующих полный набор символов Unicode.

  • Вы ускорите загрузку форм и снизите потребляемые ресурсы, если будете применять более простые элементы управления. Например, не пользуйтесь элементом с вводом по маске (masked-edit controls) если Вам достаточно простого text box’а. В некоторых случаях можно использовать label с рамкой вместо read-only text box, набор Image, вместо Toolbar common control, маленький scrollbar вместо spin button, и т.д.
  • Установка AutoRedraw в False обычно удваивает скорость большинства графических методов, а также снижает требуемое кол-во памяти для ее отображения.
  • Если Вам необходимо установить AutoRedraw в True, попробуйте использовать формы с фиксированной рамкой (fixed-border forms). Фактически, когда у формы изменяемые границы, VB занимает непрерывный кусок памяти, величиной с целый экран, даже если окно никогда не максимизируется. Наоборот, когда у формы фиксированные границы, VB занимает память только под установленный размер формы.
  • Если Ваша форма не содержит графики, или создает графические объекты в процессе работы и они не перекрывают существующие элементы управления, установите свойство ClipControls в False для ускорения работы всех графических методов.
  • Вставляете ли Вы изображения в форму при конструировании, или во время ее выполнения из файла ресурсов, - Вы должны использовать сжатые форматы изображения (compressed bitmaps). Помните, что элемент PictureBox может читать RLE и WMF форматы, а в версии VB5 также PCX и JPEG. Если Вы ранее использовали компоненты третьих фирм для работы с этими форматами, Вы можете избавиться от этого изменив и перекомпилировав свой код под VB5 и сохранив старый файл ресурсов.
  • Используйте метод Move для изменения размеров или перемещения форм. Это быстрее, чем по отдельности изменять свойства Left, Top, Width, и Height.
  • Элемент PictureBox очень прожорлив, и если Вам не требуются такие его свойства, как поддержка DDE, графические методы, и способность содержать другие объекты – Вы можете повысить производительность своего приложения, заменив его на обычный элемент Image.
  • Не пользуйтесь пустыми циклами For … Next для реализации задержки в вашей программе. Используйте API функцию Sleep, которая не загружает процессор и позволяет другим приложениям в многозадачной среде работать:

    Declare Sub Sleep Lib "kernel32" (ByVal milliseconds As Long)
    ' пауза в 5 сек.
    Sleep 5000

  • Ускорить доступ к свойствам, или методам объектов можно уменьшением числа «точек» в выражении. Например, когда Вам надо сослаться на несколько «вложенных» объектов или элементов управления повторно:

    Form1.Text1.Text = ""
    Form1.Text1.ForeColor = 0

    Вы можете использовать временный объект или директиву With:

    With Form1.Text
    .Text = ""
    .ForeColor = 0
    End With

  • Свойства, определенные как переменные типа Public, всегда быстрее, чем пара свойств Let/Get даже на разных версиях VB. Это составляет около 7 раз для VB4, и только 4 раза на VB5.
  • Замените числа в небольших целых степенях их простым произведением. Например:

    ' Это в 7 раз быстрее, чем N^3

    x = N * N * N

    Вы можете также разбить большую степень с помощью временных переменных, в которых будете хранить промежуточные результаты:

    ' это в 3 раза быстрее, чем N^7

    tmp = N * N * N

    x = tmp * tmp * N

  • Пользуйтесь командами LSet или RSet для присвоения новых значений строкам без изменения их длины. При этом можно дополнять строку спереди или сзади пробелами, при необходимости.
  • Как только Вы создаете новую строку, или изменяете длину существующей, VB запускает свой строковый менеджер и тем самым тормозит Ваш код. Вы можете значительно повысить скорость Вашего кода путем уменьшения количества временных строк в вашей программе. Например, эти две строчки кода дают в результате одно и то же:

    length% = Len(a$ & b$)

    length% = Len(a$) + Len(b$)

    Но вторая строка раза в 3 быстрее потому, что с одной стороны операция «&» очень медленная, и с другой стороны строковый менеджер не выделяет память под временную строку a$ & b$.

  • Вы можете значительно понизить активность строкового менеджера, если не будете изменять длину строки после того, как Вы ее создали. Например, следующий код меняет содержимое строк:

    slen% = Len(source$)

    result$ = Space$(slen%)

    For i = 1 To slen%

    Mid$(result$, slen% + 1 – i, 1) _

    = Mid$(source$, i, 1)

    Next

    и он значительно быстрее, чем достижение результата путем добавления каждого символа друг за другом:

    result$ = ""

    For i = 1 To Len(source$)

    result$ = Mid$(source$, i, 1) _

    & result$

    Next

  • Вы можете добавить метод Show и после него DoEvent в событии Form_Load чтобы показать форму еще до того, как завершится процесс инициализации:

    Private Sub Form_Load()

    Me.Show

    DoEvents

    ' здесь откройте базу данных

    End Sub

  • Вы можете заменить многие элементы управления, используя графические методы. Например, элементы Line и Shape на графические методы Line и Circle, или 3-D Frame можно нарисовать, используя комбинацию линий. Window’s API рисует замкнутые полигоны и заполняет их цветом по Вашему выбору гораздо быстрее, чем графические методы VB.
  • Некоторая техника оптимизации форм подходит и для picture boxes. Например, Вы можете ускорить графические команды, установив свойства AutoRedraw и ClipControls в False. Помните, если Вы установили AutoRedraw в False, Вам придется следить за тем, чтобы случайно не обратиться к свойствам объекта Image. Это приведет к созданию VB временного образа, как если бы AutoRedraw было установлено в True.
  • Команда SavePicture сохраняет растровый файл в зависимости от установленного Вами режима видеоадаптера. Если вы сохраняете монохромный bitmap разрешением 640 на 480 в то время как Ваша видеокарта работает в 256-цветном режиме, файл на диске займет 300К вместо 37.5, которые нужны для картинки чтобы корректно ее сохранить (восемь пикселов на байт).
  • Используйте заставку для обратной связи с пользователем, при загрузке главной формы приложения. Хотя на самом деле это и не повысит скорость загрузки, зато пользователю будет казаться, что программа работает быстрее.
  • Когда Вы внедряете рисунок в форму, или файл ресурсов, всегда используйте минимально возможное количество цветов. 16-цветный рисунок занимает половину памяти требуемой для 256-цветового рисунка, а монохромный одну четверть памяти, требуемой для 16-цветного рисунка.
  • VB5 позволяет Вам указывать явно типы данных. Если очень нужно, Вы можете установить значение по умолчанию прямо в списке параметров.

    Под VB5 Вы можете написать более сжатый и эффективный код:

    Sub MyProc(Optional X As Integer = 10)

  • Если цикл содержит вычисляемое выражение, которое не изменяется во время выполнения цикла, вычисляйте его до цикла, а в цикле используйте временную переменную:

    For x = 1 to 1000

    ' вычисляйте x^2 вне цикла

    x2 = x * x

    For y = 1 To 1000

    squares(x, y) = x2 * y * y

    Next

    Next

    На языке компилятора, этот подход называется loop invariant. Вы можете еще больше усовершенствовать этот код, приготовив заранее массив, содержащий квадраты всех величин от 1 до 1000.

  •  Вопросы / Ответы
    • Отправитель вопроса Виталий
      Имеется TextBox (MultyLines = True), текст располагается на нескольких строчках, без разрыва слов, естественно. Необходимо вернуть массив текстовых переменных, каждая переменная = строка, и количество этих строк.
    • Отправитель вопроса Кирилл
      Здравствуйте, уважаемый Алексис! В силу профессиональных обязанностей мне пришлось заняться написанием макросов в Excel'е на VB. К сожалению в VB я ранее не углублялся, поэтому пришлось срочно набираться знаний из первых попавшихся мне на глаза книг. Однако некоторые вопросы для меня до сих пор не совсем понятны. Не смогли бы Вы помочь мне с одним из них? Вопрос по инструкции Declare. Предположим я хочу объявить ссылку на процедуру (пусть она называется PROCNAME), содержащуюся в некоторой внешней библиотеке (назовём её MEDIATOR.DLL). В этом случае синтаксис строки декларации будет приблизительно такой:
      Public Declare Sub PROCNAME Lib "MEDIATOR.DLL" (Var As Long)
      Из умных книжек я узнал, что в случае, если путь к .DLL не задан (как в моём примере), то VB начинает искать её сначала в текущем каталоге, потом в каталоге Windows, потом в Windows\System, а потом во всех каталогах, указанных в PATH Autoexec'a. Исходя из этого, я должен, либо точно указывать путь к DLL-ке в строке декларации, либо держать её в одном из стандартных каталогов, либо прописывать путь к ней в Autoexec'e. Однако, по некоторым причинам, ни один из перечисленных вариантов меня не устраивает. Вопрос такой: могу ли я каким-то образом (не прописывая никаких новых путей в Autoexec'e) заставить VB искать DLL-ку на всех локальных дисках машины, или динамически менять путь в строке декларации, в зависимости от настоящего местоположения DLL-ки?
      Заранее спасибо.
    • Отправитель вопроса Сурменок Павел
      Как из javascript записать описание стиля внутрь тэга ? Если писать через document.write , то пишется в .
    • Отправитель вопроса Krab
      Привет, @LEXis! Не могу осуществить такой алгоритм: мне нужно, чтобы проверялись все возможные пароли (пишу крякалку). Проверяется один символ, потом первый ASCII символ, а следующие проверяются, и т.д. Как смотреть символы я знаю, но я не знаю как перебирать: первый символ один - следующий все подряд.
     Объявления
    • Требуются люди
      Хочу напомнить, что еще пусты многие вакансии рассылки:
      - Рубрика "Практикум на примерах"
      Также можно просто присылать коды.

    Код моей кнопки:

    <!-- SnoozeX Design "PLAY" -->
    <a href="http://snoozex.boom.ru" TARGET="_blank"><BR><IMG SRC="http://snoozex.boom.ru/new.gif" WIDTH=88 HEIGHT=31 BORDER=1 ALT="SnoozeX Design"></a>
    <!-- SnoozeX Design "END" -->

    Выпуск подготовили:                    
    @LEXis
    и еще наша команда!
    @LEXis ICQ uin : 14912636
    Подписаться на рассылку Кувалина Алексея
    Мир программирования на Visual BASIC и HTML
    © 2000 - 2001 @LEXis & Design by SnoozeX Design
    Рассылка является составной частью проекта "СообЧа - СООБщество ЧАйников"
  • Сайт СообЧа: http://www.soobcha.ru/
  • Сайт группы по VB: http://soobcha-vb.narod.ru/
  • Сайт рассылки: http://soobcha-vb.narod.ru/alex/
  • Подписаться на сообщество
    © 2000 - 2001 СообЧа (СООБщество ЧАйников)
    Спасибо за внимание. Ваш @LEXis


    http://subscribe.ru/
    E-mail: ask@subscribe.ru
    Отписаться
    Убрать рекламу
    Рейтингуется SpyLog

    В избранное