Надо зацитатить ещё...
Ну я понимаю, вы тут профи старой школы, кто на Суре сидел, кто на Спектруме...
ну не профи старой школы... не профи. чтот тут поделаешь. и на спектруме я никогда не сидел.
Ну я понимаю, вы тут профи старой школы, кто на Суре сидел, кто на Спектруме...
Amed писал(а):VB_D3D_Денис, Mid возвращает тип Variant...
VB5 Help писал(а):Mid Function
Returns a Variant (String) containing a specified number of characters from a string.
Dim MyVar As String
MyVar = mid("abc", x, y)
Dim MyVar ' или Dim MyVar as Variant
MyVar = mid$("abc", x, y)
Хакер писал(а):Это не Amed как всегда прав. Это просто ты не прав. А Amed прав настолько же, насколько и я и все остальные люди, знающие о том что Variant - зло (в основном) и что операции с ним занимают значительно больше времени, чем при использовании конкретных типов.
Option Explicit
Function BinToDec(BinNumber As String) As Long
Dim i, j, S
For i = Len(BinNumber) To 1 Step -1
S = S + (Val(Mid(BinNumber, i, 1)) * (2 ^ j))
j = j + 1
Next
BinToDec = S
End Function
Function BinToDec_Magic(BinNumber As String) As Long
Dim i As Long, j As Long, S As Long
For i = Len(BinNumber) To 1 Step -1
S = S + (Val(Mid$(BinNumber, i, 1)) * (2 ^ j))
j = j + 1
Next
BinToDec_Magic = S
End Function
Function BinToDec_NoMagic(BinNumber As String) As Long
Dim i As Long
For i = 1 To Len(BinNumber)
BinToDec_NoMagic = BinToDec_NoMagic * 2 + Val(Mid(BinNumber, i, 1))
Next
End Function
Sub Main()
Dim Start As Double, rpt As Long
Start = Timer
For rpt = 1 To 1000000
BinToDec "101010101"
Next
Debug.Print Timer - Start, "BinToDec"
'14.17: исходный вариант
Start = Timer
For rpt = 1 To 1000000
BinToDec_Magic "101010101"
Next
Debug.Print Timer - Start, "BinToDec_Magic"
'11.03: ускорение на 20% от магического знака доллара
Start = Timer
For rpt = 1 To 1000000
BinToDec_NoMagic "101010101"
Next
Debug.Print Timer - Start, "BinToDec_NoMagic"
'7.08: ускорение на 100% без магического знака доллара
End Sub
VB_D3D_Денис писал(а):А дело в том, что чем больше основание, тем короче длина! Вот и упаковка данных.
Додумай эту мысль до конца. Какое бы основание ты не придумал, храниться данные все равно будут в байтах. С основанием 256.VB_D3D_Денис писал(а):А дело в том, что чем больше основание, тем короче длина! Вот и упаковка данных.
Он таки телепат...alibek писал(а):Хакер, помоему твоя мнительность зашкаливает разумные пределы.
tyomitch
VB_D3D_Денис писал(а):Официально заявляю: Код, который я привел, а точнее функция ConvDecToAny работала НЕПРАВИЛЬНО!
Теперь на ее месте архивчик с готовым модулем и примером на Excel (Excel потому, что писалось на работе где нету VB)
В модуле три функции: Из десятичной в любую, из любой в десятичную и из любой в любую (NEW!!!) (Как предложил Хакер)
Сейчас этот форум просматривают: Google-бот и гости: 4