0

我想使用 dwscript 编写/读取一个简单的文本文件。我的代码在下面……但我无法运行它,请有人帮忙……:(我正在使用 DWS 安装的 Demos 文件夹中的 Simple.exe)

// uses Classes;
{$INCLUDE_ONCE 'c:/.../System.Classes.pas'}

var
    s: TFileStream;
    o: string; // out
    i: integer;
    f: word; // flag

f := fmOpenReadWrite;
if not FileExists('C:\Temp\Junkfile.txt') then
    f := f or fmCreate;

s := TFileStream.Create('C:\Temp\Junkfile.txt', f);
try
    s.Position := s.Size;  // will be 0 if file created, end of text if not
    for i := 1 to 10 do begin
        o := Format('This is test line %d'#13#10, [i]);
        s.Write(o[1], Length(o) * SizeOf(Char));
    end;
finally
    s.Free;
end;
4

1 回答 1

0

默认情况下,脚本引擎将所有内容都保存在沙盒中,并且不会暴露任何在沙盒之外提供访问权限的内容。因此,如果您想向脚本授予对任意文件的访问权限,您需要公开函数和类来实现它(通过 TdwsUnit fi)。

此外,它不会编译 Delphi 类单元,DWScript 并不是要替代 Delphi 编译器,而是提供脚本支持,即。允许最终用户以一种您可以完全控制他们可以做什么的方式运行代码,并且不会使主机应用程序崩溃或损坏(最后一点是与其他著名的 Pascal 脚本引擎的关键区别)。

您可以使用 dwsFileFunctions 获得基本的文件 I/O 支持,在这种情况下,相当于代码的文件创建部分将类似于

var f := FileCreate('C:\Temp\Junkfile.txt');

for var i := 1 to 10 do
   FileWrite(f, Format('This is test line %d'#13#10, [i]));

FileClose(f);
于 2014-04-23T07:15:23.027 回答