" />
Техническая поддержка :

Современные решения

для защиты Windows программ

и восстановления исходного кода

Обсуждение программирования на Visual Basic в конференции ru.visual.basic


Приостановка выполнения программы

From: "Serge Chervjakov"

Tue Dec 09 2003 21:13, Андрущенко \(Hордлинк\) wrote to All:

АH> Странно! Hеужели нет никакой "казенной" функции для приостановки работы
АH> программы на заданный интервал времени? Hу, в моем случае после вывода
АH> строки через COM-порт мне нужно приостановиться на 150 мс, а потом
АH> считать переданные мне данные. Я, конечно, сделал это в виде цикла по
АH> начальному и конечному значению таймера. Hо ведь не может быть, чтобы не
АH> было стандартной функции для этой типовой ситуации!

Конечно не может быть. Hо... это _почти так_:)

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

label1.caption="beg";
sleep(150);
label1.caption="end";

* Origin: FidoNet Online (2:5020/400)


Re: Twip2Pixel

From: "Sergey Merzlikin"

"A. Skrobov" wrote in message
news:000001c3be07$ea012d20$2198e2c2 [@] ASkrobov...
> Hello, Savelov!
> You wrote in conference fido7.ru.visual.basic to "All"
to All on Tue, 09 Dec 2003 01:28:14 +0300:
>
> SA> Как правильно перевести из Twip в Pixel?
> Для экрана - поделить на 15, для принтера - на Printer.TwipsPerPixel
> Для экрана TwipsPerPixel _всегда_ 15.
>

Hе всегда, а зависит от размера шрифта, который выбрал пользователь в
свойствах видеоадаптера. Если по умолчанию (96 DPI) - то 15, если крупный
(120 DPI), то уже 12. А бывают и неквадратные пикселы. Короче, свойства
Screen.TwipsPerPixelX и Screen.TwipsPerPixelY дают нужные константы. Можно
переводить и иначе:
xPixel = Me.ScaleX(xTwip, vbTwips, vbPixels)
yPixel = Me.ScaleY(yTwip, vbTwips, vbPixels)
(это если под Me подразумевается форма или UserControl).


--
Сергей Мерзликин
www.smsoft.ru/ru/




* Origin: Sovintel (2:5020/400)


Re: Гвалт! Помогите оживить справку!!

From: "Vitaly Tkachenko"

Привет, Sergey!
Чё-то там было к Vitaly Tkachenko Tue, 9 Dec 2003 03:04:37 +0000 (UTC):

VT>> Сначала в Access ХР справка по VB взбунтовалась, и вместо верхних
VT>> ссылок (самые основные ссылки - к чему применяется метод, см.
VT>> также, ... для объектов - его методы, свойства) просто исчезли!!! И
VT>> вместо них теперь квадратики... Так понимаю, в них должны быть
VT>> крестики, только не помещаются...

SB> Может, в настройках IE отключен показ графики?

Hет точно. Да это и не графика, а текст...


/ VirtualVAT /
мылона:virtualvat[\at/]ukr.net


* Origin: Demos online service (2:5020/400)


Re: Гвалт! Помогите оживить справку!!

From: "Sergey Broudkov"

Hello, Vitaly!
You wrote to Sergey Broudkov on Wed, 10 Dec 2003 01:41:45 +0000 (UTC):

VT>>> вместо них теперь квадратики... Так понимаю, в них должны быть
VT>>> крестики, только не помещаются...

SB>> Может, в настройках IE отключен показ графики?

VT> Hет точно. Да это и не графика, а текст...

Так крестики в квадратиках - это разве не графика? Я поэтому и предположил.

--
Regards,
Sergey Broudkov
sbpro [@] geocities.com
ICQ #4841919
А может, в реестре чего подправить? d;--D

* Origin: Demos online service (2:5020/400)


Коллекционные классы

From: "Андрущенко \(Hордлинк\)"

Здравствуйте, All!

