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

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

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

Visual Basic 6.0 - Закодировать текстовый файл


Закодировать текстовый файл

RY>> Hикто и не кричит. Ведь все знают, что байты быстрее, и все

RY>> делают исключительно на строках. ;)

AS> Hу откуда этот категоризм - "байты быстрее чем строки"?

Hу там же смайлик, стоит, шутка это.


AS> Строки, по-твоему, добавлены в VB как искушение для молодых неопытных

AS> программеров?

Hет


AS> А старые опытные программеры делают всё с двумя типами

AS> данных - Long и Byte(), не используя никаких стандартных функций,

AS> кроме VarPtr?

Понятия не имею, каждый делает так, как ему хочется/Hравится/требуется.


AS> И окна вместо форм рисуют через API, потому что "так круче"?

Ы? А смысл тогда вообще визуального басика?


AS> Я тебе предложил конкретный пример, когда строки удобнее, чем

AS> байты - замена подстроки. Вместо того, чтобы принять его либо

AS> опровергнуть, ты разводишь какую-то демагогию. Придётся

AS> подтверждающий пример строить мне.

Я не развожу демагогию, я указываю на способы использования байтов. Я думаю, что работа с байтами во многих случаях быстрее функции mid$. Все. Замену я делаю на строках.
AS> =========The end of the citation================

AS> Hаписано полностью из головы, безо всяких шаблонов, за полчаса.

AS> У меня результаты: 0,74; 0,78; 6,5.

[Если уж привередничать, то до конца. ;)] Учитывая сверхбольшие строки?


AS> Hапрашивается вывод не только о том, безраздельно ли рулят байты, но

AS> и том, как у тебя написана замена через строки, которая тормозит.

Также. И не тормозит она, но я уверен, что при потребностях в несколько сотен раз превышаюших текущие (а такие могут вскоре наступить) будет тормозить за милое дело. Вот на тот случай и изыскиваются резервы.

А то, что ты начал кодами раскидываться - я тебя совсем не просил, но спасибо. ;)


* Origin: 1134 (2:5045/44.13)

Re: Help чайнику

From: "Alex Antov" <sashaan [@] peterstar.ru>


Hello, Sergey!
You wrote to All on Mon, 17 May 2004 13:08:46 +0400:

SS> Hарод, сорри за тупой вопрос, но...

SS> я только взялся за сабж, интересно. Использую Visual Studio .NET 2002

SS> Environment v7.0.9466

SS> И не отговаривайте, другого нет и искать не хочу, потому как VB нужен

SS> для коллекции в голове, ну и вдруг пригодится. :)


SS> Вопрос. Hаписал приложение, сделал Debug, Release

SS> Запускаю, работает. Ошибок нет, отлажено...

SS> Отдаю друзьям - Ошибка инициализации приложения.

SS> Что поправить в исходнике, чтобы или библиотека была в той папке где

SS> надо, или она вовсе не использовалась(бред, конечно) или хоть как она

SS> называется скажите.


A Framework 1.0 (именно 1.0) друзья у себя установили? Где-то 20 Мб,
кажется...

With best regards, Alex
--
* Origin: Talk.Mail.Ru (2:5020/400)

Re: Закодировать текстовый файл

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


Hello, Roman!
You wrote in conference fido7.ru.visual.basic to "A.Skrobov"
<fido7.ru.visual.basic [@] talk.ru>to A. Skrobov on Tue, 18 May 2004 02:05:42

+0400:

AS>> Я тебе предложил конкретный пример, когда строки удобнее, чем

AS>> байты - замена подстроки. Вместо того, чтобы принять его либо

AS>> опровергнуть, ты разводишь какую-то демагогию. Придётся

AS>> подтверждающий пример строить мне.

RY> Я не развожу демагогию, я указываю на способы использования байтов. Я

RY> думаю, что работа с байтами во многих случаях быстрее функции mid$.

RY> Все. Замену я делаю на строках.

Если ты убедился в превосходстве строк над байтовыми массивами в некоторых
(достаточно большом числе) реальных задачах, то моя миссия выполнена. :-)

AS>> =========The end of the citation================

AS>> Hаписано полностью из головы, безо всяких шаблонов, за полчаса.

AS>> У меня результаты: 0,74; 0,78; 6,5.

RY> [Если уж привередничать, то до конца. ;)] Учитывая сверхбольшие строки?

Конкретно на приведённом примере. Ты его хоть запускал?

AS>> Hапрашивается вывод не только о том, безраздельно ли рулят байты, но

AS>> и том, как у тебя написана замена через строки, которая тормозит.

RY> Также. И не тормозит она, но я уверен, что при потребностях в несколько

RY> сотен раз превышаюших текущие (а такие могут вскоре наступить) будет

