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

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

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

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

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


Авторизация на прокси

Respect, All!

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

Заранее спасибо!

Let it be... All.
* Origin: If you wanna be, be a little bee...(c) (2:5033/39.7)


Re: Byte Array(Variant) and API (Part 2)

From: Alexander Asyabrik

Привет, A.Skrobov.

Вы, было дело, писали 13 октября 2003 г., 5:43:18:

AS> В этом случае третий DWORD варианта указывает не на SAFEARRAY, а
AS> как раз на первый байт массива.

Дык пробовал я. Hепохоже на правду: "...недопустимая операция".

AS> Как различать эти два случая, сам догадаешься, или подсказать?

Когда передается массив в варианте, то маска поля vt определяется как
vt_ui1 or vt_array

а если "чистый" байтовый массив то
vt_ui1 or vt_byref or vt_array

тоесть разница в установке бита vt_byref

И що цэ мэни дало?:) Где данные-то искать?

PS Я тут тупо справку по OLE просмотрел. Может мне вот это нужно?

The VariantChangeType function handles coercions between the
fundamental types (including numeric-to-string and string-to-numeric
coercions). A variant that has VT_BYREF set is coerced to a value by
fetching the referenced value.

Или я уж совсем не туды?


--
Alexander



* Origin: Talk.Mail.Ru (2:5020/400)


Re: Byte Array(Variant) and API (Part 2)

From: Alexander Asyabrik

Привет, Master.

Вы, было дело, писали 13 октября 2003 г., 7:22:23:

DK> Hе понимаю, ты ведь скриптовый компонент пишешь? А разве там есть Byte?
DK> Или, если это компонент для программ на чистом VB, то тогда почему не
DK> получается принять аргумент как () As Byte?

Я пишу, в этом смысле, _универсальную_ ActiveX DLL. И в соответствии с
идеями COM технологии, должна быть возможность использовать ее в любой
среде, эту технологию поддерживающую. Вот и пытаюсь соответствовать.

DK> В общем, пример кода надо бы.

А ты его просто запустить не сможешь полноценно. Он работает не с
win32api, а со специфическим апи одной утилиты. Hо это типа _lWrite

Если только для визуального изучения (все детали опущены):

' В модуле класса, естественно

Private Declare Function WHX_WritePtr Lib "whxapi.dll" Alias _
"WHX_Write" (ByVal lpBuffer As Long, ByVal Bytes As Long) As Long

Public Sub WriteBytes(bBuffer As Variant)
Dim res&, Lindex&, Uindex&, Size&
Dim VarArrPtr&
Size = (Uindex - Lindex) + 1
VarArrPtr = GetVariantArrayPtr(bBuffer)
res = WHX_WritePtr(VarArrPtr, Size)
If res = 0 Then GenerateError ERR_Write
End Sub

Проще некуда. И с массивом в варианте работает. Hо если в качестве
аргумента будет передан байтовый массив, то VarArrPtr равен нулю и ...
ласты, короче.


--
Alexander



* Origin: Talk.Mail.Ru (2:5020/400)


Вопрос

From: "Mihail Borisov"

Hi All,

Как создать новую директорию в той же папке где установлена программа?

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


Re: Byte Array(Variant) and API (Part 2)

From: "A. Skrobov"

Hello, Alexander!
You wrote in conference fido7.ru.visual.basic to "A.Skrobov" to A. Skrobov on Mon, 13 Oct 2003
13:53:31 +0000 (UTC):

AS>> В этом случае третий DWORD варианта указывает не на SAFEARRAY, а
AS>> как раз на первый байт массива.
AA> Дык пробовал я. Hепохоже на правду: "...недопустимая операция".
А мне удавалось, как раз сегодня утром. Хорошо проверял?

AA> Когда передается массив в варианте, то маска поля vt определяется как
AA> vt_ui1 or vt_array
AA> а если "чистый" байтовый массив то
AA> vt_ui1 or vt_byref or vt_array
AA> тоесть разница в установке бита vt_byref
То же значение можно получить ф-ей VarType.

AA> И що цэ мэни дало?:) Где данные-то искать?
А ты просто посмотри на все поля варианта, авось в каком-то нужный адрес лежит.

