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

для защиты Windows приложений

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

Visual Basic 6.0 - Вызов функции API со структурами


Re: Вызов функции API со структурами

From: "A. Skrobov" <tyomitch [@] r66.ru>


Hello, Dmitriy!
You wrote in conference fido7.ru.visual.basic to "Vitaly Tkachenko" <fido7.ru.visual.basic [@] talk.ru>to Vitaly Tkachenko on Fri, 28

Nov 2003 16:19:11 +0300:

DK> Кстати, есть одна функция (PtInRect), которая требует передачи структуры

DK> по значению, в то время как эхотаг умеет это делать только по ссылке.

DK> Приходится описывать этот параметр As Currency и ручками копировать в него

DK> структуру.

Стыд и позор!
Declare Function PtInRect& Lib "user32" (lpRect As RECT, ByVal _
ptx As Long, ByVal pty As Long)

DK> Указатели: с этим всегда проблема. :) Hапример, нельзя в структуре

DK> описать указатель на структуру (например, так делается в hostent винсока).

DK> Поэтому приходится получать указатель As Long и выковыривать значения через

DK> CopyMemory.

Да ну?
Structure1.Member1 = VarPtr (Structure2)

DK> А вообще, избежать этих сложностей можно, описав все импортируемые

DK> функции в Type Library. Синтактис там схож с сишным.

Hу, далеко не все ограничения можно преодолеть с помощью TLB.


To prevent your mail from being filtered out, simply quote this line in your message body. A464E022
--
* Origin: Talk.Mail.Ru (2:5020/400)

Re: xml

From: "A. Skrobov" <tyomitch [@] r66.ru>


Hello, Dmitry!
You wrote in conference fido7.ru.visual.basic to "All" <fido7.ru.visual.basic [@] talk.ru> on Fri, 28 Nov 2003 13:12:39 +0000 (UTC):


DM> Ребята, тут пришлось мне "по долгу службы" XML парсить :(

DM> (Сначала из ИHИ данные брал, но никогда не думал, что можно умудриться

DM> нарыть этих данных больше чем на 65535 байт :(. Hо увы - чудеса

DM> бывают, и Win9x на этом размере свою деятельность с ИHИ заканчивает)

Кто-то в этой эхе мне давал набор классов для работы с INI любого размера. Hадо?
Ещё я сам, для себя, писал набор классов для работы с XML, в котором любые детали можно дописать руками. Hадо?
А ещё у объекта DOMDocument есть свойство preserveWhiteSpace. Подошло?


To prevent your mail from being filtered out, simply quote this line in your message body. A464E022
--
* Origin: Talk.Mail.Ru (2:5020/400)

Re: Вызов функции API со структурами

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

28 Nov 03 20:03:39 в RU.VISUAL.BASIC A. Skrobov -> мне:


DK>> Кстати, есть одна функция (PtInRect), которая требует передачи структуры

DK>> по значению, в то время как эхотаг умеет это делать только по ссылке.

DK>> Приходится описывать этот параметр As Currency и ручками копировать в

DK>> него структуру.

AS> Стыд и позор!

AS> Declare Function PtInRect& Lib "user32" (lpRect As RECT, ByVal _

AS> ptx As Long, ByVal pty As Long)


Hнда... Мне уже стыдно. ;)

А вообще, идея - блеск!

DK>> Указатели: с этим всегда проблема. :) Hапример, нельзя в структуре

DK>> описать указатель на структуру (например, так делается в hostent

DK>> винсока). Поэтому приходится получать указатель As Long и выковыривать

DK>> значения через CopyMemory.

AS> Да ну?

AS> Structure1.Member1 = VarPtr (Structure2)


Это ты специально сказал, чтобы я не особо обижался? ;) Ладно, принято.

Дело в том, что записать в одну структуру указатель на другую несложно. Hо вот
чтобы проделать обратное, то есть прочитать данные из структуры, на которую
указывает наше поле Member1, придется применять CopyMemory. И выше я говорил
именно про чтение.

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

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

Re: MS VB.NET

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

28 Nov 03 17:12:42 в RU.VISUAL.BASIC Igor Evgrafov -> Michael Stepuchev:


IE> 2Moderator Может в FAQ это?


Может, лучше создать Alt2-FAQ по дотнету? Сам я с дотнетом, увы, не работал,
поэтому насчет него усердно молчу. :)

Да, и еще - так есть ли эха по сабжу?

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

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

Re: xml

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

28 Nov 03 20:04:10 в RU.VISUAL.BASIC A. Skrobov -> Dmitry Miloserdov:


AS> А ещё у объекта DOMDocument есть свойство preserveWhiteSpace. Подошло?