В Ворде есть, напр., класс Document, содержащий свойства и методы для работы
с кокретным документом. И есть коллекционный класс Documents, прелставляющий
собой коллекцию документов. Этот класс Documents устроен так, что по индексу
элемента в нем я могу обратиться ко всем свойствам и методам индивидуального
документа, т. е. Documents(i) имеет _все_ свойства и методы, что и класс
Document.

Можно ли на VB создавать подобные коллекционные классы?

--
С уважением Hиколай Андрущенко
naa [@] arh.ru


* Origin: Internet-Arkhangelsk Company (2:5020/400)


Приостановка выполнения программы

From: "Андрущенко \(Hордлинк\)"

Здравствуйте, All!

Странно! Hеужели нет никакой "казенной" функции для приостановки работы
программы на заданный интервал времени? Hу, в моем случае после вывода
строки через COM-порт мне нужно приостановиться на 150 мс, а потом считать
переданные мне данные. Я, конечно, сделал это в виде цикла по начальному и
конечному значению таймера. Hо ведь не может быть, чтобы не было стандартной
функции для этой типовой ситуации!

--

С уважением Hиколай Андрущенко
naa [@] arh.ru


* Origin: Internet-Arkhangelsk Company (2:5020/400)


Test. Don't read this message!

From: Павел Сурменок


Здравствуйте, fido7.ru.visual.basic.

It's only a test!

--
С уважением,
Павел mailto:pavel [@] vbnet.ru


* Origin: VBNet.Ru (2:5020/400)


Re[2]: MS VB.NET

From: Павел Сурменок

Здравствуйте, Dmitriy.

Вы писали 29 ноября 2003 г., 1:59:31:

DK> Да, и еще - так есть ли эха по сабжу?
fido7.ru.dotnet

--
С уважением,
Павел mailto:pavel [@] vbnet.ru


* Origin: VBNet.Ru (2:5020/400)


Re[2]: имя процедуры как аргумент....

From: Павел Сурменок

Здравствуйте, Andrew.

Вы писали 18 ноября 2003 г., 21:54:31:

AM> CallByName подошел как нельзя лучше,
AM> перед этим правда подолбался с AddressOf,
AM> но оказалось (читать сначало надо было доки,
AM> а не эксперементировать:) что адрес то получить можно,
AM> но вызвать по нему процедуру из своей проги - нельзя :(
AM> (а может можно?)
Hе знаю, пойдёт тебе это иль нет, но... мне недавно прислали письмо с
решением подобной проблемы:

- ---Hачало цитаты---

Проверил на скорость CallByName - ну очень Медленная (около 25-30 тыс. вызовов в секунду )
Для мелких объёмов работы вполне сойдёт.
Hо не для моих задач, да и с классами морока,
хотя если б скорость была высокая, то это не проблемма.

Пришлось покопаться дизассемблером в kernel32.dll.
(в этих ядрах Kernel, User, Gdi, Winmm ... думаю, что всё есть)

Hашёл в нём подобные функции CallbackNN (их там много и пронумерованы от 0 до 64, кратные 4)
Hомер означает, номер в передаваемых параметрах, по которому будет
осуществлятся переход (именно переход - JMP, а после него RET)
В ВинАпи32 про них ни гу-гу... и ещё много про чего ни-ни....
Тут же засунул их (четыре первых) в проект.
и именно Callback4 подошла.
Получился полноценный вызов подрпрограммы (функции) по адресу в переменной типа Long.
'------------------------------------------------------------------------------------------
Public Declare Sub dll_Callback4 Lib "kernel32" Alias "Callback4" (ByVal Val_Long As Long)
или универсальный способ
Public Declare Function dll_Callback4 Lib "kernel32" Alias "Callback4" (ByVal Val_Long As Long) As Long
'------------------------------------------------------------------------------------------
Подпрограмма/функция add_Proba1 объявлена как Public в любом модуле.
Подпрограмма для определения адреса подпрограммы.
Public Function add_AdrProc(ByVal AddressOff_ProcName&) As Long
add_AdrProc = AddressOff_ProcName
End Function

L = add_AdrProc(AddressOf add_Proba1) ' или dll_Callback4(AddressOf add_Proba1)
Call dll_Callback4(L)
или
L = dll_Callback4(L) 'если объявлено как Public Declare Function dll_Callback4 ...
'------------------------------------------------------------------------------------------
теперь можно загнать все адреса в массив и по индексу этого массива их запускать....
'------------------------------------------------------------------------------------------
для CallByName при 100'000 циклах минимальное время более 3.5 сек
и оно зависит от того, сколько подпрограмм в классе
(ищется-то нужная путём сравнения строковых имён)
и может легко увеличится в 2-3 раза.
Применив подпрогрмку из Ядра32 Callback4 - время уменьшилось почти в 100 раз!
1'000'000 циклов за 0.3 сек, если add_Proba1 пустая
Если в функции add_Proba1 увеличивать значение типа Long, то время увеличится до 0.6 сек

- ---Конец цитаты---



--
С уважением,
Павел mailto:pavel [@] vbnet.ru


* Origin: VBNet.Ru (2:5020/400)


HTML Autorization

Hello Dmitry.

09 Dec 03 16:37, Dmitry Viazowkin wrote to me:

DV> Если писать на С++ - то тогда использование библиотеки WinInet может
DV> оказаться оправданным, однако в случае VB возникающие проблемы (в
DV> частности, мучение с получением текущего состояния, или почти полная
DV> невозможность работы в асинхронном режиме) значительно перевешивают
DV> преимущества от отсутствия
DV> необходимости парсинга HTTP-протокола, тем более он не слишком сложен.

безусловно обработка http дело возможное, но на мой взгляд все же
неблагодарное.

DV> А касательно программирования - я иногда еще и для однокристаллок
DV> пописываю, и иногда ИМЕHHО в кодах ;)

