从Enterprise Architect脚本保存文件
我正在创建一个脚本,它显示一个对话框,我可以选择保存文件的路径。以下几乎得到它,但这是打开一个文件,而不是保存它。从Enterprise Architect脚本保存文件
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;
}
GetFileNameDialog
是V13中的新功能。尝试OpenOrSave
参数的不同参数(文档也可能有缺陷)。 Sparx总是运送香蕉软件!如果它也不起作用,请发送错误报告。
或者(首选!)使用@Hue指出的操作。
要获取文件路径,使用EAScriptLib脚本组中提供的Jscript-Dialog
脚本,它会阻止你重写整个代码用于获取对话框。
(引用另一个脚本,使用!INC
,在这种情况下,把!INC EAScriptLib.JScript-Dialog
到脚本的顶部)
呼叫,并提供:
- 过滤字符串,在你的情况下,它
CSV Files (*.csv)|*.csv|All Files (*.*)|*.*||
- 您要使用的过滤器(在前一点)的索引,您已经提供
它将返回文件的路径。
您可以使用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
他专注于要求文件名的电话! –
@ThomasKilian eh没有太注意他的代码,以为他试图保存文件,没有得到实际的路径...将编辑我的答案 – Mart10
从来没有实际使用过GetFileNameDialog,我没做过的好事,如果它的破损 – Mart10
感谢thomas和Hue,我只是使用了OpenOrSave = 1; – byandreee
由于我不会,请发送错误报告,以便更新文档。谢谢。 –