AA> PS Я тут тупо справку по OLE просмотрел. Может мне вот это нужно?
AA> The VariantChangeType function handles coercions between the
AA> fundamental types (including numeric-to-string and string-to-numeric
AA> coercions). A variant that has VT_BYREF set is coerced to a value by
AA> fetching the referenced value.
AA> Или я уж совсем не туды?
Я ожидаю, что можно сделать и 'обычно', без АПИ. Где-то данные ведь должны лежать.


With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru



--
* Origin: Talk.Mail.Ru (2:5020/400)


Авторизация на прокси

||*()*|| Ах это вы, Pavel ? А я вас не узнал без санитара...

13 окт 03 года ты писал(а) к All:


PB> Может, кто-нибудь из многоуважаемых читателей конференции сталкивался
PB> с сабжем и решил эту проблему средствами VB? Если да, сообщите как...
PB> Очень надо....

Можешь воспользоваться готовыми библиотеками EasyMail.

(https://www.quiksoft.com)

Там есть такие опции для протокола IMAP4


I'll be back, Pavel !
www.caligari.zp.ua - реальная психологическая и психиатрическая помощь. Анонимно. Пока бесплатно.

* Origin: Hе мошенничайте! Государство не любит конкурентов (2:4641/500.99)


Firebird

||*()*|| Ах это вы, Ivan ? А я вас не узнал без санитара...

06 окт 03 года ты писал(а) к A:

[...skipped...]

AB>>> Кто-нибудь работал с сабжем из VB.
AS>> Я, я, я работал!

IK> А чего там стpашного? Вpоде же ODBC дpайвеpов на него -- как собак
IK> неpезанных.

Ах, разочаровался я и в Firebird. С ним тоже дистрибутив безобразно распухает.

I'll be back, Ivan !
www.caligari.zp.ua - реальная психологическая и психиатрическая помощь. Анонимно. Пока бесплатно.

* Origin: Hе мошенничайте! Государство не любит конкурентов (2:4641/500.99)


MsChart тормозит

||*()*|| Ах это вы, Oleg ? А я вас не узнал без санитара...

08 окт 03 года ты писал(а) к All:

OC> САБЖ! Сильно. Вывод на 3 панели 10-ти спектров по 1000 точек в каждом.
OC> Как ускорить? Или может есть что-то похожее, но не такое тормозное? Я
OC> раньше делал ручной вывод Pset-ом - таких тормозов не было, но в
OC> ручную долго и плохо масштабируется. :(

Hачиная, кажется, с третьей версии дельфей в комплекте с ней идет файлик cfx32.ocx. Лучшей библиотеки для построения графиков еще не видел. И из VB полностью работоспособно. Я в свое время за час разобрался что там к чему. Только вместе с нею в WINDOWS\SYSTEM должет еще лежать файл cfx32.lic.

I'll be back, Oleg !
www.caligari.zp.ua - реальная психологическая и психиатрическая помощь. Анонимно. Пока бесплатно.

* Origin: Hе мошенничайте! Государство не любит конкурентов (2:4641/500.99)


Re: Вопрос

Мы где-то виделись, Mihail?

13 Oct 03 19:11:09 в RU.VISUAL.BASIC Mihail Borisov -> All:

MB> Как создать новую директорию в той же папке где установлена программа?

MkDir
App.Path

Всего хорошего!
Дмитрий Козырев aka Master

* Origin: Дорогу осилит идущий. (2:5023/11.148)


Re: Byte Array(Variant) and API (Part 2)

Мы где-то виделись, Alexander?

13 Oct 03 17:53:32 в RU.VISUAL.BASIC Alexander Asyabrik -> мне:

AA> Public Sub WriteBytes(bBuffer As Variant)

В общем, я разобрался.
Череда указателей: OleVariant -> DWORD -> SAFEARRAY -> массив.

Sub a(v)
Dim ov As OLEVARIANT
Dim sa As SAFEARRAY
Dim l As Long
Dim b As Byte

CopyMemory ov, v, Len(ov)
CopyMemory l, ByVal ov.dwData, 4
CopyMemory sa, ByVal l, Len(sa)
CopyMemory b, ByVal sa.pvData, 1
MsgBox b
End Sub

Всего хорошего!
Дмитрий Козырев aka Master

* Origin: Дорогу осилит идущий. (2:5023/11.148)



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




Главная     Программы     Статьи     Разное     Форум     Контакты