我想使用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;
答案 0 :(得分:0)
默认情况下,脚本引擎会将所有内容保留为沙盒,并且不会提供任何可以在沙箱外部进行访问的内容。因此,如果您想要访问任意文件到脚本,您需要公开函数&实现它的类(通过TdwsUnit f.i。)。
它也不会编译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);