使用OLE从Delphi XE使用字符串参数调用MATLAB函数

时间:2012-07-09 09:19:55

标签: delphi matlab delphi-xe ole

我正在尝试使用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;

1 个答案:

答案 0 :(得分:0)

在咨询Mathworks之后,事实证明这是不可能的。 在这方面,2012版本将再次可用。