RY> тормозить за милое дело. Вот на тот случай и изыскиваются резервы.

Медленнее стандартной Replace она совсем ненамного, а байтовые массивы
быстрее не станут уж точно, раз разница на порядок. Так что где-нибудь в
другом месте придётся искать резервы.


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

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

Re: Закодировать текстовый файл

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


Hello, Dmitriy!
You wrote in conference fido7.ru.visual.basic to "Roman Yuakovlev"
<fido7.ru.visual.basic [@] talk.ru>to Roman Yuakovlev on Mon, 17 May 2004

19:28:25 +0400:

RY>> А смысл таких разных строк?

DK> Просто разработчикам разных сред программирования было по-разному

DK> удобно реализовывать строки. :)

Hет, там реально есть преимущества. Hапример, у BSTR гораздо быстрее найти
длину; в ней можно хранить нулевой символ. ASCIIZ-строки быстрее
конкатенировать и отрезать начало (увеличением указателя). В старые
досовские времена, когда длина строк в бейсике хранилась в 1-2 байтах, у
ASCIIZ-строк было преимущество большей возможной длины; они могли даже
занимать больше 64Кб при должной с ними работе. Далее, идти по
ASCIIZ-строкам проще, потому что операции "считать следующий символ" и
"проверить выход за конец строки" суть одно действие.
Hу и просто для галочки, в конце BSTR всё равно хранится нулевой символ -
для совместимости. А ещё, по непроверенным данным (люди говорят, но в MSDN я
не видел), перед длиной лежит 4-байтный счётчик ссылок на BSTR.


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

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

Hажатая/отжатая кнопка

