Пожелания:
1. Возможно, в методе УстановитьдополнительнуюСборку не нужен первый параметр.
2. В методе КомпилироватьСборку хотелось бы иметь возможность указать путь к текстовому файлу и автоматически грузануть исходник из него.
3. Нужна поддержка VB.NET, обязательно :)
(9) Получение всякого рода специфики, недоступной из 1С. Например, более простое управление wmi.
The gray Cardinal
11 - 12.02.08 - 10:54
(9) Для 1С - это что-то вроде создания своих внешних микро-компонент на .NET "на лету" со всеми вытекающими. Для скриптовых языков типа VBScript - это возможность существенно расширить функционал мощами .NET.
(10) Имхо как раз "управление wmi" сильно не станет "более простым" :)))
Вобщем-то, какая разница - оборачивать WMI в v7.7 этой штукой или MSScriptControl.ScriptControl. А в восьмёрке с WMI по-моему вообще особых проблем нет. А интересными могут быть куча других вещей - например, юзанье Win32API, да и вообще любых экспортируемых функций любых DLL.
Gepard
14 - 12.02.08 - 11:02
Да те же VK для которых требовались админские права...
а если надо обновить ВК... а так конфигурацию обновил и все...
Jolly Roger
15 - 12.02.08 - 11:13
(10)(11) А не проще сразу сборку на шарпе скомпилить?
Gepard
16 - 12.02.08 - 11:20
(15) в некоторых случаях удобней в виде скрипта... т.е. что б можно было править сразу
но мне лично, наверное все-таки удобней сразу сборку....
(19) Сходу не могу, давно не ковырялся в VB.NET, уже поперезабыл всё на свете. Попытаюсь как-нибудь позже.
А как насчёт (4)? Имхо, нужно просто собрать твоё решение как exe-шник, который параметром хавает текстовый файл. Как передать в такой ситуации "AdditionalAssembly", надо подумать. Может, изобрести синтаксис какой для того же файла с исходником.
P.S. закралась смутная мысль: не изобретаем ли лисапед? :)))
Gepard
21 - 12.02.08 - 11:43
(20) не знаю... делается легко... только смысла не вижу...
(21) Почему не видишь? Можно писать "скрипты", как на VBScript, но только на .NET. Ведь vbs-файл при двойном щелчке в Проводнике вульгарно исполняется с помощью wscript.exe - всё просто и удобно.
(24) ну что б 1С-ники знали еще и шарп... что б не принимали "в штыки" мою систему :)) т.к. у меня все модули будут на шарпе
Gepard
26 - 12.02.08 - 11:57
Хочу еще одну штуку пояснить:
Метод КомпилироватьСборку для одного и того же модуля надо делать один раз.
А вот получить объект - сколько угодно...
Если компилировать одну и ту же сборку для каждого нового объекта можно очень быстро забить память
The gray Cardinal
27 - 12.02.08 - 11:59
(25) Не думаю, что наличие такой компоненты подвигнет кого-то на изучение шарпа :) Чтобы начать изучение шарпа, нужны другие причины. Компонента может прийтись в жилу тем, кто уже знает шарп хоть немного - это да.
А со "штыками" нужно озабачиваться в первую очередь, думая о пользователях. Нужно небольшое готовое решение, которое легко установить и которое стабильно работает - тогда возлюбят. Например, написать удобную микро-БД для хелпдеска - фигачим заявки для IT, конролируем ход их выполнения. Если систему возлюбят IT-шники - это будет большой рывок.
P.S. пошёл оффтоп :))
The gray Cardinal
28 - 12.02.08 - 12:04
(25) Сподобишься на OpenSource - предлагаю свои услуги как разработчика доки ;)
Gepard
29 - 12.02.08 - 12:04
(27) спасибо, я как раз об этом думал... еще сделать БД, куда можно вносить наименование компонентов системы, их описание и взяимосвязь...
Gepard
30 - 12.02.08 - 12:07
(29) т.е. хочешь поменять одну процедуру и сразу видишь, какие модули это затронет
The gray Cardinal
31 - 12.02.08 - 12:10
(21) <скромно так> Сделал бы всё же exe-шничек, который файлы обрабатывает, а? :))
Gepard
32 - 12.02.08 - 12:11
(31) чуть позже напомни пожалуйста, сейчас надо хоть чуть поработать... а то я так свою систему и не закончу :))
Gepard
33 - 12.02.08 - 12:13
(31) формат будет XML, там секция Reference, где будут описываться доп библиотеки и секция Code с кодом
The gray Cardinal
34 - 12.02.08 - 12:25
(32) Почта есть, напомню конечно, даже не сомневайся :))
(33) Великолепная мысль! Кстати, есть формат WSF для Windows Script Host - полная аналогия! В секции "Code" - атрибут, имя языка.
Спасибо огромное! И дикие извинения, что второй день уже как выбил тебя из графика :)
The gray Cardinal
35 - 13.02.08 - 23:43
Метод BuildVB() работает:
Set gl = CreateObject("Gepard.Loader")
gl.SetAdditionalAssemblysCount 1
gl.SetAdditionalAssembly "System.Windows.Forms.dll"
strForBuild = vbCrLF
strForBuild = strForBuild & "Imports System.Windows.Forms" & vbCrLF
strForBuild = strForBuild & "Public class Class1" & vbCrLF
strForBuild = strForBuild & "Public Sub ShowMessage(Message As String)" & vbCrLF
strForBuild = strForBuild & "MessageBox.Show(Message)" & vbCrLF
strForBuild = strForBuild & "End Sub" & vbCrLF
strForBuild = strForBuild & "End Class" & vbCrLF
If gl.BuildVB(strForBuild) Then
Set newObj = gl.GetObject("Class1")
newObj.ShowMessage "Привет, BuildVB!"
Else
WScript.Echo "Ошибка компиляции!"
End If
(36) + просто по предыдущей ветке (с чего все началось) там такой огромный пример был... и ничего подобного не встречалось...
а здесь всего лишь нужно в мой предыдущий пример добавить код из (36) и все...
The gray Cardinal
38 - 14.02.08 - 09:47
(36) Я не понял, ты проект удалил? :))
Просто странно иметь одну dll'лину, а исходник от другой.
(42) Исходник часто нужен именно тем, кто "не разбирается". Именно с целью разобраться. Я, например, "не разбираюсь".
(41) Я так понял, будет решение, которое объединяет существующий функционал с новым? Если так, то "промежуточный" исходник, конечно, не особо нужен.
Gepard
45 - 14.02.08 - 10:09
В общем исходник, может кто правда доделает... осталось там прикрутить Сохрание/загрузку и запуск из командной строки... У меня просто сейчас времени нет, может затянуться...
(45) Я вообще смысла не понял :( А зачем там графический интерфейс и что с ним делать?
The gray Cardinal
47 - 14.02.08 - 11:08
+(46) Ладно, похоже я вообще неверно поставил задачу, и задача эта решается без написания кода .NET. Сейчас попробую сформулировать и решить сам, тогда отпишусь...
Gepard
48 - 14.02.08 - 11:18
(47) там интерфейс для формирования файлов нужного типа, а при работе с командной строки можно и не создавать форму
KLMR
49 - 14.02.08 - 11:30
(47) Чего тут формулировать? нужно консольное приложение, которое будет на входе получать параметр - путь к файлу. Соответственно компилировать его и выполнять скомпилированный код.
Gepard
50 - 14.02.08 - 11:32
(49, 47) ну теперь у вас есть проект, можете курочить :))
KLMR
51 - 14.02.08 - 11:33
(48) Как то не красиво получается сначала задавать количество параметров, потом добавлять их. Почему например не использовать динамический массив? На один метод меньше выполнять всё-таки.
Gepard
52 - 14.02.08 - 11:36
(51) см. (50), а я закончу обучение своего ПО правилам русского языка и доделаю свою версию
После этого создать текстовый файл с расширением .VB, например:
Imports System.Windows.Forms
Public Class WinForm
Inherits System.Windows.Forms.Form
Private b As New Button()
Public Sub New()
MyBase.New()
MyBase.Topmost = True
MyBase.Text = "Кнопка с текущим временем"
b.Dock = DockStyle.Fill
b.Text = Now()
AddHandler b.Click, AddressOf b_Click
MyBase.Controls.Add(b)
MyBase.Show()
End Sub
Public Sub b_Click(ByVal sender As Object, ByVal e As EventArgs)
b.Text = Now()
End Sub
Public Shared Sub Main()
System.Windows.Forms.Application.Run(New WinForm())
End Sub
End Class
Открыть контекстное меню Проводника на vb-файле и наслаждаться :)
KLMR
56 - 14.02.08 - 16:59
(55) Блин, прежде чем просить написать, стоило бы изучить существующие возможности :)
Gepard
57 - 14.02.08 - 17:07
(56) здесь только один недостаток - файл .exe остается
(56)(57) Есть "недостатки". Во-первых, действительно - файл .exe остается, во-вторых - мешаются на экране чёрные окна. Хотя, может быть, всё это действительно не так уж и страшно, или даже хорошо... :)))
Но полюбому, имхо, xml-формат, аналогичный WSF, был бы просто красивым решением. Ещё более красивое решение - расширение реального WSF-формата языками .NET. А заодно и реального WSC-формата. ;)
The gray Cardinal
61 - 14.02.08 - 17:32
(58) Не знай. А зачем их надо в командной строке указывать, если в исходнике всё прописано? У меня то, что в (55), работает без вопросов, вроде.
Gepard
62 - 14.02.08 - 18:34
(61) у меня так не работает (в loader)... видимо тут сам exe файл смотрит что еще нужно подключить
Gepard
63 - 14.02.08 - 19:21
кстати, а по поводу Exe оставшегося нельзя делать так: @="cmd /k \"\"C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727\\vbc.exe\" \"%1\" /out:\"%1.exe\" && \"%1.exe\"&& \"cmd /y del %1.exe\"\"" ?
(60) Хотел ещё спросить мнение о HTA. Что думаешь?
The gray Cardinal
66 - 14.02.08 - 21:45
(63) Наверное, можно. Но, вобщем, это сильно дела не меняет :)
(65) HTA, имхо, не при чём.
The gray Cardinal
67 - 14.02.08 - 22:43
Я так понял, дописывать (45) желания большого нет.
В принципе, не настаиваю, т.к. в (55) уже кое-как решено, хотя дотнетовским exe-шником, конечно, можно было бы сделать в сто раз красивее, см. (60).
Но есть просьба: привести исходник обратно к виду (0) и выложить ;)
Просто, может у кого будет желание развить, когда-нибудь. А то в (45) я вообще не вьехал, да и непонятно как-то, "с середины на половину".
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 500 человек.