Visual Basic 6.0 - Help
Re: Help
Я ВАС приветствую Dmitriy!
11 Окт 03 13:21, Dmitriy Kozyrev -> Roman Spotar:
RS>> Run-time '429':
RS>> ActiveX component can't create object.
DK> [здесь ничего и не было]
RS>> И ещё одна библиотека под названием MC145170.dll а также программа
DK> для
DK> [здесь ничего и не было]
DK> Попробуй выполнить
DK> regsvr32 MC145170.dll
Hе помогло всё так и осталось.
С уважением, Роман Спотарь.
Home 380-6242-39915 (15:30-21:00)
* Origin: Зажигалка Zippo огнетушитель UnZippo (2:4653/10.5)
Re: Firebird
Hello Alexander.
13 Окт 03 18:20, you wrote to me:
AB> Ах, разочаровался я и в Firebird. С ним тоже дистрибутив
AB> безобразно распухает.
3 метpа дистpибутив. Для полноценного сеpвеpа -- ноpмально. Если есть какие-то пpоблемы, юзай всякие mSQL, mySQL, tinySQL. :)
Всё зависит от конкpетной задачи.
Ivan
* Origin: Ухэр татац харвах бабах...(с)"Правда Илбэча" (2:5023/19.9)
MSDN
From: "Alexej Bobylev" <alex171069 [@] udmnet.ru>
1528063497
HI !
Великий ALL, может у тебя есть свежий MSDN или может ты знаешь где его
можно скачать ?
* Origin: format (2:5050/5050)
БД
i #|П| |Р |И| |В |Е +#, *All* !
Hа удалённом компе находится база данных, как можно её подключить к пpиложению
(логин и паpоль на доступ нужно вводить тоже в пpиложении)???
#\W/ |i| + |H| |B |E |S + \W/ |i| |S |H| |E |S#, *(О) /л\ |Е |г*
_сейчас_ *14 октябpя 03 г. ::: 00:46* :.:.:...
*[soft-best.net][beer]* e-mAil: _HiTman [@] soft-best.net_;
_oleg-yurchenko [@] yandex.ru_ ICQ: _170340841_
* Origin: ::: Ce n'est pas comme il faut! ::: (2:5081/5.3)
Вопрос
||*()*|| Ах это вы, Mihail ? А я вас не узнал без санитара...
13 окт 03 года ты писал(а) к All:
[...skipped...]
MB> Как создать новую директорию в той же папке где установлена программа?
MkDir App.Path & "\Hовая папка"
I'll be back, Mihail !
http://www.caligari.zp.ua - реальная психологическая и психиатрическая помощь. Анонимно. Пока бесплатно.
* Origin: Hе мошенничайте! Государство не любит конкурентов (2:4641/500.99)
Re[2]: Byte Array(Variant) and API (Part 2)
From: Alexander Asyabrik <belmis [@] mail.belpak.by>
Привет, Master.
Вы, было дело, писали 13 октября 2003 г., 20:27:
AA>> Public Sub WriteBytes(bBuffer As Variant)
DK> В общем, я разобрался.
DK> Череда указателей: OleVariant -> DWORD -> SAFEARRAY -> массив.
DK> Sub a(v)
DK> Dim ov As OLEVARIANT
DK> Dim sa As SAFEARRAY
DK> Dim l As Long
DK> Dim b As Byte
DK> CopyMemory ov, v, Len(ov)
DK> CopyMemory l, ByVal ov.dwData, 4
DK> CopyMemory sa, ByVal l, Len(sa)
Так вот при передаче обычного байтового массива здесь череда-то у меня
и обрывается: sa.pvData не содержит валидного указателя!!! Там
оказывается 0. Я же об этом сразу сказал, кажется.
DK> CopyMemory b, ByVal sa.pvData, 1
DK> MsgBox b
Так что у меня всегда в мессадже 0, какой бы ни был первый байт
массива.
Может это глюк какой? Тогда странно, почему сразу на обоих моих компах
и на VB5 и VB6 одновременно. Или может какая специфика из-за того, что
это все в модуле класса?
Лирическое отступление:
Смотрю на чужие постинги и думаю себе: нормальные люди задают
нормальные вопросы типа как программно создать директорию или кнопку
на форме, где скачать MSDN:), а от меня вечно исходит какая-то
бредятина. Аж неудобно мне как-то...
--
С уважением, Alexander
11:08:07 PM
* Origin: Talk.Mail.Ru (2:5020/400)
Re[2]: Byte Array(Variant) and API (Part 2)
From: Alexander Asyabrik <belmis [@] mail.belpak.by>
Привет, A.Skrobov.
Вы, было дело, писали 13 октября 2003 г., 19:45:
AS>>> В этом случае третий DWORD варианта указывает не на SAFEARRAY, а
AS>>> как раз на первый байт массива.
AA>> Дык пробовал я. Hепохоже на правду: "...недопустимая операция".
AS> А мне удавалось, как раз сегодня утром. Хорошо проверял?
А что ж там можно сделать плохо? Функция-то работающая, просто указатель
ей другой передаю и все.
AA>> Когда передается массив в варианте, то маска поля vt определяется как
AA>> vt_ui1 or vt_array
AS> То же значение можно получить ф-ей VarType.
Можно, но в обоих случаях возвращается 8205. Я толком не знаю, что
есть VT_BYREF, но VB его игнорирует. Для VarType вообще такой
константы непредусмотрено.
AA>> Где данные-то искать?
AS> А ты просто посмотри на все поля варианта, авось в каком-то нужный адрес лежит.
В первом 16-битном поле лежит тип варианта. Потом три 16-битных
пустых (0), ну и в последнем Dword-e некое значение. Использование его, как
указатель для записи в файл вешает VB. Если это указатель на какую-то
структуру, то на какую?
AA>> Может мне вот это нужно?
AA>> The VariantChangeType function
AS> Я ожидаю, что можно сделать и 'обычно', без АПИ. Где-то данные ведь должны лежать.
Дык, знамо дело, должны. Только как определить это место?
--
С уважением, Alexander
8:37:16 PM
* Origin: Talk.Mail.Ru (2:5020/400)
Re: Byte Array(Variant) and API (Part 2)
From: Alexander Trishin <trialFORSPAM [@] trishin.com>
Alexander Asyabrik wrote on Sun, 12 Oct 2003 21:32:54 +0000 (UTC):
> Может, что подскажешь в обход проблемы? Как в этом случае получить
> указатель на массив?
Я конечно пропустил Part 1, но почему бы просто не передавать VarPtr,
размер одного элемента массива и количество элементов?
--
AT
* Origin: Demos online service (2:5020/400)
Re[2]: Byte Array(Variant) and API (Part 2)
From: Alexander Asyabrik <belmis [@] mail.belpak.by>
Привет, Alexander.
Вы, было дело, писали 14 октября 2003 г., 1:33:
AA >> Как в этом случае получить указатель на массив?
AT> Я конечно пропустил Part 1, но почему бы просто не передавать VarPtr,
AT> размер одного элемента массива и количество элементов?
Пропустив, не много потерял, я думаю:) Hо это заметно.
1) В моем случае VarPtr указывает совсем не на массив, а на структуру,
описывающую переменную типа Variant
2) Размер одного элемента всегда 1 байт (только байтовый массив)
3) Зачем АПИ функции количество элементов, если ей не объяснили где
расположен первый?:) BTW АПИ функции фиолетово размер и количество
элементов передаваемого массива, ей подавай конечное число _байтов_
Такие вот дела.
--
С уважением, Alexander
12:36:53 AM
* Origin: Talk.Mail.Ru (2:5020/400)
Re: Byte Array(Variant) and API (Part 2)
From: Alexander Trishin <trialFORSPAM [@] trishin.com>
Alexander Asyabrik wrote on Mon, 13 Oct 2003 21:50:32 +0000 (UTC):
> AT> Я конечно пропустил Part 1, но почему бы просто не передавать VarPtr,
> AT> размер одного элемента массива и количество элементов?
>
> Пропустив, не много потерял, я думаю:) Hо это заметно.
Так "не много", или "заметно" ? :)
> 1) В моем случае VarPtr указывает совсем не на массив, а на структуру,
> описывающую переменную типа Variant
VarPtr никуда не указывает. Она возвращает адрес. Если у тебя переменная -
Variant, то будет адрес структуры VARIANT.
> 2) Размер одного элемента всегда 1 байт (только байтовый массив)
Тогда размер одного элемента не нужен.
> 3) Зачем АПИ функции количество элементов, если ей не объяснили где
> расположен первый?:) BTW АПИ функции фиолетово размер и количество
> элементов передаваемого массива, ей подавай конечное число _байтов_
Число байт тоже не нужно. Если я правильно понял нужно это:
VB code:
Dim c As Variant
ReDim c(3) As Byte
c(0) = &H1
c(1) = &H2
c(2) = &H3
c(3) = &H4
WriteBytes VarPtr(c), UBound(c) + 1 ' второй параметр на самом деле
' нафиг не нужен
C++ DLL function:
int WINAPI WriteBytes(int buf, int size)
{
VARIANT* v = static_cast<VARIANT*>((void*) buf);
if ( v->vt != (VT_ARRAY | VT_UI1)) return 0;
SAFEARRAY *sf = static_cast<SAFEARRAY*>((void *)v->pparray);
BYTE *data = static_cast<BYTE*>((void*) sf->pvData);
for (int i = 0; i < sf->rgsabound[0].cElements; i++)
{
BYTE b = data[i];
// do something with BYTE
}
return 0;
}
--
AT
* Origin: Demos online service (2:5020/400)