Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 531
от 17.05.2007, 01:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 264, Экспертов: 35
В номере:Вопросов: 3, Ответов: 5


Вопрос № 86401: Добрый день, уважаемые Эксперты! Подскажите, пожалуйста, грамотею как и чем скомпилировать VBScript находящийся в txt-шнике в exe? Желательно, чтобы при дизассемблировании полученного exe-шника было проблематично докопаться до особонно некоторых ...
Вопрос № 86477: Уважаемые Эксперты подскажите как мне добавить CheckBox в DataGrid В датагриде создаю поле шаблон в виде CheckBox которое должно обращаться к таблице к булевому полю и при загрузке должен показать если там тру то галочка стоит если фалс то г...
Вопрос № 86513: Парни, объясните как разобрать строку типа "12:54:11:72:36" на числа с использованием регэкспов?...

Вопрос № 86.401
Добрый день, уважаемые Эксперты!
Подскажите, пожалуйста, грамотею как и чем скомпилировать VBScript находящийся в txt-шнике в exe? Желательно, чтобы при дизассемблировании полученного exe-шника было проблематично докопаться до особонно некоторых параметров искодного кода. Помогите, буду очень признателен. :)
Отправлен: 11.05.2007, 10:56
Вопрос задал: Дрёма (статус: 4-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Талипов А Н
Здравствуйте, Дрёма!
Нашел программу:
VBX Compiler Pack 1.5 PRO

Компилятор Basic Кода.
В данном Pack есть:
VBX Source Editor, VBX DeCompiler, VBX Compiler, Russian Readme
Обновленный Source Editor подсветка синтаксиса, обновленный Compiler, язык прог. поддерживает формы, объекты... EXE файлы от 10 кб, поддержка ActiveX...

http://freesoft.ru/?id=669853

По её работе ничего сказать не могу.Может это совсем и не то, но попробуйте, хуже не будет.

Что касается шифрования exe, то тут уже нужен не компилятор, а архиватор илидругой специализированный soft, который вы найдёте на хакерских сайтах.
---------
Всё будет так, как должно быть, даже если будет иначе.
Ответ отправил: Талипов А Н (статус: 3-ий класс)
Ответ отправлен: 11.05.2007, 11:50
Оценка за ответ: 5

Отвечает: Залетин Виталий Викторович (мь!тарь)
Здравствуйте, Дрёма!
А что за "VBScript находящийся в txt-шнике в exe"? Если это текстовый ресурс, то надо просто использовать Microsoft Script Control (Windowssystem32msscript.ocx) и подключить его в свой проект через Project->References и пользоваться, предварительно загрузив VBScript-код из ресурса. Например, так:

'=-=-=-=-=-=-= Секция "General Declarations" -=-=-=-=-=-=
Dim WithEvents objScript As MSScriptControl.ScriptControl

'=-=-=-=-=-=-= Код -=-=-=-=-=-=
Sub RunVBScript()
Dim txtScript As String

Set objScript = New MSScriptControl.ScriptControl

'Мой пример VBScript-кода, но здесь должен быть Ваш
txtScript = "MsgBox " & Chr$(34) & "Hi From VBScript!!!!" & Chr$(34) & ",64"
With objScript
.Language = "VBSCRIPT"
.ExecuteStatement txtScript
End With
End Sub

'Бдет вызвана, если произойдет ошибка парсера
Private Sub objScript_Error()
Dim e As MSScriptControl.Error

Set e = objScript.Error
With e
MsgBox "Error #" & CStr(.Number) & vbCrLf & _
"Error Description: [" & .Description & "]" & vbCrLf & _
"Error Text: [" & .Text & "]" & vbCrLf & _
"Line: " & CStr(.Line) & vbCrLf & _
"Column: " & CStr(.Column)
End With
End Sub

А теперь о шифровке: VB-программы неблагодарное дело дизассемблировать. Хотя для упаковки есть, например, UPX и т. д. Зайдите на www.wasm.ru - там в разделе "Инструменты" много чего есть. Если же надо шифровать сам VBScript-код, то тут все в Ваших руках: придумывайте алгоритм и шифруйте, после чего в ресурсы запихиваете уже зашифрованный код (можно отдельную программку написать для шифрования VBScript-кода) и при извлечении перед выполнением VBScript-кода расшифровывайте его. Примеров шифровки в сети полно - надо только поискать.
---------
Учиться никогда не поздно. Особенно программированию!
Ответ отправил: Залетин Виталий Викторович (мь!тарь) (статус: Студент)
Ответ отправлен: 12.05.2007, 15:49
Оценка за ответ: 5


Вопрос № 86.477
Уважаемые Эксперты подскажите как мне добавить CheckBox в DataGrid

В датагриде создаю поле шаблон в виде CheckBox которое должно обращаться к таблице к булевому полю и при загрузке должен показать если там тру то галочка стоит если фалс то галочка отсутствует.

А так же как обрашаться к этому созданному полю CheckBox, те нажал на галочку данные внесены в таблицу и тд.
Отправлен: 11.05.2007, 19:43
Вопрос задал: Aspnet (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, Aspnet!
Во всех известных мне (free) DataGrid возможности отображать CheckBox нет.
Для решения проблемы необходимо приобретать DataGrid с необходимыми свойствами.
Либо, что менее привлекательно, использовать эмуляцию.
(по клику в ячейке идет обращение непосредственно к рекордсету, и только после программно изменения записи рекордсета обновляется Grid)

Я находил библиотеку объявленую как Free -SCGrid.ocx
В дэмках все было прекрасно, масса "наворотов". но фактически оказалась ShareWare, и сейчас уже не работает.

Евгений.
Ответ отправил: Тесленко Евгений Алексеевич (статус: 8-ой класс)
Ответ отправлен: 11.05.2007, 22:38

Отвечает: Филатов Евгений Геннадьевич
Здравствуйте, Aspnet!
Я тоже столкнулся с проблемой, что доступные бесплатные DataGrid не поддерживают CheckBox.
Поступил по другому ( пример для DAO Access ) :
1. в базе имеется поле Sel логического типа
2. в запросе создается поле " select iif ( sel , '®' , ' ' ) as se, ... " которое выводится на экран
3. можно создать в DataGrid кнопки для полей
4. в DataGrid создаются процедуры обработки событий :
Private Sub DBGrid1_ButtonClick ( ByVal ColIndex As Integer )
Private Sub DBGrid1_DblClick ( )
Private Sub DBGrid1_KeyPress ( KeyAscii As Integer )
внутри которых находится код :
With Form4.Data1.Recordset
'DBGrid1 находится на форме Form4 и подключен к источнику данных Data1
.Edit
!sel = Not !sel
.Update
End With

т.е. после действий пользователя ( нажатии на кнопки в поле, двойном нажатии на строке или нажатии любой клавиши - стрелки на дополнительной клавиатуре не обрабатываются ) в столбце появляется или исчезает символ.
Затем после нажатия книпки "Выполнить" обрабатываются выбранные записи :
dbf.execute "update base set ... where sel"
Таким приемом пользуюсь около пяти лет, удобно и пользователи привыкли.

Если будут вопросы, пишите Jones@rusfaq.ru
С уважением.
Ответ отправил: Филатов Евгений Геннадьевич (статус: 7-ой класс)
Ответ отправлен: 14.05.2007, 15:26


Вопрос № 86.513
Парни, объясните как разобрать строку типа "12:54:11:72:36" на числа с использованием регэкспов?
Отправлен: 11.05.2007, 23:08
Вопрос задал: Mironicuss (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: HookEst
Здравствуйте, Mironicuss!
Добавляете Reference на Microsoft VBScript Regular Expressions(SubMatches требует версию не ниже 5.5)
и например 2 варианта:

Option Explicit
'Reference to Microsoft VBScript Regular Expressions
Sub t()
Dim src As String
src = "12:54:11:72:36" 'наша строка

'********Вариант 1***********
Dim re As New RegExp 'RegExp object
Dim ms As MatchCollection 'коллекция найденых совпадений
Dim m As Match 'элемент(Item) в MatchCollection

With re
.Pattern = "dd" 'шаблон для поиска - просто две последовательные цифры
'если цифр не обязательно 2 то:
'.Pattern = "d+" '1 или больше последовательных цифр
.Global = True 'ищем все совпадения
End With

Set ms = re.Execute(src) 'теперь ms - все найденные совпадения

For Each m In ms 'каждый элемент ms - 1 найденое совпадение
MsgBox m
Next m

'********Вариант 2***********
'SubMatches require version 5.5
Dim sms As SubMatches
Dim v

re.Pattern = "(dd):(dd):(dd):(dd):(dd)" '5 двузначных чисел, разделеных двоеточием
'если цифр не обязательно 2 то:
're.Pattern = "(d+):(d+):(d+):(d+):(d+)" '5 чисел, разделеных двоеточием
Set ms = re.Execute(src)
Set m = ms(0)

For Each v In m.SubMatches 'каждый v соответсвует одной помаске(то что в скобках)
MsgBox v
Next v
End Sub


ps:
Можно и без регулярных выражений:

Option Explicit

Sub t2()
Dim src As String
src = "12:54:11:72:36"

Dim ms, m
ms = Split(src, ":")

For Each m In ms
MsgBox m
Next m
End Sub

Ответ отправил: HookEst (статус: Студент)
Ответ отправлен: 12.05.2007, 10:14
Оценка за ответ: 5


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100

В избранное