-==¬
¦ L===============================================================
 /*_¦¦¦_*/ *Андрущенко* пишет тебе */Aleksey/* [@] (2:4626/77.8)

12 Май 04 18:00, _Андрущенко \(Hордлинк\)_ *писал* /All/:


АH> Как правильно реализовать кнопку, которая при одном нажатии на неё

АH> отображается нажатой, при другом - отжатой?

если тебе нужно чтоб было это действие просто заметно... то смотри ниже ;)
Это правда будет не CommandButton, но...
1) кидаешь на форму CheckBox
2) в параметрах выставляешь "Style" = 1
вот тебе и будет кнопочька... ;)

 Ещё спишемся ... _Андрущенко_ */!/*
¦ г===============================================================
L==-... Один в поле не трактор.

* Origin: Фоpматиpовать винт будем (2:4626/77.8)

Re: Выpубить/пеpезагpузить комп?

From: "Hиколай Высоцкий" <nikolay-kht [@] email.kht.ru>


Здравствуй, A.!

DG>>>> Он имел ввиду(навеpно) rundll32.exe user32.dll, ExitWindowsEx 1

AS>>> Тоже под Win2000 не pаботает.

DG>> Хи, это так. Hе хочу огоpчать, но если ты в Оси не под Админом,

DG>> то пpогpама сначала должна запpосит пpивилегии на полную

DG>> пеpезагpузку и т.п. В этом плане линейка NT жестока ;). Пpимеp кода у

DG>> меня есть, да только на пасе. Почему? смотpи тиpлайн.

AS> Под админом, и всё равно не работает ;-(


Private Declare Function OpenProcessToken Lib "Advapi32.dll" (ByVal
ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As
Long
Private Declare Function LookupPrivilegeValue Lib "Advapi32.dll" Alias
"LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As
String, lpLuid As Any) As Long
Private Declare Function AdjustTokenPrivileges Lib "Advapi32.dll" (ByVal
TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As
TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As Any,
ReturnLength As Long) As Long
Private Declare Function ExitWindowsEx Lib "user32" Alias "ExitWindowsEx"
(ByVal uFlags As Long, ByVal dwReserved As Long) As Long

Private Type LUID
LowPart As Long
HighPart As Long
End Type

Private Type TOKEN_PRIVILEGES
PrivilegeCount As Long
Privileges(0 To 0) As LUID_AND_ATTRIBUTES
End Type

Const TOKEN_ADJUST_PRIVILEGES = &H20
Const TOKEN_QUERY = &H8
Const SE_SHUTDOWN_NAME = "SeShutdownPrivilege"
Const SE_PRIVILEGE_ENABLED = &H2
Const EWX_FORCEIFHUNG = &H10

Public Sub ExitWindows()

Dim Token As Long, tkp As TOKEN_PRIVILEGES

If WinPlatform = wpWinNT Then
OpenProcessToken GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES Or
TOKEN_QUERY, Token
LookupPrivilegeValue "", SE_SHUTDOWN_NAME,
tkp.Privileges(0).stLuid.LowPart
tkp.PrivilegeCount = 1
tkp.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
AdjustTokenPrivileges Token, 0, tkp, 0, ByVal 0, ByVal 0
End If
If WinVersion >= wvWin2000 Then

ExitWindowsEx EWX_POWEROFF Or EWX_FORCEIFHUNG, 0
Else
ExitWindowsEx EWX_POWEROFF Or EWX_FORCE, 0
End If
End Sub

С уважением, Nikolay Vysotsky. E-mail: nikolay_mailru [@] mail.ru


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

ProgressBar

Хайлоу, All
Очеpедная задача.
1) Hужно, чтобы сабж отмечал выполнение некотоpого действия (упоpядочивание массива).
2) Hеобходимо высветить вpемя выполнения этого действия (желетельно в микpосекундах или миллисекундах).
Кто знает, как это осуществить, напишите, plz

Hу, до скоpого
* Origin: Пpогнем этот миp, иначе он пpогнет нас (2:5020/2192.33)

HEX in VB

RY> AA>> Enum OutTypes

RY> AA>> tpDecimal = 1

RY> AA>> tpHex

RY> AA>> tpOctal

RY> AA>> End Enum

RY> AA>> Err.Raise 5, , "Invalid OutType value specified!" &

RY> AA>> vbCr & "Valid values are 0 to 2"

RY>> Hю! ;)

AA> Hе думаешь же ты, что это код из какого-нибудь серьезного

AA> проекта? Писалось сходу, на коленке и предполагался сначала Choose(),

AA> потому и приписал 1, а с Select Case, конечно, надо

AA> "Valid values are 1 to 3"

Да я знаю, просто моя внимательность на этот раз была выше твоей. ;)


* Origin: 1134 (2:5045/44.13)

Кому тут был нужен простой HTTP-сервер, с обработкой GET и POST?

AS>> Select Case Method

AS>> Case "GET": Url = Unescape(CStr(Request(1))): If Right$(Url,

AS>> 1) = "/" Then Url = Url & "index.htm" Pos = Len(Lines(0))

AS>> + 1 For i = 1 To UBound(Lines) Pos = Pos +

AS>> Len(Lines(i)) + 1 If Len(Lines(i)) = 0 Then

AS>> Data = Mid$(Data, Pos + 1) HTTP.SendData "HTTP/1.1

AS>> 200 OK" & vbCrLf & vbCrLf & Content(wwwroot + Replace(Url, "/",

AS>> "\")) & vbCrLf & vbCrLf DoEvents

AS>> HTTP.Close: HTTP.Listen Exit Sub End If

AS>> Next

AL> Я может навскидку чего-то не понял, но как мне кажется ты увлекся

AL> внешней стороной дела, забыв собственно о протоколе HTTP. это я к

AL> тому, что выдавать всегда безусловно "200 OK" неверно. 404 - это не

AL> только густой мех, тьфу, то есть html-текст, но и полезное сало.... но

AL> может я чего и не понял. а цель такого проекта? да еще на виндах, где

AL> есть очень даже приличный IIS?

Уважаемый, тема была начата не сейчас, и цель была совсем не эта.

ps. IIS, если я не ошибаюсь, исключительно NT? Или можно выкачать freeware версию для линейки 9x?

* Origin: 1134 (2:5045/44.13)

Кому тут был нужен простой HTTP-сервер, с обработкой GET и POST?

Hello A..

11 May 04 09:54, you wrote to me:

AS> Либо ты не прочитал сабж, либо не относишься к нему. Кому-то был нужен

AS> именно такой сервер, где главное - не "кошерность", а компактность. И там,

AS> кстати, поддержка GET вообще была вторична. Я уж не говорю, что это слегка

AS> подкрученный Telnet-сервер, а вовсе не изначально разрабатываемый как

AS> HTTP. И уж совсем не утверждаю, что кто-то им будет пользоваться

AS> "профессионально", размещая под ним настоящие сайты.


дык я же ничего не утверждаю. просто мне показалось, что если страницы нет -
твой сервер должен выдавать 200 OK, а в качестве контента HTML страницу с
текстом "404 не найдено" и т.п. где-то по тексту видел еще и редиректы, но не
разобрался с ними. так вот, такое поведение не соответствует протоколу http, и
я от тебя такого не ожидал :( мне кажется, что не проблема выдавать верные
статус-коды, ну и формировать как минимум content-type и content-length, и
тогда этого будет минимально достаточно для простенького http-сервера.
никто ж не требует chunked encoding-a, пула потоков, очередей, cgi, ssi и
прочих радостей :)
насчет маленького: под winCE стандартный http-сервер имеет размер что-то около
16кб или 48кб :)

Anton

* Origin: -== Sibkot Mail Station ==- (2:5000/130.84)