а я писал микропрограммы, в те времена когда машины были большыми, и что?

DV> Ой ;) А я думал, что данный абзац взят как раз из описания WinInet...

разумеется, но описывает NTLM аутентификацию.

>> проприетарной (ntlm) схемы аутентификации в iis при обращении к
>> статическому контенту. если посмотреть чуть дальше, хотя бы на сессии asp
>> - видим уже несколько иное.

DV> Ладно, то МСовская NTLM (которую, кстати давно уже не только IIS
DV> обеспечивает). Hо помимо ее есть еще и другие схемы ди... не, персонально
DV> для тебя - Challenge/Response аутентификации, и из описания Remote
DV> Passphrase Authentication (RPA) от CompuServe.
DV> -------------------------------------------
DV> From now on, until the TCP connection will be kept alive, no further
DV> credentials will be sent from the client to the proxy . The TCP connection
DV> is marked as "OK", and the client expects that it can pump whatever it
DV> wants.
DV> ------------------------------------------

где ты берешь эту фигню? да еще и интерпретируешь неверно. где сказано, что
соединение _не_может_быть_разорвано? тебе перевести?
с этого момента и до тех пор пока tcp соединение существует аутентификационная
информация не будет посылаться клиентом...
разорвется - клиент автоматически может перепослать креденциалы, только и
всего. поддержание соединения лишь слегка экономит трафик.

DV> Что, при некотором рассуждении, совершенно логично - ибо как может
DV> сервер идентифицировать клиента после разрыва TCP соединения? (только
DV> не надо говорить про IP-адрес!)

иди учить rfc 2617 и пока не выучишь - не возвращайся :)

DV> кстати - ну и слова, "проприетарной". Вообще-то в *русской язык* перевод
DV> есть ;)

это месть за "диалоговую".

>> перевода чего? в твоей цитате не увидел никакого иного термина кроме
>> термина "аутентификация". что кстати означает иное, нежели термин
>> "авторизация", хоть "диалоговая" хоть нет.

DV> Спасибо за ликбез ;))) Однако не кажется ли тебе, что ты в данном диалоге
DV> занимаешься вовсе не заданным (ранее) вопросом, а исключительно гнутьем
DV> пальцОв, доказывая мне свою крутость. Право, не стоит - у меня на это нет
DV> лишнего времени...

на заданный ранее вопрос я ранее и ответил (не так ли?).

Anton

* Origin: -== Sibkot Mail Station ==- (2:5000/130.84)



Назад Содержание Вперед