Страница: 1 | 2 | 3 |
Вопрос: NTFS - сжатый, зашифрованный.
Добавлено: 17.07.04 23:41
Автор вопроса: NorN | Web-сайт:
Ответы
Всего ответов: 33
Номер ответа: 16
Автор ответа:
Андрей Никитин
ICQ: 325172082
Вопросов: 3
Ответов: 81
Профиль | | #16
Добавлено: 19.07.04 18:11
вдогонку: ну вот... опять опоздал
>to CyRax:
Номер ответа: 17
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #17
Добавлено: 19.07.04 18:25
> Несрабатывания врядли тут могут быть. Разве что глюк VB.
Скорее всего... У меня, правда, не сработал вариант с if len(str) then ... Тогда Len возвращал значение отличное от нуля, но условие - не выполнялось!, когда же я поменял на if not len(str)=0& then... Как ни странно все закрутилось...
Номер ответа: 18
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #18
Добавлено: 19.07.04 18:37
8=1000
7=111
4=100
Что делает AND: TRUE AND TRUE=TRUE; TRUE AND FALSE=FALSE; FALSE AND TRUE=TRUE
Сравнение 7 AND 4
7 111
4 100
= 100
Сравнение 8 AND 4
7 1000
4 100
= 000
Номер ответа: 19
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #19
Добавлено: 19.07.04 18:42
Исправляю опечатки
Сравнение 8 AND 4
8 1000
4 _100
= _000
Номер ответа: 20
Автор ответа:
Pashenko
ICQ: 176176951
Вопросов: 14
Ответов: 655
Профиль | | #20
Добавлено: 19.07.04 18:44
FALSE AND TRUE=TRUE - лажа полнейшая.
Результат логической операции не зависит от порядка следования операндов (по крайней мере and, or, xor, not).
Номер ответа: 21
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #21
Добавлено: 19.07.04 20:12
Опечатка
FALSE AND TRUE=FALSE
Номер ответа: 22
Автор ответа:
NorN
Вопросов: 7
Ответов: 15
Web-сайт:
Профиль | | #22
Добавлено: 19.07.04 23:56
Public Const FILE_ATTRIBUTE_ARCHIVE = &H20
Public Const FILE_ATTRIBUTE_COMPRESSED = &H800
Public Const FILE_ATTRIBUTE_HIDDEN = &H2
Public Const FILE_ATTRIBUTE_NORMAL = &H80
Public Const FILE_ATTRIBUTE_READONLY = &H1
Public Const FILE_ATTRIBUTE_SYSTEM = &H4
А "FILE_ATTRIBUTE_ENCRYPTED" чему равен?
Номер ответа: 23
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #23
Добавлено: 20.07.04 00:07
Private Const FILE_ATTRIBUTE_ENCRYPTED As Long = &H4000
Номер ответа: 24
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #24
Добавлено: 20.07.04 08:52
В VB6 операторы Or и And ведут операции с числами.
В VB .NET - с логическими величинами, а для операций с числами введены
опереаторы AndAlso и OrElse.
Подробнее читайте у дядки Эплмана
Номер ответа: 25
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #25
Добавлено: 20.07.04 13:12
Павел,
Ещё есть XOR и NOT.
Что ты подразумеваешь под логическими величинами?
Номер ответа: 26
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #26
Добавлено: 20.07.04 14:17
Знаю про XOR и NOT...
Логические величины - имеется в виду Boolean.
Номер ответа: 27
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #27
Добавлено: 20.07.04 17:05
Понятно. Неудивительно что более быстрый способ сделали второстепеным. От MS подобного можно было ожидать.
Номер ответа: 28
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #28
Добавлено: 21.07.04 08:30
Есть этому нормальное объяснение...
Цитирую Эплмана:
Логические величины (Boolean) теперь занимают 4 байта вместо двух. Впрочем, этот факт не должен влиять на работу большинства программ.
Помню, на первых порах существования Visual Basic шли жаркие споры относительно природы переменной Boolean. Дело в том, что переменная Boolean поддерживает всего два значения (True и False, представленные значениями -1 и 0), но Visual Basic 6 выполняет с переменными типа Integer поразрядные операции.
Например, в следующем фрагменте:
If 4 And 8 Then
Debug.Print “Should be true”
Else
условие считается ложным, и строка не выводится. Операторы VB6 And и Or работают с числами не как с логическими величинами, а как с совокупностью разрядов. Применительно к числам они работают правильно лишь в том случае, если True всегда является -1, а False всегда представляется 0. Логические операции с числами часто дают логически непоследовательные результаты. В этом случае числа 4 и 8 (отличные от 0) с позиции логики относятся к True, поэтому выражение 4 And 8 вроде бы должно быть равно True. Тем не менее, результат поразрядной операции 4 And 8 равен 0, то есть False.
Это может приводить к ошибкам, особенно при использовании функций API, возвращающих 1 в случае удачного завершения. Например, функция API IsWindow возвращает 1 для действительного манипулятора окна. Иначе говоря:
• проверка условия If IsWindow () работает правильно, поскольку 1 интерпретируется как True;
• проверка условия If Not IsWindow () работает неправильно, поскольку результат Not -1 равен 1, что тоже интерпретируется как True!
Программистам Vb (особенно работающим с функциями API) приходится проявлять дополнительную осторожность, сравнивая результаты только с 0 и никогда не опираться на фактическое значение сравниваемой величины.
В VB .NET используется объект System.Boolean, принимающий только два значения: True и False. В версии бета-1 компания Microsoft героически попыталась внести толику здравого смысла в традиционные правила работы с логическими переменными в Visual Basic и переопределила операторы And и Or как логические вместо поразрядных. Кроме того для выполнения поразрядных операций были определены новые операторы BitAnd и BitOr. При таком разграничении логические операции Not, And и Or всегда работают только с логическими типами (или переменными, преобразованными к логическому типу), что устраняет все возможные неоднозначности. Если вы хотите выполнить поразрядную операцию, используйте BitNot, BitAnd и BitOr.
К сожалению, некоторым недальновидным программистам VB6 удалось убедить Microsoft, что это изменение каким-то образом нарушает те принципы, благодаря которым Visual Basic завоевал такую популярность, и Microsoft по столь же непостижимым причинам уступила.
В результате в VB .NET True по-прежнему определяется как -1, а логические и поразрядные операции выполняются одной командой.
В этом нетрудно убедиться при помощи проекта Boolean (листинг 8.1).
Листинг 8.1. Проект Boolean
‘ Демонстрация работы с логическими переменными
‘ Copyright ©2001 by Desaware Inc.
‘ All Rights Reserved.
Module Module1
Sub Main()
Dim A As Boolean
Dim I As Integer
A = True
I = CInt
Console.WriteLine (“Value of Boolean in Integer is: “ + I.ToString())
Console.WriteLine (“Value of a System Boolean in Integer is: “ + I.ToString())
I = 5
A = CBool(I)
Console.WriteLine (“Value of Boolean assigned from 5 is : “ + A.ToString())
I = CInt
Console.WriteLine (“And converted back to Integer: “ + I.ToString())
Console.WriteLine(“5 And 8: “ + (CBool(5) And CBool(8)).ToString)
Console.WriteLine(“5 And 8: “ + (5 And 8).ToString())
Console.ReadLine()
End Sub
End Module
Результат выглядит следующим образом:
Value of Boolean in Integer is: 1
Value of Boolean assigned from 5 is : True
And converted back to Boolean: 1
4 And 8: True
4 BitAnd 8: 0
Логические переменные могут принимать два значения: True и False. Пока логические операции выполняются с логическими переменными, все замечательно. Но помните: когда VB .NET встречает числовую переменную вместо логической, он выполняет с ней поразрядную операцию, что может приводить к возникновению непредвиденных ошибок.
Номер ответа: 29
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #29
Добавлено: 21.07.04 12:40
Ошибочка тут у боготворимого всеми Vb.Net-чиками програмера
IsWindow
Return Values
If the window handle identifies an existing window, the return value is nonzero.
If the window handle does not identify an existing window, the return value is zero.
Т.е. IsWindow может вернуть или хендл окна или ноль. А про 1 и -1 в MSDN'е ничего не сказано.
А про скорость я не зря сказал. Это вовсе не VB выполняет побитовые логические операции, а их выполняет микропроцессор. И любая дополнительная обработка забирает лишние такты.
Пророку Аплеману хочется ещё больше удобства, но давайте исходить из того, что настоящий программист это не VB-маньяк, а человек знающий VB наряду с другими языками программирования.
Именно это и даёт возможность применять знания других языков(поддерживающих только побитовые логические операции), невзирая на "новшества" от Мс.
Номер ответа: 30
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #30
Добавлено: 21.07.04 16:33
Что то я в последнее время лажаться начал
Сошлюсь на то что я не выспался