从 Enterprise Architect 脚本保存文件

Save a file from Enterprise Architect Script

我正在尝试创建一个显示对话框的脚本,我可以在其中 select 保存文件的路径。下面差不多搞定了,不过这个是打开文件,不是保存。

var filePath = OpenCSVFileDialog();
var fileName = GetFilenameFromPath(filePath);    


function OpenCSVFileDialog()
{
    var Project;
    var Filename, FilterString, Filterindex, Flags, InitialDirectory, OpenorSave, filepath;

    Filename = "";
    FilterString = "CSV Files (*.csv)|*.csv|All Files (*.*)|*.*||";
    Filterindex = 1;
    Flags = 0;
    InitialDirectory = "";
    OpenorSave = 0;

    Project = Repository.GetProjectInterface();
    filepath = Project.GetFileNameDialog(Filename, FilterString, Filterindex, 
                                         Flags, InitialDirectory, OpenorSave);

    return filepath;
}

function GetFilenameFromPath(filePath)
{
    var bsindex, fileName;

    // find the last backspace in the file path
    bsindex = filePath.lastIndexOf("\");

    if (bsindex > 0)
    {
        // get the name of the file only - minus the directory path
            fileName = filePath.substring(bsindex+1, filePath.length);
    }
    else
    {
        fileName = filePath;
    }

    return fileName;
}

要获取文件路径,请使用 EAScriptLib 脚本组中的 Jscript-Dialog 脚本,它将防止您重写获取对话框的整个代码。

(要引用另一个脚本,请使用 !INC,在这种情况下,将 !INC EAScriptLib.JScript-Dialog 放在脚本的顶部)

致电DLGSaveFile(filterString,filterIndex)并提供:

  • 过滤器字符串,在您的例子中是 CSV Files (*.csv)|*.csv|All Files (*.*)|*.*||
  • 您想使用的过滤器索引(在上一点),您已经提供了

它将return文件的路径。

你可以用Project.GetFileNameDialog,是一样的,只是参数多了also, here's a link

如果您使用 CSV 库创建 CSV 文件,那么一旦您调用 CSVEExportFinalize() 函数,您的文件就会被导出。你一定是先打电话给 CSVEExportInitialize(filepath,columns,exportcolumsHeadings)

对于任何文件,都可以用 JScript 和 VBScript 完成,但不能 javascript

JScript

var fso = new ActiveXObject("Scripting.FileSystemObject");
var a = fso.CreateTextFile("c:\testfile.txt", true);
a.WriteLine("This is a test.");
a.Close();

VB

Dim fso, MyFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile("c:\testfile.txt", True)
MyFile.WriteLine("This is a test.")
MyFile.Close

Microsoft Reference

GetFileNameDialog是V13的新功能。为 OpenOrSave 参数尝试不同的参数(文档也可能有缺陷)。 Sparx 总是发布香蕉软件!如果它也不起作用,请发送错误报告。

或者(首选!)使用@Hue 指出的操作。