问题描述
请问DWScript中此JS代码的等效内容是什么? 我使用DWScript代码生成器。
// JavaScript:
DoIt({name:"Fred",size:{width:3,height:2}});
我尝试了匿名记录,但似乎不起作用:
var obj: variant;
obj := record
Name = 'Fred';
Size: variant = record
Width = 3;
Height = 2;
end;
end;
var obj = undefined,/// anonymous TRecordSymbol
function copy$a$460(s,d) {
return d;
}
function Clone$a$460($) {
return {
}
}
function Pub$a$460($) {
return {
"Name":$.Name$8,"Size":$.Size$5
}
}
/// anonymous TRecordSymbol
function copy$a$461(s,d) {
return d;
}
function Clone$a$461($) {
return {
}
}
function Pub$a$461($) {
return {
"Width":$.Width$4,"Height":$.Height$2
}
}
obj = {Name$8:"Fred",Size$5:3};
alert(JSON.stringify(obj));
解决方法
我会给你一个例子来帮助你回答你自己的问题
首先,创建一个新类型,类似于:
type
TDimensions = record
published
Width: integer;
Height: integer;
end;
接下来,您需要以某种方式使用它。想象一下,您单击一个按钮,从几个输入字段中收集了一堆数据,您对输入进行了清理并发送了它。作为开始使用类似的东西:
procedure TForm1.ButtonClickHandler(Sender: TObject);
var
dimensions: TDimensions;
payload: Variant;
serialized: String;
begin
dimensions.width := StrToInt(self.W3EditBox2.Text);
dimensions.height := StrToInt(self.W3EditBox3.Text);
payload := TVariant.CreateObject;
payload.name := self.W3EditBox1.Text;
payload.size := dimensions;
asm
@serialized = JSON.stringify(@payload);
end;
writeln(serialized);
end;