Что нового в WSE 2.0? - Расширения Web-сервисов для Microsoft .NET версии 2.0 включают ряд расширений по сравнению с более ранними версиями WSE, предназначенных для упрощения использования политики безопасности, установления продолжительных безопасных сеансов обмена сообщениями.
MAILNow - Простой e-mail клиент в возможностью получения и отправки почты. Правда, еще немного недоделанный, но уже вполне рабочий и может послужить основой для более серьезных проектов :)
ListBox - Контрол (ctl) ListBox - Различные Border - Tag к каждому эллементу списка - Выравнивание по лев., прав. краю и по середине - Возможность отображения иконки у каждого эллемента списка - Фоновая картинка (норм. растянуто, размножено)
Microsoft Developer Network (MSDN) для пользователей Visual Studio .NET
Группа разработчиков MSDN объявляет о начале действия предложения MSDN для пользователей Microsoft Visual Studio .NET. Корпорация Майкрософт предлагает клиентам, обладающим лицензиями на Microsoft Visual Studio .NET 2002 или Microsoft Visual Studio .Net 2003 перейти от Microsoft Visual Studio .NET к подписке на MSDN.
Мобилизация разработчиков!
Совместная акция Microsoft, Motorola и партнеров по продвижению средств разработки Microsoft в России для разработчиков. Приобретая с 1 марта по 30 июня коробочную версию MSDN Universal у партнеров Microsoft — участников акции вы получаете в подарок смартфон Motorola MPx200 на базе Microsoft Smart Phone 2002.
Конкурс для разработчиков завершен
Главный приз конкурса для разработчиков, прошедшего 14 мая 2004 года и приуроченного к выходу русской версии стандартной редакции Visual Basic .NET 2003, — автомобиль Hyundai Getz — получил Сергей Ильин из Москвы, который правильно ответил на 18 вопросов.
Microsoft представляет новое решение для локализации приложений
Microsoft представляет новое решение для локализации приложений: Microsoft Application Translator. Графический интерфейс ваших приложений может быть на любом из языков, которые имеются в Windows XP или Windows Server 2003.
02.06.2004 - Встреча Kiev .NET User Group
В учебном центре Квазар-Микро будет проводиться встреча разработчиков на платформе .NET. Точная дата 3 июня в 19.00 Встреча посвящена стратегическим вопросам развития платформы Microsoft.
26.05.2004 - Встреча UNETA в Харькове
4 июня в 18:00 в городе Харькове состоится очередная встреча сообщества.
25.05.2004 - MSDN Flash 17.05.2004
Важнейшие материалы, новые веб-ресурсы, продукты и технологии наших партнеров, веб-презентации, общение в режиме реального времени, мероприятия для разработчиков.
У мня в книге написано, что ByVal это передача параметра по значению, а ByRef по ссылке, и тут же приводится пример где при передаче параметра ByVal передается адрес: VarPtr(i) и все работает, так почему ByVal называет по значению, ну и наоборот?
Ответы:
Автор: sne
ByRef (By Reference - по ссылке)
ByVal (By Value - по значению)
' mov eax, [esp+4]
' mov ecx, [eax]
' add ecx, 1
Private Sub a(l As Long)
l = l + 1
End Sub
' mov eax, [esp+4]
' add eax, 1
Private Sub b(ByVal l As Long)
l = l + 1
End Sub
Как можно видеть передача параметра ByRef, заносит в регистр ecx (в данном случае) ссылку на реальное значение... Это лишняя операция, и именно по этому существует мнение что передача по значению осуществляется быстрее... хотя одна операция с регистрами много код не замедлит ;) (imho)
Автор: Sharp
> заносит в регистр ecx (в данном случае) ссылку на реальное значение...
Ты уверен? Обычно ведь при передаче по ссылке в стек кладется 4-байтовый адрес структуры или Unicode-строки или числа в памяти, а при передаче по значению само число кладется в стек, либо 4-байтовый адрес строки, скопированной как ASCIIZ... Сомневаюсь, что ByRef передает адрес через ECX, ведь API их вполне нормально принимают...
Автор: sne
Sharp, ты наверное меня несколько не понял, или я неясно выразился ;)
Это не ByRef заносит/передает, а при использовании ByRef используется еще один регистр и совершается еще одна операция...
Это я к тому, что если есть возможность, то желательно использовать ByVal...
Т.е. при ByRef в стек положили адрес, по этому адресу отокопали число и уже только тогда с ним можно работать (тут прибавляется 1).
А при ByVal, в стеке уже все готовенькое, берем и используем :)))
А про есх, с тем же успехом тут можно было написать mov eax, [eax]...
PS Это отдизасемблированный код... и я не намерен сомневаться в его истинности :)))
PPS Возможно я и не прав... но по-моему все правда :D
Автор: sne
А, понял к чему это ты... это я не туда фразу ткнул :)
Сейчас попытаюсь исправиться:
%Как можно видеть передача параметра ByRef, заносит в регистр ecx (в данном случае) реальное значение...
------------------------------------------
Суть в чем, п++ри использовании ByRef передается адрес, чтобы работать с реальным значением, нужно взять его по этому переданному в функцию адресу. Для этого VB сделал mov eсx, [eax], можно было бы записать mov eax, [eax], но это не суть важно...
Я к тому, что, при передаче по ссылке, делается одна лишняя, по сравнению с передачей по значению, операция... вот и все...
Автор: LamerOnLine
Многие API функции требуют указатель на какую либо структуру в памяти, но в декларации указыается ByVal, то есть передача по значению.
VarPtr возвращает адрес этой структуры. Его ты и передаешь ПО ЗНАЧЕНИЮ.
Это не совсем логично, но, к сожалению, API функции не пишутся под VB. Это особенно актуально, когда ссылка на переменную или объект находится в структуре. Тут ByRef неприменим.
Автор: digitron
To sne:
>>Это я к тому, что если есть возможность, то желательно использовать ByVal...
посмотри: http://www.mvps.org/vb/hardcore/html/anatomyofbasicprocedurecall.htm
Автор: sne
:) Ну строку, Double, Single, Variant оно ясно что по ссылке будет быстрее :) А вот с Long - остается только гадать, почему такая несправведливость...
Спрашивал, как из VB выключить комп в ХР.
Получил несколько ответов.
Воспользовался нижнеприведённым.
Автор пишет, что у него всё работает.
У меня отрабатывает только EWX_LOGOFF и EWX_FORCE !!!
Там ниже ещё приписали, мол, Читай MSDN!.
Если не в тягость, пришлите кусочек того MSDN, с удовольствием прочту!.
Ответ:
Автор ответа: Белашин М.В.
Разместите в модуле:
Public Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, _
ByVal dwReserved As Long) As Long
Public Const EWX_LOGOFF = 0
Public Const EWX_SHUTDOWN = 1
Public Const EWX_REBOOT = 2
Public Const EWX_FORCE = 4
А это в коде:
Dim s As Long
'Так можно сделать Shut down
s = ExitWindowsEx(EWX_SHUTDOWN, 0&)
'Так можно сделать Log off
s = ExitWindowsEx(EWX_LOGOFF, 0&)
У меня есть помещеный файл *.exe в инете, вот мне надо на VB .NET указать путь к этому файлу и узнать версию этого файла (этот фаил написан на VB и указана версия 1.1.0) ...
Решил сделать “апдейт” своему Visual Basic 6.0 (не плющит меня .NET).
Какие есть дополнения и обновления к Visual Basic 6.0?
Какой SP последний, существует ли Visual Assist под VB6, что нужно поставить, чтобы использовать Flash MX из VB6. Какие новые библиотеки было бы неплохо поставить.
Вообще, какие инструменты упрощают жизнь VB программисту.
Есть исходник работы с MSAccess, работаю впервые и вот в чем беда:
В модуле прописываю:
Public cn As adodb.connection
Public rs As adodb.Recordset
Sub main()
Set cn = New adodb.Connect
cn.connectionstring = "DSN=job;"
cn.open
Form1.Show
End Sub
Но при запуске выводит ошибку 'User-defined type not defined' по поводу строк cn As adodb.connection и rs As adodb.Recordset
На компе, откуда списал исходник прога нормально работает. Может я чего-то упустил? И еще: при написании проги подключали какую-то библиотеку. Может кто подскажет какую?
Option Explicit
Public Function Dec(Hex As String) As Long
'Переводит числа из основания 16 в основание 10
Dim Counter As Integer
Dim Value As Integer
Do
Counter = Counter + 1
Select Case Mid$(Hex, Counter, 1)
Case Is = "A"
Value = 10
Case Is = "B"
Value = 11
Case Is = "C"
Value = 12
Case Is = "D"
Value = 13
Case Is = "E"
Value = 14
Case Is = "F"
Value = 15
Case Else
Value = Mid(Hex, Counter, 1)
End Select
Dec = Dec + Value * (16 ^ (Len(Hex) - Counter))
Loop Until Counter = Len(Hex)
End Function
ODBC, например.
Там, правда, свои грабли.
И получить можно только данные - никакого форматирования и т.п.
Если нужен пример кода - пишите, попробую найти.
Вопрос:
У меня есть файл (123.txt) в котором написан VB код, допустим MsgBox "Hello World!!!". Мне нужно чтобы программа выполняла этот код. Т.е. при нажатии на кнопку выполняется код из файла.
Так как Вы написали, сделать нельзя, поэтому есть два варианта, писать свой компилятор или же сделать так: если в текстовике нашли команду MsgBox то вызываем из кода программы процедуру, например, ShowMsg, в качестве параметра передаем текст, который спрятан в текстовике, например, в "" (на мой взгляд, самый простой и беспроблемный выход).
Вопрос:
Когда я с помощью элемента управления DriveListBox выбираю диск A (3.5), программа у меня выдает ошибку (только когда в нем нету дискеты) о том, что в устройстве отсутствует носитель, она закрывается. Как мне сделать, чтобы вместо ошибки он мне выдал сообщение "Вставьте дискету..." и можно было вернуться назад на исполнение программы?
Handler:
If Err.Number=(здесь пишешь код твоей ошибки, он появляется вместе с сообщением о ней) then
answer=msgbox "Дай рубль","Прога",vbOkCancel
if answer=vbOk then ... обращаешься к дисководу,
делаешь то, что нужно
end if