1

请问这个JS代码在DWScript中的等价物是什么?我使用 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;

使用 DWScript Codegen 生成的 JS 代码为:

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));
4

1 回答 1

0

我会给你一个例子来帮助你回答你自己的问题

首先,创建一个新类型,类似于:

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;
于 2021-04-30T22:33:40.887 回答