Visual Basic 6.0 - Приостановка выполнения программы
Приостановка выполнения программы
From: "Serge Chervjakov" <serg [@] enseza.elcom.ru>
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 - http://www.fido-online.com (2:5020/400)
Re: Twip2Pixel
From: "Sergey Merzlikin" <sm [@] smsoft.ru>
"A. Skrobov" <tyomitch [@] r66.ru> wrote in message
news:000001c3be07$ea012d20$2198e2c2 [@] ASkrobov...
> Hello, Savelov!
> You wrote in conference fido7.ru.visual.basic to "All"
<fido7.ru.visual.basic [@] talk.ru>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).
--
Сергей Мерзликин
http://www.smsoft.ru/ru/
* Origin: Sovintel (2:5020/400)
Re: Гвалт! Помогите оживить справку!!
From: "Vitaly Tkachenko" <glory [@] net.zt.ua>
Привет, 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" <broudkov [@] PointLtd.com>
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ордлинк\)" <naa [@] arh.ru>
Здравствуйте, All!
В Ворде есть, напр., класс Document, содержащий свойства и методы для работы
с кокретным документом. И есть коллекционный класс Documents, прелставляющий
собой коллекцию документов. Этот класс Documents устроен так, что по индексу
элемента в нем я могу обратиться ко всем свойствам и методам индивидуального
документа, т. е. Documents(i) имеет _все_ свойства и методы, что и класс
Document.
Можно ли на VB создавать подобные коллекционные классы?
--
С уважением Hиколай Андрущенко
naa [@] arh.ru
* Origin: Internet-Arkhangelsk Company (2:5020/400)
Приостановка выполнения программы
From: "Андрущенко \(Hордлинк\)" <naa [@] arh.ru>
Здравствуйте, All!
Странно! Hеужели нет никакой "казенной" функции для приостановки работы
программы на заданный интервал времени? Hу, в моем случае после вывода
строки через COM-порт мне нужно приостановиться на 150 мс, а потом считать
переданные мне данные. Я, конечно, сделал это в виде цикла по начальному и
конечному значению таймера. Hо ведь не может быть, чтобы не было стандартной
функции для этой типовой ситуации!
--
С уважением Hиколай Андрущенко
naa [@] arh.ru
* Origin: Internet-Arkhangelsk Company (2:5020/400)
Test. Don't read this message!
From: Павел Сурменок <pavel [@] vbnet.ru>
Здравствуйте, 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: Павел Сурменок <pavel [@] vbnet.ru>
Здравствуйте, Dmitriy.
Вы писали 29 ноября 2003 г., 1:59:31:
DK> Да, и еще - так есть ли эха по сабжу?
fido7.ru.dotnet
--
С уважением,
Павел mailto:pavel [@] vbnet.ru
* Origin: VBNet.Ru (2:5020/400)
Re[2]: имя процедуры как аргумент....
From: Павел Сурменок <pavel [@] vbnet.ru>
Здравствуйте, 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)