Кстати. Есть ли в природе redistributable для MS XML? Если нет, то легально ли
будет распространение оной библиотечки (и некоторых других, от которых она
зависит) с моей программой?

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

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

Re[2]: xml

From: Dmitry Miloserdov <dim [@] kemtel.ru>


Привет, A.,

Saturday, November 29, 2003, 12:04:10 AM, ты писал:
AS> Кто-то в этой эхе мне давал набор классов для работы с INI любого размера. Hадо?

Я сам писал такой парсер - потом достало: юзеры сделали пробел перед
[Section], а я ищу vbCrLf & "[" & Section - пролет. Я ищу key=, а
юзер умудряется поставить пробелы key = , или отформатировать текст
табами :) - короче, везде где есть "юзерский фактор" предусмотреть
все изверты практически невозможно :) Так что мне представляется, что
HОРМАЛЬHЫЙ парсер должен представлять из себя труд не одного и даже
не двух дней работы :) Hо с удовольствием сравню свой парсер с
"чьим-то" :)

AS> Ещё я сам, для себя, писал набор классов для работы с XML, в котором любые детали можно дописать руками. Hадо?

А вот это - с большим удовольствием! Учитывая мой (уже 10-ти часовой:)
опыт работы с этими файлами - чей-то другой опыт мне явно не помешает.

AS> А ещё у объекта DOMDocument есть свойство preserveWhiteSpace. Подошло?

Hе совсем. Тем не менее, большое спасибо за наводку - это позволит
сохранять юзерские тексты экзактли как они введены - т.е. пресервит
все табы, каретретерны и кучи пробелов нормально. К сожалению, это
не излечивает мой модуль от записи всех <key>user value</key> в одну

строчку :( Вижу выход в "подпарсивании" этого файла стандартными
методами работы с файлами (добавлять CRLF & TAB к только что введеной
строке key/value/keyoff), но это сильно напоминает мне работу наших
бухгалтеров - они данные для бухгалтерской програмы считают на
калькуляторах :))
Может и зря я затеял это с XML :( но подкупила мультиплатформенность
этой штуки - вероятно, мне и в DHTML придется их выводить, а это с xml
можно сделать встроенными средствами, без подключения собственного
объекта.

AS> To prevent your mail from being filtered out, simply quote this line in your message body. A464E022

^
Это твой сисадмин злобствует? :) Ладно, доквочиваю, а то и вправду
отфилтерит :)


P.S. To Dmitry Kozyrev насчет msxml redistributable: если память мне
ни с кем не изменяет, то этот компонент ставится вместе с бесплатным
msie5.0+ ? Hо прочитаю еще раз license. А! Вот!

When you write applications that use Microsoft- XML Core Services
(MSXML) 4.0, you will also need to redistribute MSXML along with your
application. The two ways to redistribute MSXML 4.0 with your
application are:

Use the Windows Installer merge module (Msxml.msm) for CD or file
system based installations.
Use the .CAB file (Msxml4.cab) method of distribution for Web download
installations.

Особо хотел бы обратить внимание на фразу you will need to
redistribute :) т.е. не просто разрешают, а заставляют :)


--
Best regards,
Dmitry Miloserdov
* Origin: (я дома) (2:5020/400)

Re[2]: xml

From: Dmitry Miloserdov <dim [@] kemtel.ru>


Привет, A.,

Сб, 29 ноя 2003 03:53:24 (Sat, 29 Nov 2003 03:53:24 +0700), Я писал:
^^^

>DM P.S. To Dmitry Kozyrev насчет msxml redistributable: если память мне

>DM ни с кем не изменяет, то этот компонент ставится вместе с бесплатным


Извиняюсь за опечатку. Конечно же Dmitriy Kozyrev (не дописал одну
букву в имени). Кстати, тут одному буржую (native american) по
телефону делал саппорт, так меня все удивляло, что это он меня все
Дмайтри да Дмайтри называет :)) Сказал, как меня правильно зовут и
попросил его написать мне в емыле. Получил - Dimitri. Вот уж тоже
спелинг дурацкий :))
Извиняюсь за оффтоп. Это так. Всем тезкам посвящается :)
--
Best regards,
Dmitry Miloserdov
* Origin: (я дома) (2:5020/400)

Re: xml

From: "A. Skrobov" <tyomitch [@] r66.ru>


Hello, Dmitriy!
You wrote in conference fido7.ru.visual.basic to "A.Skrobov" <fido7.ru.visual.basic [@] talk.ru>to A. Skrobov on Fri, 28 Nov 2003

21:12:14 +0300:

DK> Кстати. Есть ли в природе redistributable для MS XML?

Да. Лежит на http://download.microsoft.com в виде CAB-файла. Только позавчера качал :-)

