我正在尝试使用Delphi XE对象从OLE调用MATLAB函数。该函数有两个字符串参数。当我在MATLAB(2008a)中尝试MATLAB代码时,一切正常,但由于某种原因,我无法从Delphi XE获取MATLAB的输入参数。我如何实现这一目标?
正如您在我的代码中所看到的,我也尝试在工作区中设置变量,这对我来说是一种可接受的解决方法。
function Matlab_DoIt(const aInput, aOutput: string): string;
var
vMatlab, vInput: Variant;
begin
vInput := aInput;
vMatlab := CreateOleObject('matlab.application');
vMatlab.visible := 1;
vMatlab.Execute('cd c:\localdata\LSCT\Matlab');
// vMatlab.Execute('input=' + aInput); // nothing happens
// vMatlab.PutCharArray('input', 'base', aInput); // nothing happens
// vMatlab.PutCharArray('input', 'base', vInput); // bad variable type error
// vMatlab.PutCharArray('input', 'global', aInput); // nothing happens
// vMatlab.PutWorkspaceData('input', 'base', aInput); // nothing happens
// vMatlab.PutWorkspaceData('input', 'base', vInput); // bad variable type error
// vMatlab.PutWorkspaceData('input', 'global', aInput); // nothing happens
// vMatlab.Execute(Format('LSCT_tool_run(%s,%s)', [aInput, aOutput])); // nothing happens
// vMatlab.Execute(Format('LSCT_tool_run(''%s'',''%s'')', [aInput, aOutput])); // nothing happens
// vMatlab.Execute(Format('LSCT_tool_run("%s","%s")', [aInput, aOutput])); // nothing happens
vMatlab.Execute('LSCT_tool_run'); // creates the file, but it is empty
end;
MATLAB代码写入包含两个参数的txt文件:
function LSCT_tool_run(input_path, output_path)
diary ([c:\localdata\LSCT\Matlab\MyFile.txt]);
diary on;
% fprintf(input); Only when I try to set the input variable.
fprintf(inpput_path);
fprintf(output_path);
diary off;
答案 0 :(得分:0)
在咨询Mathworks之后,事实证明这是不可能的。 在这方面,2012版本将再次可用。