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

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

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

Visual Basic 6.0 - Ура!!


Re: Ура!!

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

09 Mar 04 14:46:21 в RU.VISUAL.BASIC Stas Lazarev -> мне:


DK>> http://mastershome.net.ru/vbfaq/

SL> О. молодец. Спасибо :)


Пожалуйста. Для вас старался. :)

Планов наших - громадье! Еще с десяток тем планирую добавить (обзор
инсталляторов, использование библиотек для архивации, etc.).

SL> Теперь нужен поиск по сайту.


Hуу, это в следующей жизни. :)

SL> А что за адрес: "Домашняя страничка этого FAQ"

SL> http://www.master.net.ru/vbfaq/ ? Hе открывается.


Виноват, поправил.

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

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

Re: StatusBar

Мы где-то виделись, Hиколай?

08 Mar 04 23:20:21 в RU.VISUAL.BASIC Андрущенко (Hордлинк) -> All:


АH> Есть ли отдельный хороший контрол, реализующий StatusBar? Hе хочется ради

АH> него одного тащить монстра - Mscomctl.ocx.


А в CCRP такого контрола нет?

Еще на vbrussian видел контрол ComCtl, там тоже есть сабж.

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

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

Hotbasic compiler

From: "Andrew Shelkovenko" <diakin66 [@] elm.ru>


Hello, All!

Hotbasic compiler
http://www.angelfire.com/space/netcensus/hotbasic.html
VB подобный синтаксис
Hello, All!
Just to let you guys know. Hotbasic
has opened a YahooGroup.

It's supporting most of RapidQ keywords
coding styles and the GUI parts is
growing fast. I guess, this is what we've
waiting for when RQ development has
stopped to overcome the limitations.

Also supporting CONSOLE, CGI, GUI, DLL
and built-in SQLite database object.

In-case you want to experience the speed
and smaller executable file, give it a
try at:

http://groups.yahoo.com/group/hotbasic/


With best regards, Andrew Shelkovenko.
<http://www.kolomyagi.spb.ru/~diakin66/rqsr/>- RQ Search and Replace

<http://www.diakin.narod.ru/RQDP/index.html> - Rapid-Q documentation

Project

With best regards, Andrew Shelkovenko.
<http://www.kolomyagi.spb.ru/~diakin66/rqsr/>- RQ Search and Replace

<http://www.diakin.narod.ru/RQDP/index.html> - Rapid-Q documentation

Project


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

Перерисовка & Обновление

Привет , All!

Hазрело тут у меня два вопроса:
1) Если на форме программой рисуется рисунок (через Paint,Line и т.д.), то как покультурнее его изменить (примерно на половину его надо менять при некотором событии) без перерисовки, т.к. рисунок большой и я не уверен за скорость перерисовки на чужом компьютере, а это должно делаться быстро?
2) Если создается программа, которая за небольшой период времени ~1 месяц будет добавляться и обновляться, то как это лучше всего сделать? Я предполагаю создать программу базу, в которой будут основные данные, не подлежащие обновлению и пара-тройка модулей для чтения и редактирования обновлений. Обновления собираюсь создавать как ini-файл. Хотелось бы узнать, занимался ли кто-нить чем-то подобным, какие трудности могут с этим возникнуть, а так же есть ли более рациональные методы решения этого вопроса? Программа для свободного распространения среди небольшой группы людей (которые, кстати и будут обновлять и добавлять, моя задача создать именно базу), поэтому никакой кодировки, паролей и прочего для обновлений ненужно, "открытость" будет даже лучше и полезнее.

Всего наилучшего , All!

* Origin: Death is out there ... (2:5022/177.91)

[VB.NET] util for C# style comments

Привет, All!

ищется утилька под VB.NET2003, которая бы умела:
1. писать заголовочные XML комментарии как в C# [обязательно]
2. собирать их со всего проекта в большую XML [желательно]
3. генерить удобную для чтения документацию [желательно]

С уважением, Nick!
np: кулеры, винты, уличный шум, etc.

* Origin: Ловись коннект большой и маленький! (2:5038/15.1)

Правильный формат

Приветствую тебя, всезнающий All.

Щас попытаюсь объяснить задачу, а там посмотрим, что из этого получится.
В общем имеем переменную типа Variant\String, но по ходу дела, может быть все же стоит выбрать другой тип.
В эту переменну складываются данные разных типов, но складывать нужно по определенным правилам, т.е. если добавляем строку, то она и добавляется по символьно, если ложим байт, то опять один символ, если ложим целое(двух байтовое), то оно не должно добавиться просто числом, а должно разбиться на эти самы два байта и положиться, каждый байт по символу и так далее...
В общем предполагается, что кидаются 4-е типа данных строка, байт, целое, длинное целое, и соответственно нужно собрать это все в одну строковую переменную, где под каждый тип данных выделяется строго определенное место в байтах.
Посоветуйте как быть?


Sergey

* Origin: Default origin (2:6083/24.10)

типы данных

Приветствую тебя, всезнающий All.

Как можно перебрать циклом внутри типа, определенным пользователем.
Т.е.
Type SomeType
S as Long
O as Integer
M as Long
E as Byte
End Type

Dim v as SomeType

и не набирать
v.S = ...
v.O = ...

а сделать это в цикле, при этом можно даже не знать названий внутри типа, а просто прочитать, что так записано, но читать нужно в том порядке, в котором определил пользователь.

Sergey

* Origin: Default origin (2:6083/24.10)

Re: Перерисовка & Обновление

From: "Andrew Shelkovenko" <diakin66 [@] elm.ru>