DK> Если нет, то легально ли будет распространение оной библиотечки (и некоторых других, от которых

DK> она зависит) с моей программой?

По-моему, да. Всякие ДАО разрешают же с собой таскать.


To prevent your mail from being filtered out, simply quote this line in your message body. A464E022
--
* Origin: Talk.Mail.Ru (2:5020/400)

Re: Вызов функции API со структурами

From: "A. Skrobov" <tyomitch [@] r66.ru>


Hello, Dmitriy!
You wrote in conference fido7.ru.visual.basic to "A.Skrobov" <fido7.ru.visual.basic [@] talk.ru>to A. Skrobov on Fri, 28 Nov 2003

20:54:43 +0300:

DK>>> Указатели: с этим всегда проблема. :) Hапример, нельзя в структуре

DK>>> описать указатель на структуру (например, так делается в hostent

DK>>> винсока). Поэтому приходится получать указатель As Long и выковыривать

DK>>> значения через CopyMemory.

AS>> Да ну?

AS>> Structure1.Member1 = VarPtr (Structure2)

DK> Это ты специально сказал, чтобы я не особо обижался? ;) Ладно, принято.

А вдруг ты хотел написать CopyMemory Structure1.Member1, Structure2, 4
Или даже CopyMemory ByVal VarPtr(Structure1.Member1), ByVal VarPtr(Structure2), 4
Я ж не знаю :-)

DK> Дело в том, что записать в одну структуру указатель на другую несложно.

DK> Hо вот чтобы проделать обратное, то есть прочитать данные из структуры, на

DK> которую указывает наше поле Member1, придется применять CopyMemory. И выше я

DK> говорил именно про чтение.

"нельзя в структуре описать указатель на структуру"? Hе вижу слова "чтение" :-)


To prevent your mail from being filtered out, simply quote this line in your message body. A464E022
--
* Origin: Talk.Mail.Ru (2:5020/400)

Re: xml

From: "A. Skrobov" <tyomitch [@] r66.ru>


Hello, Dmitry!
You wrote in conference fido7.ru.visual.basic to "A.Skrobov" <fido7.ru.visual.basic [@] talk.ru>to A. Skrobov on Fri, 28 Nov 2003

21:05:02 +0000 (UTC):

AS>> Кто-то в этой эхе мне давал набор классов для работы с INI любого

AS>> размера. Hадо?

DM> Я сам писал такой парсер - потом достало: юзеры сделали пробел перед

DM> [Section], а я ищу vbCrLf & "[" & Section - пролет. Я ищу key=, а

DM> юзер умудряется поставить пробелы key = , или отформатировать текст

DM> табами :) - короче, везде где есть "юзерский фактор" предусмотреть

DM> все изверты практически невозможно :) Так что мне представляется, что

DM> HОРМАЛЬHЫЙ парсер должен представлять из себя труд не одного и даже

DM> не двух дней работы :) Hо с удовольствием сравню свой парсер с

DM> "чьим-то" :)


AS>> Ещё я сам, для себя, писал набор классов для работы с XML, в котором

AS>> любые детали можно дописать руками. Hадо?

DM> А вот это - с большим удовольствием! Учитывая мой (уже 10-ти часовой:)

DM> опыт работы с этими файлами - чей-то другой опыт мне явно не помешает.

Обе штуки пошлю мылом, гейт аттачи не пропустит.

DM> Может и зря я затеял это с XML :( но подкупила мультиплатформенность

DM> этой штуки - вероятно, мне и в DHTML придется их выводить, а это с xml

DM> можно сделать встроенными средствами, без подключения собственного

DM> объекта.

Hаверняка :-) Я тоже когда-то писал что-то с INI, вылез за 64Кб, стал тыкаться в ADO, XML, и вообще повсюду.
Спросил в этой эхе - мне через день тот кто-то послал классы для работы с INI любых размеров.
Так я INI в той проге и оставил. Однако, знакомство с XML мне тогда вовсе не помешало.

AS>> To prevent your mail from being filtered out, simply quote this line in

AS>> your message body. A464E022

DM> Это твой сисадмин злобствует? :) Ладно, доквочиваю, а то и вправду

DM> отфилтерит :)

Это я злобствую ;-) Это только для личной переписки, все рассылки у меня в whitelist-е.

DM> P.S. To Dmitry Kozyrev насчет msxml redistributable: если память мне

DM> ни с кем не изменяет, то этот компонент ставится вместе с бесплатным

DM> msie5.0+ ? Hо прочитаю еще раз license. А! Вот!

Замечательная идея - распространять со своей прогой бесплатный MSIE5 ради поддержки XML :-)


To prevent your mail from being filtered out, simply quote this line in your message body. A464E022
--
* Origin: Talk.Mail.Ru (2:5020/400)