Delphi ActiveX
Delphi ActiveX
JavaScript console using Callbacks
See more JavaScript Examples
Demonstrates console output using Chilkat JavaScript with callbacks.Chilkat Delphi ActiveX Downloads
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;
...
procedure TForm1.jsProgressInfo(ASender: TObject; const name: WideString; const value: WideString);
begin
// TThread.Synchronize provides safety for callbacks that occur in a background thread..
TThread.Synchronize(nil, procedure begin
Memo1.Lines.Add(name + ': ' + value);
end);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
sbScript: TChilkatStringBuilder;
js: TChilkatJs;
result: TChilkatJsonObject;
begin
success := 0;
// This example demonstrates using the built-in console object.
// The Javascript run in this example is shown below.
// Load the JavaScript from a file.
sbScript := TChilkatStringBuilder.Create(Self);
success := sbScript.LoadFile('qa_data/js_tests/test_console.js','utf-8');
if (success = 0) then
begin
Memo1.Lines.Add(sbScript.LastErrorText);
Exit;
end;
js := TChilkatJs.Create(Self);
js.OnProgressInfo := jsProgressInfo;
result := TChilkatJsonObject.Create(Self);
// Run the JavaScript
// Results (not console output) go to result.
// Note: Eval returns the completion value of the script. This is generally the value of the last evaluated expression.
// In this case, the last evaluated expression is console.log which does not calculate a value. Therefore, it returns undefined.
success := js.Eval(sbScript.ControlInterface,result.ControlInterface);
if (success = 0) then
begin
Memo1.Lines.Add(sbScript.LastErrorText);
Exit;
end;
// We can look at the result, which is "undefined", which is normal and expected.
Memo1.Lines.Add(result.Emit());
// The result JSON is: {"type":"undefined","value":"undefined"}
// The console output is received using ProgressInfo callbacks.
// The output is:
// log: Hello World, 248, 12.05
//
// error: foo:bar baz
//
// warn: 1 2 3
//
// log: %% %s
//
// log: myApp: {
// "appName": "Example",
// "version": 1,
// "isDebug": true,
// "supportedTypes": [
// "string",
// "number",
// "object"
// ],
// "settings": {
// "maxWidgets": 1024,
// "allowIO": true
// }
// }
//
// log: App: myApp (Version 1)
//
// {"type":"undefined","value":"undefined"}
end;