A single developer license allows 1 developer to use the components for development, obtain free updates & support for a full version cycle of the product. The license is not transferable.
A single developer license allows 1 developer to use the components for development, obtain free updates & support for 1 year. The license is not transferable.
A single developer license allows 1 developer to use the components for development, obtain free updates & support for 2 years. The license is not transferable.
A small team license allows 2 developers within the company to use the components for development, obtain free updates & support for a full version cycle of the product. The license is not transferable.
A small team license allows 2 developers within the company to use the components for development, obtain free updates & support for 1 year. The license is not transferable.
A small team license allows 2 developers within the company to use the components for development, obtain free updates & support for 2 years. The license is not transferable.
A site license allows an unlimited number of developers within the company to use the components for development, obtain free updates & support for a full version cycle of the product. Developers can be added at any time during the full version cycle.
A site license allows an unlimited number of developers within the company to use the components for development, obtain free updates & support for 1 year. Developers can be added at any time during the 1 year period.
A site license allows an unlimited number of developers within the company to use the components for development, obtain free updates & support for 2 years. Developers can be added at any time during the 2 year period.
BIZ
TMS Scripter
Add the ultimate flexibility and power into your applications with native Pascal or Basic scripting and full IDE (Integrated Development Environment) with visual form designer, object inspector, and more.
Using records defined by DefineRecordByRTTI from Delphi code
Scripter has a method named DefineRecordByRTTI which you can use from Delphi 2010 and up to define a record wrapper. It makes it easier to manipulate records, compared to the previous way which doesn’t use enhanced RTTI.
When using that method, all records in scripter are represented by the TGenericRecordWrapper class. Thus when received those “records” in a Delphi method via parameter, you need to cast the object to that class and then retrieve the record pointer. Suppose your record type being wrapped is TMyRecord. You’ll need to declare a pointer to it named PMyRecord.
type
PMyRecord = ^TMyRecord;
procedure TatTestLibrary.__ReadRecord(AMachine: TatVirtualMachine);
var
MyRecord: PMyRecord;
Wrapper: TGenericRecordWrapper;
begin
//Get the record from the script
Wrapper := VarToObject(AMachine.GetInputArg(0)) as TGenericRecordWrapper;
MyRecord := PMyRecord(Wrapper.Rec);
// From now on you can use MyRecord to access the record.
end;
Saving/Loading compile code for scripter projects
When using standard Scripter component with a single script, you just need to call SaveCodeToFile and LoadCodeFromFile methods of scripter component to handle compiled code.
When it comes to multi-script project using the Scripter Studio Pro engine, you must write extra code and save compiled code of all units (scripts). It's the same for loading: you must load compile code of all units.
This is a pseudo-code example for saving compiled code:
for c := 0 to IDEEngine1.Files.Count - 1 do
begin
if not IDEEngine1.Files[i].Script.Compiled then
IDEEngine1.Files[i].Script.Compile;
AUnitName := IDEEngine1.Files[i].Script.ScriptInfo.UnitName;
IDEEngine1.Files[o].Script.SaveCodeToFile(ABasePath + AUnitName + '.code');
end;
To load the code, you just do the reverse. Pay attention to add directories to the search path where the compiled code is located, because scripter tries to load the compiled code for used units on the fly (if you load Unit1 and it uses Unit2, it tries to load Unit2 code by searching files in search path). Example:
with IDEScripter1 do
begin
{By setting the LibOptions properties below, you just need to load the script code for the main unit}
LibOptions.UseScriptFiles := true;
LibOptions.SearchPath.Add(SomeSearchPath);
LibOptions.CompiledFileExt := '.code';
Scripts.Clear;
{Load main unit only - the other units will be loaded on the fly based on the LibOptions settings}
AddScript(slPascal).LoadCodeFromFile(ABasePath + MyMainUnitName + '.code');
Execute;
end;
Ask questions to our engineers related to purchased product via Support Center
Free 1 year updates and new releases
After 1 year, a discount renewal is offered for a 1 year extension. * * offer valid for 30 days after end of license. Discount price is subject to change.