VB Студия
VB Line
Статистика:
На рассылку подписаны 3 человека.
Голосование:
Ваш голос отсылается по E-mail владельцу сайта, после чего голоса анализируются и на отдельной странице выводятся результаты.
Какой версией Visual Basic Вы пользуетесь?
|
Содержание выпуска
Новости сайта VB Студия
3 августа 2001 года - Хорошая новость!!! Открылась рассылка с новостями двух VB-сайтов - конечно же нашего и VBLine. Также в каждом номере рассылки Вы сможете найти несколько хитростей, кусков кода, примеров.
Здесь форма подписки, поиска по архиву, кнопка-счётчик подписчиков
Старые новости ушли в Архив
31 июля 2001 года - Обновлён FAQ.
Добавилась рубрика Вопрос/Ответ. Там Вы можете задать вопрос или ответить на уже имеющиеся вопросы.
Добавилась рубрика Хитрости. Там собраны всевозможные хитрости и трюки.
наверх
Новости сайта VB Line
06 августа 2001 г. Что-то я слишком часто стал сайт
обновлять! Кстати, а Вы знаете, что недавно
вышел юбилейный 5-ый выпуск моей рассылки?
Вы ещё не подписались? Спешите. Форма для
подписки внизу страницы, а можно прямо здесь.
Вразделе Статьи небольшое обновление - новые работы
Михаила Эскина.
В раздел Советы
добавил ещё несколько советов. Кроме того я не обошел стороной разделы
ActiveX и
Примеры.
И ещё, хочу принести публичные извинения
Дмитрию Авакову, за то, что присланный им новый
контрол "валялся" у меня с мая, а я его
не опубликовал. Ну "зашился" я. Sorry. Он
размещен в ActiveX,
контрол посвящен прозрачным кнопкам.
наверх
Шифровка/расшифровка текста с использованием пароля
Option Explicit
Public Function Encrypt(ByVal Source As String, ByVal Password As String) As String 'шифрование данных
Dim a As String
Dim b As String
Dim c As String
Dim d As String
Dim lentext As Long
Dim lenpass As Long
Dim cn As Long
'ввод исходных данных
'исходный текст для шифрования - запрашивается от пользователя, к примеру -
a = Source
'пароль: может запрашиваться от пользователя
b = Password
'итог шифрования
c = ""
'узнаем длины каждой из строк
lentext = Len(a)
lenpass = Len(b)
'собственно шифрование
For cn = 1 To lentext
'в этой строке разберитесь сами, здесь попросту выполняется функция Xor с каждым символом исходной строки и соответствующим символом пароля, как бы "повторенным" на всю длину исходного текста. Mid берет из середины строки символ, Asc - превращает его в ASCII-код, Str - превращает число в строку, Trim - удаляет пробелы
d = Trim(Str(Asc(Mid(a, cn, 1)) Xor Asc(Mid(b, ((cn - 1) Mod lenpass) + 1, 1))))
'а теперь сделаем так, чтобы каждый символ занимал ровно три позиции, вне зависимости от величины его ASCII-кода. А иначе как вы будете потом при расшифровке разбивать строку на символы?
Select Case Val(d)
Case 0 To 9
d = "00" + d
Case 10 To 99
d = "0" + d
End Select
c = c + d
'ну вот и все, и так - с каждым символом из исходной строки
Next cn
'в итоге в переменной с - зашифрованная строка, каждой исходной букве соответствует 3 символа, ее можно записать в любое место - в документ, к примеру:
Encrypt = c
End Function
Public Function Decrypt(ByVal Code As String, ByVal Password As String) As String 'расшифровывание данных
Dim a As String
Dim b As String
Dim c As String
Dim d As String
Dim lentext As Long
Dim lenpass As Long
Dim cn As Long
'строка для расшифровки
c = Code
'пароль
b = Password
'итог расшифровывания
a = ""
'узнаем длины каждой из строк
lentext = Len(c)
lenpass = Len(b)
'собственно расшифровывание
For cn = 1 To lentext Step 3
a = a + Chr(Val(Mid(c, cn, 3)) Xor Asc(Mid(b, (Int(cn / 3) Mod lenpass) + 1, 1)))
Next cn
'в итоге в переменной a - расшифрованная строка, ее можно записать в любое место - в документ, к примеру:
Decrypt = a
End Function
наверх
Разбивание строки на составляющие по разделителям
Если Вам потребуется самому распечатать строку текста в несколько строк, то ее,
наверняка, нужно "отформатировать", т.е. разбить на строки. Приведенная ниже
процедура делит строку на составляющие (по символам vbCrLf) и записывает их в
массив.
'Процедура делит входящую строку на строки по
разделителям 'возврата каретки и записывает из в массив Public Sub FormatLine(sLine As String, ArrayLine() As String) Dim iX
As Integer Dim iS As Integer Dim iSOld As Integer Dim lLenth As
Integer
'инициализация
переменных iSOld = 1 Do iS =
InStr(iSOld, sLine, Chr(13)) X = X + 1 ReDim Preserve
ArrayLine(X) If iS = 0 Then lLenth =
Len(sLine) Else lLenth = iS - iSOld End
If ArrayLine(X) = Mid(sLine, iSOld, lLenth) iSOld = iS +
2 Loop While iS <> 0 End Sub
Обратите внимание на то, что для поиска разделителя здесь
нужно использовать функцию InStr, а не перебирать все символы строки по порядку
Mid$. Это связано с тем, что функция InStr работает быстрее раз в 5-6.
наверх
Формирование из числа его "строкового" представления
Многим из Вас приходилось формировать из числа, содержащего количество секунд
строку, показывающую количество часов, минут и секунд. Для этого можно
воспользоваться готовым примером.
'Формирует строку с указанием количества
минут(часов, секунд) Public Function FormatTime(lTime As
Long) As String Dim lSec As Long Dim lMin As Long Dim lHour As
Long Dim lTemp As Long Dim i As Long
If lTime < 60
Then FormatTime = lTime & " сек" ElseIf lTime / 60 < 60
Then lTemp = lTime Do While lTemp > 60 i
= i + 1 lTemp = lTemp - 60 Loop lMin =
i lSec = lTime - (lMin * 60) FormatTime = lMin & " мин
" & lSec & " сек" Else lTemp = lTime Do
While lTemp > 60 * 60 i = i + 1 lTemp = lTemp -
60 * 60 Loop lHour = i i = 0 lTemp =
lTime - (lHour * 60 * 60) Do While lTemp > 60 i = i
+ 1 lTemp = lTemp - 60 Loop lMin =
i lSec = lTime - (lHour * 60 * 60) - (lMin * 60)
FormatTime = lHour & " час " & lMin & " мин " & lSec & "
сек" End If End Function
Код, конечно, немного запутан, но вполне работоспособен.
Если процедуре передать число 126, то она возвратит "2 мин 6 сек".
наверх
Вопрос/Ответ
Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы.
Вопросы:
Пока вопросов нет.
Можете заполнить эту форму, либо отослать вопрос СЮДА
Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта.
наверх
|