Hello, Aleksandr!
You wrote to All on Sat, 06 Mar 2004 18:06:54 +0300:

AP> Hазрело тут у меня два вопроса:

AP> 1) Если на форме программой рисуется рисунок (через Paint,Line и

AP> т.д.), то как

AP> покультурнее его изменить (примерно на половину его надо менять при

AP> некотором

AP> событии) без перерисовки, т.к. рисунок большой и я не уверен за

AP> скорость

AP> перерисовки на чужом компьютере, а это должно делаться быстро?


Windows API. Урок 15. Функция InvalidateRect
Функция InvalidateRect предназначена для перерисовки окна из любого места
программы. Эта функция посылает в программу сообщение WM_PAINT. Именно эту
API-функцию вы должны использовать для перерисовки из обработчиков для
разных сообщений Windows.

Вот пример использования этой функции:

LONG WINAPI WndProc(HWND hwnd, UINT Message, WPARAM wparam, LPARAM lparam)
{
//Статические переменные для центра рисуемого круга.
static int x, y;
HDC hdc;
PAINTSTRUCT ps;
switch (Message){
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
// Рисуем круг с центром в (x, y).
Ellipse(hdc, x-5, y-5, x+5, y+5);
EndPaint(hwnd, &ps);
break;
case WM_LBUTTONUP:
// Запоминаем место, в котором щелкнули мышкой.
x = LOWORD(lparam);
y = HIWORD(lparam);
// Вызываем перерисовку.
InvalidateRect(hwnd, NULL, TRUE);
break;
...
В этом примере в том месте, где пользователь щелкнет мышкой, рисуется
кружок. Действуем мы тут так: сначала в обработчике для WM_LBUTTONUP мы
запоминаем в переменных x и y то место, в котором мы щелкнули мышкой
(обратите внимание, что переменные мы объявили как статические!). Затем мы
вызываем функцию InvalidateRect. Первый ее параметр определяет, что за окно
будем перерисовывать, второй - что за прямоугольник в окне (значение NULL
определяет, что будем перерисовывать все окно), последний параметр
определяет, будем ли перед перерисовкой стирать старое содержимое окна
(значение TRUE) или не будем (значение FALSE).

With best regards, Andrew Shelkovenko.
http://www.kolomyagi.spb.ru/~diakin66/rqsr/- RQ Search and Replace
http://www.diakin.narod.ru/RQDP/index.html - Rapid-Q documentation Project


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

Re: Правильный формат

From: "Sergey Merzlikin" <sm [@] smsoft.ru>



Раз пошла речь о байтах, прямой повод использовать байтовый массив:

Option Explicit

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(Destination As Any, Source As Any, ByVal Length As Long)

Private Sub AddAny(vData As Variant, bArray() As Byte)
Dim u As Long, xs() As Byte
Dim xi As Integer, xl As Long
u = UBound(bArray)
Select Case VarType(vData)
Case vbString
xl = Len(vData)
ReDim Preserve bArray(LBound(bArray) To u + xl)
xs = StrConv(vData, vbFromUnicode)
CopyMemory bArray(u + 1&), xs(LBound(xs)), xl
Case vbByte
ReDim Preserve bArray(LBound(bArray) To u + 1&)
bArray(u + 1&) = vData
Case vbInteger
xi = vData
ReDim Preserve bArray(LBound(bArray) To u + 2&)
CopyMemory bArray(u + 1&), xi, 2&
Case vbLong
xl = vData
ReDim Preserve bArray(LBound(bArray) To u + 4&)
CopyMemory bArray(u + 1&), xl, 4&
End Select
End Sub

Увы, универсального метода нет, и для добавления каждого типа данных нужен
отдельный код.

По правде говоря, мне непонятен потаенный смысл такого способа упаковки
данных, поскольку для их распаковки требуется знать порядок следования
типов, т.е. либо он должен формироваться в момент добавления данных и
храниться в отдельном массиве, либо чередование типов должно быть заранее
известным. В последнем случае можно построить более оптимальный алгоритм
добавления данных.


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

>

> Щас попытаюсь объяснить задачу, а там посмотрим, что из этого получится.

> В общем имеем переменную типа Variant\String, но по ходу дела, может быть

все
> же стоит выбрать другой тип.

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

> определенным правилам, т.е. если добавляем строку, то она и добавляется по

> символьно, если ложим байт, то опять один символ, если ложим целое(двух

> байтовое), то оно не должно добавиться просто числом, а должно разбиться

на эти
> самы два байта и положиться, каждый байт по символу и так далее...

> В общем предполагается, что кидаются 4-е типа данных строка, байт, целое,

> длинное целое, и соответственно нужно собрать это все в одну строковую

> переменную, где под каждый тип данных выделяется строго определенное место

в
> байтах.

> Посоветуйте как быть?

>

>

> Sergey

>



* Origin: Sovintel (2:5020/400)

Re: типы данных

From: "Sergey Merzlikin" <sm [@] smsoft.ru>


>


Hикак. А зачем? Hемного сократить код (и время исполнения) позволяет
оператор With.


> Как можно перебрать циклом внутри типа, определенным пользователем.

> Т.е.

> Type SomeType

> S as Long

> O as Integer

> M as Long

> E as Byte

> End Type

>

> Dim v as SomeType

>

> и не набирать

> v.S = ...

> v.O = ...

>

> а сделать это в цикле, при этом можно даже не знать названий внутри типа,

а
> просто прочитать, что так записано, но читать нужно в том порядке, в

котором
> определил пользователь.

>

> Sergey

>



* Origin: Sovintel (2:5020/400)