Модератор: BV
А для чего это было нужно, если не секрет? Может хватило бы возможностей ScriptControl'а? А в качестве IDE - Notepad++ Дешево и сердитоДля одного из своих проектов мне пришлось делать байткодную виртуальную машину, собственный VB-подобный ВУЯП, компилитор этого языка в байткод, IDE для этого языка.
Дешево и сердито
Ну, насчет Notepad++ согласен, но SC достаточно солиден. Под ним IE скрипты гоняет. Не через ocx конечно, но юзает те же интерфейсы, что и ocx.Но несолидно.
Dim File1 As IXTRStorageFile
Dim File2 As IXTRStorageFile
Dim LSRegion As IXTRStorageDataChunk
Dim LSSection As IXTProjSection
Set File1 = New CFile("Local@XenTester:\file1.dat", xcAccessFull)
Set File2 = New CFile("Local@XenTester:\file2.dat", xcAccessFull)
Set LSRegion = _
File1.FileMgr.GetStorageRegion(File1.RData.RVA, _
File1.RData.RVA + File1.RData.ChunkSize - 1)
Set LSSection = XTRuntime.Internal.XTProject.GetSection(XTSECTIONID_LOCALSTORAGE)
XTRuntime.Internal.XTRDebug_XCodeLockSection(LSSection, XTLOCK_DEFAULT And Not XTLOCK_IO)
With LSSection
.EnterIOTransaction()
LSRegion.IncreaseLinkCounter()
.FreePool(File2.FileMgr.GetStoragePool())
LSRegion.LockBoundary()
File2.FileMgr.SetStoragePool(LSRegion.RVA, LSRegion.Size)
LSRegion.UnlockBoundary()
.CommitIOTransaction()
End With
Set File1 = Nothing ' Закрываем один из файлов прежде чем заблокировать секцию
' т.к. не две региона не могут быть промапплены на одну и ту
' же память.
XTRuntime.Internal.XTRDebug_XCodeLockSection(LSSection, XTLOCK_DEFAULT)
'от балды
Const xcAccessFull = 1
Const XTSECTIONID_LOCALSTORAGE = 2
Const XTLOCK_DEFAULT = 3
Const XTLOCK_IO = 4
Dim File1
Dim File2
Dim LSRegion
Dim LSSection
'Допустим XTRuntime - объект ide, переданный скрипту
Set File1 = XTRuntime.NewCFile("Local@XenTester:\file1.dat", xcAccessFull)
Set File2 = XTRuntime.NewCFile("Local@XenTester:\file2.dat", xcAccessFull)
Set LSRegion = _
File1.FileMgr.GetStorageRegion(File1.RData.RVA, _
File1.RData.RVA + File1.RData.ChunkSize - 1)
Set LSSection = XTRuntime.Internal.XTProject.GetSection(XTSECTIONID_LOCALSTORAGE)
Call XTRuntime.Internal.XTRDebug_XCodeLockSection(LSSection, XTLOCK_DEFAULT And Not XTLOCK_IO)
With LSSection
.EnterIOTransaction
LSRegion.IncreaseLinkCounter
.FreePool (File2.FileMgr.GetStoragePool())
LSRegion.LockBoundary
Call File2.FileMgr.SetStoragePool(LSRegion.RVA, LSRegion.Size)
LSRegion.UnlockBoundary
.CommitIOTransaction
End With
Set File1 = Nothing
Call XTRuntime.Internal.XTRDebug_XCodeLockSection(LSSection, XTLOCK_DEFAULT)
Сейчас этот форум просматривают: SemrushBot и гости: 21